A special Fyne build for Rhenium
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Andy Williams 2c1d0bd8a0
Fix date for release
4 months ago
.github Make the example code field mandatory 8 months ago
app Fix issue with mobile simulation when systray used 5 months ago
canvas canvas: move Refresh() into canvas.go 10 months ago
cmd Merge pull request #3219 from Bluebugs/features/detect-available-minAPI 5 months ago
container Fix #3050, update onTapped hooker for tabButton 10 months ago
data Check empty format returns base string 10 months ago
dialog Fix building for web on a darwin computer (#3107) 9 months ago
driver Support creating a transparent software canvas 1 year ago
img Add some mobile docs and image 2 years ago
internal Use nativeScale to calculate touch location on IOS 8 months ago
layout Fix most of the trivial deprecations 1 year ago
storage Remove duplicate wordings 1 year ago
test Merge pull request #2813 from andydotxyz/feature/metadataapi 1 year ago
theme FYNE_FONT recression 10 months ago
tools/playground We must use v2 in all imports now 2 years ago
vendor Latest systray library fixes :) 9 months ago
widget Fix the last little test 9 months ago
.gitignore ignore fyne-cross output 2 years ago
.godocdown.import Add doc metadata 2 years ago
AUTHORS Welcome Changkun 1 year ago
CHANGELOG.md Fix date for release 4 months ago
CODE_OF_CONDUCT.md Added full version of the code of conduct 4 years ago
CONTRIBUTING.md Fixing links 1 year ago
LICENSE Clarify license type, should make GitHub happy 3 years ago
README.md Fix README for go 1.18 removal 5 months ago
animation.go Tidying up since lines to follow documented naming 2 years ago
animation_test.go Add missing tests 2 years ago
app.go Merge pull request #2813 from andydotxyz/feature/metadataapi 1 year ago
app_test.go oops, missed the test data in commit 1 year ago
canvas.go Tidying up since lines to follow documented naming 2 years ago
canvasobject.go sort methods in canvasobject.go 1 year ago
clipboard.go Add paste support to entry widget (#89) 4 years ago
container.go Merge branch 'develop' into removeall 10 months ago
container_test.go Merge branch 'develop' into removeall 10 months ago
device.go Rename IsWeb to IsBrowser. 1 year ago
driver.go Add baseline to font measurement (#2320) 2 years ago
event.go Make the hardware info more open to expansion 2 years ago
fyne.go set import in alphabetic order 2 years ago
geometry.go remove “And” from geometry Add/Subtract helper names 1 year ago
geometry_benchmark_test.go Fix format an order of utility function 11 months ago
geometry_test.go remove “And” from geometry Add/Subtract helper names 1 year ago
go.mod Latest systray library fixes :) 9 months ago
go.sum Latest systray library fixes :) 9 months ago
key.go move modifier key rune constants into widget package 1 year ago
key_darwin.go move modifier key rune constants into widget package 1 year ago
key_other.go move modifier key rune constants into widget package 1 year ago
layout.go Minor godoc tweaks 4 years ago
log.go Improve error handling (#152) 4 years ago
log_test.go Improve error handling (#152) 4 years ago
math.go Move to float32 coordinates (#1661) 2 years ago
math_test.go Move to float32 coordinates (#1661) 2 years ago
menu.go Merge branch 'develop' into feature/menurefresh 10 months ago
menu_test.go Just a few tests (canvas/circle & fyne.Menu) (#275) 4 years ago
notification.go Add initial notifications support 3 years ago
overlay_stack.go rename OverlayStack.All to List 3 years ago
preferences.go Allow code to hook into preference changes 2 years ago
resource.go Fix cache doc for resource 12 months ago
resource_test.go Remove the now not needed Resource.CachePath 4 years ago
serialise.go Remove the now not needed Resource.CachePath 4 years ago
serialise_test.go Remove the now not needed Resource.CachePath 4 years ago
settings.go Tidying up since lines to follow documented naming 2 years ago
shortcut.go built-in shortcuts implement KeyboardShortcut 1 year ago
shortcut_test.go fyne: use sync.Map for shortcut entries 1 year ago
staticcheck.conf Move code checks to Github Actions and enable staticcheck (#1308) 3 years ago
storage.go Add missing docs 2 years ago
text.go [internal/painter] deliver symbol font for new Symbol style 1 year ago
theme.go Tidying up since lines to follow documented naming 2 years ago
uri.go Tidying up since lines to follow documented naming 2 years ago
validation.go Add new Since: docs to the APIs added in 1.4 2 years ago
widget.go Remove BackgroundColor 2 years ago
window.go only quit applications when no windows remain if theres no systrayMen… (#3094) 9 months ago

README.md

Go API Reference Latest Release Join us on Slack
Code Status Build Status Coverage Status

About

Fyne is an easy-to-use UI toolkit and app API written in Go. It is designed to build applications that run on desktop and mobile devices with a single codebase.

Version 2.2 is the current release of the Fyne API, it added system tray support, App.Metadata as well as richer menus and support for building WASM apps. We are now working towards the next big release, codenamed cragganmore and more news will follow in our news feeds and GitHub project.

Prerequisites

To develop apps using Fyne you will need Go version 1.14 or later, a C compiler and your system's development tools. If you're not sure if that's all installed or you don't know how then check out our Getting Started document.

Using the standard go tools you can install Fyne's core library using:

$ go get fyne.io/fyne/v2

Widget demo

To run a showcase of the features of Fyne execute the following:

$ go install fyne.io/fyne/v2/cmd/fyne_demo@latest
$ fyne_demo

(For Go versions earlier than v1.16 use go get fyne.io/fyne/v2/cmd/fyne_demo)

And you should see something like this (after you click a few buttons):

Fyne Demo Dark Theme

Or if you are using the light theme:

Fyne Demo Light Theme

And even running on a mobile device:

Fyne Demo Mobile Light Theme

Getting Started

Fyne is designed to be really easy to code with. If you have followed the prerequisite steps above then all you need is a Go IDE (or a text editor).

Open a new file and you're ready to write your first app!

package main

import (
	"fyne.io/fyne/v2/app"
	"fyne.io/fyne/v2/container"
	"fyne.io/fyne/v2/widget"
)

func main() {
	a := app.New()
	w := a.NewWindow("Hello")

	hello := widget.NewLabel("Hello Fyne!")
	w.SetContent(container.NewVBox(
		hello,
		widget.NewButton("Hi!", func() {
			hello.SetText("Welcome :)")
		}),
	))

	w.ShowAndRun()
}

And you can run that simply as:

$ go run main.go

It should look like this:

Fyne Hello Dark Theme Fyne Hello Dark Theme

Note that Windows applications load from a command prompt by default, which means if you click an icon you may see a command window. To fix this add the parameters -ldflags -H=windowsgui to your run or build commands.

Run in mobile simulation

There is a helpful mobile simulation mode that gives a hint of how your app would work on a mobile device:

$ go run -tags mobile main.go

Another option is to use fyne command, see Packaging for mobile.

Installing

Using go install will copy the executable into your go bin dir. To install the application with icons etc into your operating system's standard application location you can use the fyne utility and the "install" subcommand.

$ go install fyne.io/fyne/v2/cmd/fyne@latest
$ fyne install

(for Go versions before v1.16 use go get fyne.io/fyne/v2/cmd/fyne)

Packaging for mobile

To run on a mobile device it is necessary to package up the application. To do this we can use the fyne utility "package" subcommand. You will need to add appropriate parameters as prompted, but the basic command is shown below. Once packaged you can install using the platform development tools or the fyne "install" subcommand.

$ fyne package -os android -appID my.domain.appname
$ fyne install -os android

The built Android application can run either in a real device or an Android emulator. However, building for iOS is slightly different. If the "-os" argument is "ios", it is build only for a real iOS device. Specify "-os" to "iossimulator" allows the application be able to run in an iOS simulator:

$ fyne package -os ios -appID my.domain.appname
$ fyne package -os iossimulator -appID my.domain.appname

Preparing a release

Using the fyne utility "release" subcommand you can package up your app for release to app stores and market places. Make sure you have the standard build tools installed and have followed the platform documentation for setting up accounts and signing. Then you can execute something like the following, notice the -os ios parameter allows building an iOS app from macOS computer. Other combinations work as well :)

$ fyne release -os ios -certificate "Apple Distribution" -profile "My App Distribution" -appID "com.example.myapp"

The above command will create a '.ipa' file that can then be uploaded to the iOS App Store.

Documentation

More documentation is available at the Fyne developer website or on pkg.go.dev.

Examples

You can find many example applications in the examples repository. Alternatively a list of applications using fyne can be found at our website.

Shipping the Fyne Toolkit

All Fyne apps will work without pre-installed libraries, this is one reason the apps are so portable. However, if looking to support Fyne in a bigger way on your operating system then you can install some utilities that help to make a more complete experience.

Additional apps

It is recommended that you install the following additional apps:

app go install description
fyne_settings fyne.io/fyne/v2/cmd/fyne_settings A GUI for managing your global Fyne settings like theme and scaling
apps github.com/fyne-io/apps A graphical installer for the Fyne apps listed at https://apps.fyne.io

These are optional applications but can help to create a more complete desktop experience.

FyneDesk (Linux / BSD)

To go all the way with Fyne on your desktop / laptop computer you could install FyneDesk as well :)