You can edit almost every page by Creating an account and confirming your email.

Kept on Wikipedia:Fyne (software)

From EverybodyWiki Bios & Wiki



Fyne
Screenshot of fyne_demo showcasing many widgets
Screenshot of fyne_demo showcasing many widgets
Original author(s)Andrew Williams
Developer(s)Andrew Williams, Tilo Prütz, Luca Corbo, Steve O'Connor, Stephen Houston
Initial releaseFebruary 5, 2018; 8 years ago (2018-02-05)
Stable release
1.2.3 / March 2, 2020; 6 years ago (2020-03-02)[1]
Written inGo
Engine
    Operating systemLinux, Unix-like, macOS, Windows, IOS, Android (operating system)
    TypeWidget toolkit
    LicenseNew BSD License
    Websitefyne.io

    Search Fyne (software) on Amazon.

    Fyne is a free and open-source cross-platform widget toolkit for creating graphical user interfaces (GUIs) across desktop and mobile platforms. It's API design and tools are built to encourage building applications that will work across any supported operating system from a single application source code. Unlike older toolkits it is built entirely using vector graphics to produce a high quality user experience that scales to desktop, mobile and other graphical devices. Using this approach provides great support for the rising popularity of high density displays on mobile devices and high-end computers.[2]

    Fyne's APIs aim to be the best for developing beautiful, usable, lightweight applications for desktop and beyond.[3]

    — Andrew Williams, Fyne Vision

    The toolkit's user interface is inspired by the principles of Material Design Material Design to create applications that look and behave consistently across all platforms instead of incorporating system standard visuals. It is licensed under the terms of the 3 Clause BSD License, supporting the creation of free and proprietary applications. In December 2019 Fyne became the most popular GUI toolkit for Go, by GitHub star count[4] and in early February 2020 it was trending as #1 project in GitHub trending ranks.[5]

    Articles about Fyne have appeared in the printed press, most recently in "Straight to the Point"[6], a segment of "Linux Magazine 229" in which Mike Schilli describes using the toolkit to tackle a graphical application challenge. Also the book "Hands-On GUI Application Development in Go"[7] (by Andrew Williams, the project founder) compares 7 of the most popular GUI toolkits for Go. The chapter about Fyne shows code samples and screenshots demonstrating the toolkit features and in later chapters compares these with other projects' approach to modern application development challenges.

    Development

    Fyne is currently developed by a team of volunteers working in their spare time, and is supported by around 40 contributors.[8] Members of this group also work on the FyneDesk project to create a new Linux desktop environment.[9]

    The Fyne toolkit is written primarily in Go (with various languages to access system specific components).[10] The team focuses on clean APIs and follows the principles of Clean Code to sustain maintainability of the code.[11]

    Design of the Fyne API and user interface components follows a careful process to ensure the project's simplicity.[12] The resulting plan and vision is shared on their "Open Plan" page.[13]

    All Fyne projects are continuously tested to check correctness, stability as well as formatting and documentation. Results can be tracked for the project on Travis [14] and code coverage is published using Coveralls.[15]

    Example

    The code required for a simple "Hello World" application is minimal, as follows:

    package main
    
    import (
    	"fyne.io/fyne/app"
    	"fyne.io/fyne/widget"
    )
    
    func main() {
    	a := app.New()
    
    	w := a.NewWindow("Hello")
    	w.SetContent(widget.NewVBox(
    		widget.NewLabel("Hello Fyne!"),
    		widget.NewButton("Quit", func() {
    			a.Quit()
    		}),
    	))
    
    	w.ShowAndRun()
    }
    

    To build this application you will need the Go language and a C compiler installed, as well as a graphics driver that supports OpenGL. It an be built and run using the command: $ go run main.go

    Software architecture

    The Fyne toolkit is built in various layers, with each in separate packages, the following are the most important[16]

    canvas: The canvas API contains drawing primitives that can be drawn to a window canvas. This includes Circle, Gradient, Image, Line, Raster, Rectangle and Text.

    layout: Layouts control how elements within a container are arranged, The provided layouts are Border, Center, FixedGrid, Form, Grid, HBox, Max and VBox.

    widget: The main widget package provides the standard user interface elements, including: Box, Button, Check, Entry, Form, Group, Hyperlink, Icon, Label, PopUp, ProgressBar, Radio, ScrollContainer, Select, Slider, TabContainer and Toolbar.

    app: The app package is the entry point for any application, it manages creation of a new application instance and loads drivers required for the current platform when the software runs.

    test: Test utilities that help applications with unit testing or Test-driven development

    Use

    There are many applications being built using the toolkit, those that are open source and most popular are listed below:

    Name Author Description
    BeebUI Andrew Williams A BBC Micro Emulator based on Fyne and skx/gobasic
    DICOM Viewer Andrew Williams A DICOM image viewer and utilities
    FyneDesk The Fyne team A full desktop environment for Linux/Unix using Fyne
    FyneTerm The Fyne team A graphical terminal emulator for Linux using Fyne
    Fyne OpenSnitch Luca Corbo An OpenSnitch UI in Go using Fyne
    PixelEdit The Fyne team A pixel based image editor built using Fyne.
    Potato Arcade Steve O'Connor The P64 computer console. In Golang.
    Solitaire The Fyne team Solitaire card game
    Tic-tac-Toe Jacob Alzén A simple tic-tac-toe game

    Many businesses are using the Fyne toolkit to quickly add a graphical user interface to command line tools which they have already built using Go. These applications are typically private or commercially sensitive and so are not listed above.

    Releases

    • 1.2 - Mobile Support[17]
     Addition of Mobile support (iOS and Android)
     Addition of support for Raspberry Pi devices (and other OpenGL ES devices)
     BaesWidget introduced to simplify creation of custom widgets
    
    • 1.1 - Feature Release[18]
     MenuBar, PopUpMenu, Select widgets added
     Gradient primitive added and shadows introduced
     Added support for text selection
     Support for disabling widgets
     Tab / Shift-Tab introduced to rotate focused elements
    
    • 1.0 - First Major Release[19]
     Introduced canvas API for drawing primitives
     Introduced widget API including Box, Button, Check, Entry, Form, Group, Hyperlink, Icon, Label, ProgressBar, Radio, Scroller, TabContainer and Toolbar
     Light and dark themes for user interface
     Support for Linux, macOS and Windows operating systems
    

    Criticism

    Issue 229 of Golang Weekly noted the new mobile support from the Fyne project but suggested the design aesthetic was less Material Design and more "generally Linux-y".

    References

    1. ↑ "Focus on older Android devices". github.com. 2020-03-02.
    2. ↑ https://fyne.io/develop/geometry.html
    3. ↑ https://github.com/fyne-io/fyne/wiki/Vision
    4. ↑ https://twitter.com/Fyne_io/status/1207621758414704640
    5. ↑ https://twitter.com/Fyne_io/status/1227238218879291398
    6. ↑ Schilli, Mike (1 November 2019), Linux Magazine 229 - Straight to the Point, Linux New Media
    7. ↑ Williams, Andrew (25 February 2019), Hands-On GUI Application Development in Go (1st ed.), Packt, ISBN 978-1-78913-841-2
    8. ↑ "Contributors to fyne-io/fyne · GitHub". 2020-02-25.
    9. ↑ https://twitter.com/stephenmhouston/status/1212078602889641984
    10. ↑ "Unusual uses for Go: GUIs (Go Time #116)".
    11. ↑ "fyne/CONTRIBUTING.md at master · fyne-io/fyne · GitHub". 2020-02-25.
    12. ↑ "The careful process behind Fyne's simplicity".
    13. ↑ "Fyne Vision".
    14. ↑ "Fyne.io - Travis CI".
    15. ↑ "Coveralls.io - Test Coverage History and Statistics".
    16. ↑ https://www.youtube.com/watch?v=jbsYrrNiqAs
    17. ↑ "Release 1.2 brings Mobile Support · fyne-io/fyne · GitHub". 2020-02-25.
    18. ↑ "Release v1.1 feature release · fyne-io/fyne · GitHub". 2020-02-25.
    19. ↑ "Release Fyne's first major release · fyne-io/fyne · GitHub". 2020-02-25.


    This article "Fyne (software)" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Fyne (software). Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.

    Page kept on Wikipedia This page exists already on Wikipedia.