All Projects → go-flutter-desktop → Go Flutter

go-flutter-desktop / Go Flutter

Licence: bsd-3-clause
Flutter on Windows, MacOS and Linux - based on Flutter Embedding, Go and GLFW.

Programming Languages

go
31211 projects - #10 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Go Flutter

Desktopify
Convert Ubuntu Server for Raspberry Pi into a Desktop
Stars: ✭ 400 (-92.15%)
Mutual labels:  desktop
Pkg2appimage
Tool and recipes to convert existing deb packages to AppImage
Stars: ✭ 429 (-91.58%)
Mutual labels:  desktop
Azul
Azul is a library for creating graphical user interfaces in Rust and C. It mixes paradigms from functional, reactive and data-oriented programming with an API suitable for developing cross-platform desktop applications. The two core principles of Azul is to not render objects that aren't visible and to use composition of DOM trees over inheritance.
Stars: ✭ 4,937 (-3.1%)
Mutual labels:  desktop
Nheko
No longer maintained - Desktop client for the Matrix protocol (active fork https://github.com/Nheko-Reborn)
Stars: ✭ 410 (-91.95%)
Mutual labels:  desktop
Electrino
Desktop runtime for apps built on web technologies, using the system's own web browser engine
Stars: ✭ 4,197 (-17.63%)
Mutual labels:  desktop
Laravel Kit
A desktop Laravel admin panel app
Stars: ✭ 440 (-91.36%)
Mutual labels:  desktop
Compose Jb
Jetpack Compose for Desktop and Web, a modern UI framework for Kotlin that makes building performant and beautiful user interfaces easy and enjoyable.
Stars: ✭ 7,562 (+48.42%)
Mutual labels:  desktop
Kotlin Libui
Kotlin/Native interop to libui: a portable GUI library
Stars: ✭ 512 (-89.95%)
Mutual labels:  desktop
Oreon Engine
OpenGL/Vulkan Java 3D Engine
Stars: ✭ 431 (-91.54%)
Mutual labels:  glfw
Screentask
(📢 New Version Released) Screen sharing made easy! Share your screen across local devices without internet.
Stars: ✭ 466 (-90.85%)
Mutual labels:  desktop
Pixivdeck
💕 pixiv client for Desktop like TweetDeck 💕
Stars: ✭ 412 (-91.91%)
Mutual labels:  desktop
98
💿 Web-based Windows 98 desktop recreation █████▓█▓▓▒▓▒▒░▒░░░🗕︎🗗︎🗙︎
Stars: ✭ 424 (-91.68%)
Mutual labels:  desktop
Pb For Desktop
The missing Desktop application for Pushbullet.
Stars: ✭ 453 (-91.11%)
Mutual labels:  desktop
Backlog
Simple desktop app for storing lists of items (todo, tasks, backlog items)
Stars: ✭ 407 (-92.01%)
Mutual labels:  desktop
Swifty
🔑 Free Offline Password Manager
Stars: ✭ 496 (-90.26%)
Mutual labels:  desktop
Datacleaner
The premier open source Data Quality solution
Stars: ✭ 391 (-92.33%)
Mutual labels:  desktop
Directxmesh
DirectXMesh geometry processing library
Stars: ✭ 447 (-91.23%)
Mutual labels:  desktop
Coyim
coyim - a safe and secure chat client
Stars: ✭ 513 (-89.93%)
Mutual labels:  desktop
Pomolectron
🍅 A pomodoro app for your menubar/tray.
Stars: ✭ 504 (-90.11%)
Mutual labels:  desktop
Suru Icon Theme
The source of the Suru icon and cursor set
Stars: ✭ 458 (-91.01%)
Mutual labels:  desktop

go-flutter - A package that brings Flutter to the desktop

Awesome Flutter Documentation Go Report Card Join the chat at https://gitter.im/go-flutter-desktop/go-flutter

Purpose

Flutter allows you to build beautiful native apps on iOS and Android from a single codebase.

This unofficial project brings Flutter to the desktop through the power of Go and GLFW.

The flutter engine itself doesn't know how to deal with desktop platforms (eg handling mouse/keyboard input). Instead, it exposes an abstraction layer for whatever platform to implement. This project implements the Flutter's Embedding API using a single code base that runs on Windows, macOS, and Linux. For rendering, GLFW fits the job because it provides the right abstractions over the OpenGL's Buffer/Mouse/Keyboard for each platform.

The choice of Golang comes from the fact that it has the same tooling on every platform. Plus Golang is a great language because it keeps everything simple and readable, which makes it easy to build cross-platform plugins.

Screenshot of the Stocks demo app on macOS

Getting started

The best way to get started is to install hover, the official go-flutter tool to set up, build and run Flutter apps on the desktop, including hot-reload.

Read the hover tutorial to run your app on the desktop, or start with one of our example apps.

If you want more in-depth information about go-flutter, read the wiki.

Supported features

  • Linux 🐧
  • MacOS 🍎
  • Windows 🏁
  • Hot Reload
  • Plugin system
    • BinaryMessageCodec, BinaryMessageChannel
    • StandardMessageCodec, JSONMessageCodec
    • StandardMethodCodec, MethodChannel
  • Plugin detection for supported plugins
  • Importable as Go library into custom projects
  • UTF-8 Text input
  • Clipboard copy & paste
  • Window title and icon
  • Standard keyboard shortcuts
    • ctrl-c ctrl-v ctrl-x ctrl-a
    • Home End shift-Home shift-End
    • Left ctrl-Left ctrl-shift-Left
    • Right ctrl-Right ctrl-shift-Right
    • Backspace ctrl-Backspace Delete
  • Mouse-over/hovering
  • Mouse-buttons
  • RawKeyboard events
  • Distribution format (windows-msi, mac-dmg, linux-appimage, and more)
  • Cross-compiling using docker 🐳

Are you missing a feature? Open an issue!

Examples

A separate repository contains example Flutter apps that also run on the desktop. Go to github.com/go-flutter-desktop/examples to give them a try.

Plugins

Some popular plugins are already implemented over at github.com/go-flutter-desktop/plugins. If you have implemented a plugin that you would like to share, feel free to open a PR on the plugins repository!

For a detailed tutorial on how to create a plugin, read the wiki.

Version compatibility

Flutter version

Flutter itself is a relatively young project. Its framework and engine are updated often. The go-flutter project tries to stay compatible with the beta channel of Flutter.

Go version

Updating Go is simple and Go seldomly has backwards-incompatible changes. This project remains compatible with the latest Go stable release.

GLFW version

This project uses go-gl/glfw for GLFW v3.3.

License

BSD 3-Clause License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].