Open-source project
fyne-io/examples avatar
fyne-io/examples

Fyne Examples doubles as a reference app for the Fyne toolkit

Examples apps using the Fyne toolkit

640 stars93 forksGoNOASSERTION

At a glance

What is it?
The fyne-io/examples repository collects small Go applications built with the Fyne toolkit, split between widget based apps and canvas drawn ones, and serves as a runnable index of what the toolkit can do. Several examples have been split out into their own repositories, and the project pins an older Fyne release.
Who is it for?
Treat this repository as a reference and a test bed rather than a product dependency. It suits a developer learning the Fyne API who wants two working styles side by side, and a team deciding whether the toolkit fits their desktop app.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 108 days ago.
What is it written in?
Mainly Go, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

One index app links to every example in the collection

The repository is organised as a set of small Go applications that live in sibling directories, and the entry point is a single program that links to all of them. Starting it takes one command in the repository root:

bash
go run .

That framing explains both the value and the limit of the project. Each example is small enough to read in one sitting, and the top level files main.go and data.go hold the shared navigation that connects them, so a developer can run one program and jump into each sample instead of copying code blind. The repository layout mirrors that structure, with bugs/, clock/, fractal/, tictactoe/ and xkcd/ each as its own directory, alongside an img/ folder holding the screenshots used in the documentation. What you get is a catalogue of working implementations of the same toolkit, not a shared library, and nothing here is meant to be imported by another project.

Widget examples and canvas examples solve different problems

The collection splits into two groups, and the distinction is the most useful thing the repository teaches. The widget based examples use mostly built in widgets, which the documentation describes as making applications trivial to build. Bugs, a Minesweeper style game where you hunt squares to reveal everything apart from the bugs, and XKCD, a comic browser with random and lookup features, sit in that group. The graphics based examples instead use the Fyne canvas API to draw primitive shapes, text and images to build custom interfaces: the Clock is a simple analog clock that matches the current theme, and Fractal is a viewer that can be panned and zoomed. Picking the wrong group is the classic mistake for newcomers, since a custom drawn interface means owning layout and repaint behaviour that a widget would have handled.

FYNE_SCALE and FYNE_THEME are the two environment variables named

Two environment variables are called out for anyone running the examples, and both are worth knowing because they affect every app in the collection rather than a single one. The first is FYNE_SCALE, which overrides the detection of your screen's density, so you can check how the interfaces behave at a different scale than the one your display reports. The second is FYNE_THEME, which switches from the default dark theme to the light one. The documentation is clear that theme response is default behaviour for apps built using Fyne widgets, which means the canvas drawn examples only follow the theme where their drawing code cooperates, and the Clock is described as matching the current theme by design. These two variables are enough to make the examples legible on a machine where the auto-detected density or default dark theme looks wrong.

Calculator, Solitaire and Life were moved to standalone repositories

Three of the better known examples are no longer here. Calculator, Solitaire and Life are each listed in the documentation with a note that they moved to their own repositories, and the links point at separate projects under the same organisation. That is a normal pattern for a toolkit example collection: once an example grows large enough to be interesting on its own, it becomes a separate application and the index keeps a pointer to it. It also changes what the repository is. What remains is a set of small, readable samples, and a developer looking for a complete application in Go and Fyne now has to follow links off this page. The tictactoe/ directory exists in the repository listing even though the visible documentation does not describe it in detail, which is a reminder that the documentation and the tree are not always in exact step.

go.mod pins fyne.io/fyne/v2 v2.7.0 on Go 1.19

The dependency file pins the toolkit and the language version, and both numbers are old enough to check against your own project. The module path is github.com/fyne-io/examples, the Go directive reads go 1.19, and the direct requirements are fyne.io/fyne/v2 v2.7.0 and github.com/stretchr/testify v1.11.1. The rest of the file is a long indirect list, from fyne.io/systray and fyne.io/image through the OpenGL bindings go-gl/gl and go-gl/glfw/v3.3/glfw, the Go text rendering packages, the darwin notification library godbus/dbus/v5 and the nicksnyder/go-i18n/v2 translation stack. The testify requirement suggests that at least part of the collection is expected to be tested rather than only run by hand. The indirect list is also a hint about what the toolkit pulls in: a Fyne desktop app is not a small dependency tree.

No releases, a develop branch and a licence GitHub cannot classify

The repository publishes no GitHub releases, and its default branch is develop rather than main, so there is no tagged artefact to install and no stated release cadence to plan around. The last push was on 2026-07-07. On licensing, the project is published under a custom licence that GitHub cannot classify, with the LICENSE file in the repository as the authoritative text, so anyone copying code from these examples into a product needs to read that file rather than assume the terms of the toolkit itself. The documentation points to a code of conduct, an AUTHORS file and a support link for the wider Fyne project, and the repository topics include hacktoberfest, which suggests contributions arrive in bursts around that event rather than on a schedule.

Where a reference collection beats starting from a blank project

The alternative is to start from an empty Fyne project and assemble widgets yourself, or to consult the toolkit documentation directly and use that as the reference. The difference in approach is that this repository shows finished behaviour rather than API signatures. When you run go run . you see a working interface for each widget and canvas technique, which answers questions about layout and interaction that a signature list cannot. The cost is that the examples are shaped by their authors, not by your requirements, and the pinned v2.7.0 of the toolkit means some APIs in your own project, which may target a newer release, will look different from what the code shows. Read the examples as a pattern library and check the version before you copy.

Editorial conclusion

Treat this repository as a reference and a test bed rather than a product dependency. It suits a developer learning the Fyne API who wants two working styles side by side, and a team deciding whether the toolkit fits their desktop app. It does not suit anyone looking for maintained applications, since the calculator, solitaire and life examples now live in separate repositories and this repository publishes no releases of its own. Before copying from it, check the pinned version, fyne.io/fyne/v2 v2.7.0 against what your project targets, and read the LICENSE file, because the project is published under a custom licence that GitHub cannot classify.

Frequently asked questions

How do I run the Fyne examples?

Run the main example app that links to all the others from the repository root with go run . . You can then set the FYNE_SCALE environment variable to override screen density detection and FYNE_THEME=light to switch from the default dark theme.

What is the difference between the widget and graphics examples in Fyne Examples?

The widget based examples use mostly built in widgets, which makes building the application straightforward. The graphics based examples use the Fyne canvas API to draw primitive shapes, text and images to create custom interfaces, as the Clock and Fractal examples do.

Which Fyne version do these examples use?

The dependency file requires fyne.io/fyne/v2 v2.7.0 and github.com/stretchr/testify v1.11.1, with a go 1.19 directive in go.mod. The default branch is develop and the repository publishes no GitHub releases.

Where did the Calculator, Solitaire and Life examples go?

Each of those examples was moved to its own repository under the fyne-io organisation, and the documentation links to those projects instead of shipping them here. The remaining examples are the smaller ones such as Bugs, XKCD, Clock and Fractal.

Official sources

  1. fyne-io/examples on GitHub
  2. Issues
  3. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/fyne-io-examples.svg)](https://hysenlabs.com/projects/fyne-io-examples)

Was this useful?