forked from joejulian/gio
fca780972a
And move the issues section above the heavy contribution section while we're here. Signed-off-by: Elias Naur <mail@eliasnaur.com>
135 lines
5.1 KiB
Markdown
135 lines
5.1 KiB
Markdown
# Gio
|
|
|
|
Gio implements portable immediate mode GUI programs in Go. Gio programs run on all the major platforms:
|
|
iOS/tvOS, Android, Linux (Wayland), macOS and Windows.
|
|
|
|
Gio includes an efficient vector renderer based on the Pathfinder project (https://github.com/pcwalton/pathfinder).
|
|
Text and other shapes are rendered using only their outlines without baking them into texture images,
|
|
to support efficient animations, transformed drawing and pixel resolution independence.
|
|
|
|
[](https://godoc.org/gioui.org/ui)
|
|
|
|
## Quickstart
|
|
|
|
Gio is designed to work with very few dependencies. It depends only on the platform libraries for
|
|
window management, input and GPU drawing.
|
|
|
|
For Linux you need Wayland and the wayland, xkbcommon, GLES, EGL development packages. On Fedora 28 and newer,
|
|
install the dependencies with the command
|
|
|
|
$ sudo dnf install wayland-devel libxkbcommon-devel mesa-libGLES-devel mesa-libEGL-devel
|
|
|
|
On Ubuntu 18.04 and newer, use
|
|
|
|
$ sudo apt install libwayland-dev libxkbcommon-dev libgles2-mesa-dev libegl1-mesa-dev
|
|
|
|
Xcode is required for macOS, iOS, tvOS.
|
|
|
|
For Windows you need the ANGLE drivers for emulating OpenGL ES. You can build ANGLE yourself or use
|
|
[a prebuilt version](https://drive.google.com/file/d/1k2950mHNtR2iwhweHS1rJ7reChTa3rki/view?usp=sharing).
|
|
|
|
With Go 1.12 or newer,
|
|
|
|
$ export GO111MODULE=on
|
|
$ go run gioui.org/apps/hello
|
|
|
|
should display a simple message in a window.
|
|
|
|
The command
|
|
|
|
$ go run gioui.org/apps/gophers
|
|
|
|
runs a simple (nonsense) demo that displays Go contributors fetched from GitHub.
|
|
|
|
If you run into quota issues, supply a
|
|
[Github token](https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line)
|
|
with the `-token` flag:
|
|
|
|
$ go run gioui.org/apps/gophers -token <github token>
|
|
|
|
## Android
|
|
|
|
For Android you need the Android SDK with the NDK installed. Point the ANDROID_HOME to the SDK root
|
|
directory.
|
|
|
|
To build a Gio program as an .aar package, use the gio tool. For example,
|
|
|
|
$ export ANDROID_HOME=...
|
|
$ go run gioui.org/cmd/gio -target android gioui.org/apps/gophers
|
|
|
|
produces gophers.aar, ready to use in an Android project. To run
|
|
the demo on an Android device:
|
|
|
|
$ git clone https://git.sr.ht/~eliasnaur/gio
|
|
$ cd gio/apps/gophers/android
|
|
$ go run gioui.org/cmd/gio -target android ..
|
|
$ ./gradlew installDebug # gradlew.bat on Windows
|
|
|
|
The gio tool passes command line arguments to os.Args at runtime:
|
|
|
|
$ go run gioui.org/cmd/gio -target android .. -token <github token>
|
|
|
|
## iOS/tvOS
|
|
|
|
To build a Gio program for iOS or tvOS you need a macOS machine with Xcode installed.
|
|
|
|
The gio tool can produce a framework ready to include in an Xcode project. For example,
|
|
|
|
$ go run gioui.org/cmd/gio -target ios gioui.org/apps/gophers
|
|
|
|
outputs Gophers.framework with the demo program built for iOS. For tvOS, use `-target tvos`:
|
|
|
|
$ go run gioui.org/cmd/gio -target tvos gioui.org/apps/gophers
|
|
|
|
Building for tvOS requires (the not yet released) Go 1.13.
|
|
|
|
To run the demo on an iOS device, use the sample Xcode project:
|
|
|
|
$ git clone https://git.sr.ht/~eliasnaur/gio
|
|
$ cd gio/apps
|
|
$ go run gioui.org/cmd/gio -target ios -o gophers/ios/gophers/Gophers.framework ./gophers
|
|
$ open gophers/ios/gophers.xcodeproj/
|
|
|
|
You need to provide a valid bundle identifier and set up code signing in Xcode to run the demo
|
|
on a device. If you're using Go 1.12 or older, you also need to disable bitcode.
|
|
|
|
## Issues
|
|
|
|
File bugs and TODOs in the [issue tracker](https://todo.sr.ht/~eliasnaur/gio) or send them to
|
|
[the mailing list](mailto:~eliasnaur/gio-dev@lists.sr.ht).
|
|
|
|
## License
|
|
|
|
Dual-licensed under MIT or the [UNLICENSE](http://unlicense.org).
|
|
|
|
## Contributing
|
|
|
|
Discussion and patches: [~eliasnaur/gio-dev@lists.sr.ht](mailto:~eliasnaur/gio-dev@lists.sr.ht).
|
|
|
|
Commit messages follow [the Go project style](https://golang.org/doc/contribute.html#commit_messages):
|
|
the first line is prefixed with the package and a short summary. The rest of the message provides context
|
|
for the change and what it does. See
|
|
[an example](https://git.sr.ht/~eliasnaur/gio/commit/abb9d291e954f3b80384046d7d4487e1ead6bd6a).
|
|
Add `Fixes ~eliasnaur/gio#nnn` or `Updates ~eliasnaur/gio#nnn` if the change fixes or updates an existing
|
|
issue.
|
|
|
|
The `git send-email` command is a convenient way to send patches to the mailing list; see
|
|
[instructions](https://man.sr.ht/git.sr.ht/send-email.md) for setting up git to use your email service.
|
|
|
|
With `git send-email` configured, you can clone the project and set it up for submitting your changes:
|
|
|
|
$ git clone https://git.sr.ht/~eliasnaur/gio
|
|
$ cd gio
|
|
$ git config sendemail.to '~eliasnaur/gio-dev@lists.sr.ht'
|
|
$ git config sendemail.annotate yes
|
|
|
|
Contributors must agree to the [developer certificate of origin](https://developercertificate.org/),
|
|
to ensure their work is compatible with the MIT and the UNLICENSE. Sign your commits with Signed-off-by
|
|
statements to show your agreement. The `git commit --signoff` command signs a commit with the name and email
|
|
from your `user.name` and `user.email` settings.
|
|
|
|
Whenever you want to submit your work for review, use `git send-email` with the base revision of your
|
|
changes. For example, to submit the most recent commit use
|
|
|
|
$ git send-email HEAD^
|