FYNE AND GO
Create a Fyne journaling app
Dressed in his programming finery, Andrew Williams shows how you can quickly build a graphical app for your computer using Fyne and Go.
Part One!
Don’t miss next issue, subscribe on page 16!
OUR EXPERT
Andrew Williams is a software engineer and entrepreneur based in Scotland. He has been a core developer in open source projects such as Enlightenment, EFL and Maven. He founded the Fyne toolkit.
QUICK TIP
There is a lot of functionality in Fyne – it can be difficult to remember everything when getting started. Using an IDE with autocompletion can help a lot, as the API is designed to be consistent and the standardised patterns allow a code editor to make smart suggestions.
Over the past decade, we have seen great improvements in the graphical software user O experience and corresponding advancements in the tools that are used to create compelling apps for our phones and tablets. Unfortunately, building graphical applications for the Linux desktop seems not to have benefited quite as much from these developments. With this in mind, several recent projects have been created, aiming to serve all platforms, so none are left behind.
The Fyne project is a popular toolkit that was started with this purpose in mind. This cross-platform GUI toolkit for Go enables you to create a single codebase from which graphical apps can be built for Linux, BSD, Android, iOS, Mac OS and Windows. Fyne aims to make it easy for developers to build compelling graphical apps for desktop, mobile and web.
In this article, we step through the setup and basic coding to create an application user interface. In the next part, we will add some advanced features and explore packaging and distribution options.
Getting started
Fyne is based on the popular Go programming language. Go is noted for its ease of use and quick compiling. However, because Fyne connects to graphics drivers to build high-performance GUI apps, we also need to have other developer tools installed, including a C compiler and some development headers.