Could this be the year of Linux+Flutter?
If you’re a hardcore GNU+Linux user, hear me out for a second here. Before going to the comment section and start baffling about Flutter, I’d like you to read the article, please :)

$ whoami
First of all, I’d like to introduce myself. My name’s Jesús Rodríguez, a Spain-based Flutter developer currently working at Reflectly. I’ve been working with the open-source Flutter framework for almost three years now, and I have been involved in a variety of projects, such as SpaceX GO!T
Apart from Flutter, my passion is open and free software in general. I’ve been attached to the GNU+Linux movement for my entire career now, and I can’t live or work with anything else! Just the idea that I have total control on the OS that I’m working on brings me joy. ♥️
What does not bring me joy is to see the number of people that uses free-and-open desktops at home or work. At this point the concept of the ‘Linux Desktop’ is just merely a meme. 💔
This is where my personal Flutter knowledge comes in handy. I really think that I can apply my personal & professional background to contribute in the adoption of the Linux desktop by more people and developers alike.
But before speaking about that, I’d like to address some personal opinions about the current state of the linux-desktop scene, from a product developer & manager perspective.
⚠️ Personal-opinion territory

Develop with GTK is HARD
A couple months ago, I thought about the idea of designing & developing a simple GTK app, just as a pet project. I’ve always loved how apps look and feel on GNOME (my desktop environment of choice).
What was my reaction after a couple of days of work? Yeah, I just quit it.
We’re going to start from the design process. There’s a super great tutorial about how to create GTK mockups by Tobias Bernard using Inkspace. Honestly, I don’t think this app can compete with other such as Figma or Penpot in terms of UX. It’s an old and clunky system that wasn’t design with mockup creation in mind.
Then we have the toolkit itself 🤦. The way you’re suppose to code reminds me of Android development, which is no good. For instance, having separated logic & view languages and system dramatically reduces the productivity and highly increases the barrier of entry for the developer.
Doesn’t make financial sense
This is no breaking news to anybody. Huge companies just decided to ignore native components & conventions in favor of ‘their own way’. Example of this behavior are Slack and Spotify.
For them, build a ‘native’ Linux app just don’t make sense financially. Costs and complexity are high, and the reward is minimal, since the user base is much smaller compared to other systems.
🙌 Flutter comes to the rescue!

Flutter is a developer framework what allows you to create native multi-platform applications for mobile, desktop and web. Keyword here is native. Flutter doesn’t use HTML or CSS to build the app, it instead employs tools created on Dart, its language of choice. It’s pretty similar to modern languages, such as JavaScript or C#, without the verbose or complexity of C++.
Although the Flutter framework is young (it’s been 3 years since its v1.0 release) it’s getting a huge attention the last months, being the fastest growing repository on GitHub!
By default, Flutter uses Material Design components, but it also provides styling for Apple devices. But you can build your own set of ‘widgets’ with custom styles pretty easily, and that’s what I did: introducing flutter_gtk.
Flutter ❤️ GTK
I decided to join my to greatest passions, Flutter & the Linux desktop, and build a set of components that match the ones implemented in the GTK library. Thus, you can develop native Linux apps with Flutter, that resemble and behave just like all the rest of GTK-built apps.
This could allow developers to create GTK-looking apps, that can be deployed to multiple platforms: Windows, macOS, and even mobile & web, from a single codebase.
Adaptability and responsiveness, the ability for the adapt to multiple devices, is also available in this package. This would allow to build apps that work on phones the same way it works on desktop.
This image here is a simple example app, that uses the header bar, buttons & switcher found on the GTK and libadwaita (prev. libhandy) libraries.

This library is open source, and you can find the link to the code here. Any feedback would be really good appreciated, so let me know what you think about this library!
Future
I’d definitely want to continue to support & improve this library in the near future, by including new components & behaviors to the component library.
Community feedback is really important for me and this project. I know the Linux community very well, and I know they could have VERY strong opinions, but I really think the use of the Flutter framework to could increase the quantity and quality of apps and experience available in the free and open GNU+Linux ecosystem.
Thank you very much for taking the time to read this article, hope you’ve learned something today :)
Please take a look at the ‘flutter_gtk’ library of components on GitHub, and let me know what you think! The work here is WIP, but I’d like to expand its scope in the next few months :)
You can contact me directly via email, Twitter or Reddit. Ask me anything you want :) You can also reply directly to this post, I’ll be taking a look 👀.