This might be quite big news! Flutter, the UI toolkit from Google that's used in tens of thousands of Android applications is coming to the desktop. Google and Canonical have announced their push for Linux too.
Why is this a big thing? Well, anything that boosts easy cross-platform development is a great thing. It can make Linux more attractive to developers to work on, plus publishing onto Linux becomes easier again. Writing in a Medium post, Chris Sells (Google) & Ken VanDine (Canonical) talk a little about what's going on.
They said that the goal for Flutter has "always been to provide a portable toolkit for building beautiful UIs that run at native speeds, no matter which platform you target" although initially starting on mobile. Now though, they announced "we are happy to jointly announce the availability of the Linux alpha for Flutter alongside Canonical, the publisher of Ubuntu". On the Linux side, they've hooked it up with "a new GTK+ based host for Flutter apps on all Linux distros".
To show it off working on Linux, they even created a desktop application named Flokk (Snap Store - GitHub) in partnership with gskinner.com, which is powered by Flutter. Take a look:
Direct Link
For Canonical, they've been working on making it easy for developers to publish to the Snap store, with Snaps being one of the newer generation of cross-distribution packaging formats. Canonical has "dedicating a team of developers to work alongside Google’s developers to bring the best Flutter experience to the majority of Linux distributions" so they're putting plenty of resources into making it happen and ensure parity across platforms.
If you do want to try developing with it, together they've made the Flutter SDK available on Linux through the Snap store which will work with your favourite IDE (like Visual Studio Code or whatever). Keeping in mind it's an "alpha" level release right now.
Anything that can boost Linux in the eyes of developers is great, we shall be watching this with great interest, especially as games can be made with it too not just traditional applications. One less Linux barrier if developers opt for Flutter.
See all the info in the Medium post announcement.
Quoting: apocalyptechI'm always happy to see new options available on Linux, but maaaaan do I despise the mobileification of desktop UIs. One of the reasons I ditched Gnome once they got to v3. My desktop is not a phone, and shouldn't try to pretend to be one. I know I'm a bit of a dinosaur, but I want my desktop to take advantage of the fact that I've got a large monitor and don't need buttons to take up a quarter of the screen, or be reduced to little stylized icons just 'cause that's all that'd fit on a phone screen. Like that gigantic green waste of space on the left in that thumbnail up there, lack of proper menus, popups which insist on being in-window which don't let me take advantage of any of my Window Manager's native features... Just ugh.The funny thing is, I like Gnome actually. Once you realize it's mostly made for shortcuts and screen space (getting rid of the always on dock, etc) and once they fixed the 'always full screen apps', it became quite usable.
As I say, I'm glad that folks who DO want that kind of stuff have more options available, but I'll personally stay far away.
What I hate is the application level stuff becoming flat design and icons becoming complete garbage, and far too colorful and bright. Give me an icon I can actually understand wtf it is...
And this toolkit sadly looks like more of that. Fortunately we have a lot of choice in Linux, so us angry people can still use old apps generally speaking!
(I'm a software engineer using dart and rust for a mobile app for a large company named JASIC)
EDIT:
Holy shit. Okay, so I have been developing this mobile app to control a new kind of welding machine right. Just built it for Linux and everything including WiFi detecting of the machine (using UDP), TCP connections, all screens, main server comms etc, it ALL works.
Caveats so far (in 5 minutes of use):
- I uses EGL, not usable with Nvidia unless you use master branch of flutter
- Window redrawing is jerky in debug builds
- You will probably need to take in to account widget sizing a little more
- Switches between horizontal and vertical layouts depending on window aspect if you have this done in source
- This looks exactly like the mobile app, which means it includes the navbar and back button on the nav bar so yeah app developers will need to target desktop specifically
I mean I'm pretty damned happy with this as is because I can suddenly very easily test and debug major things in my app right on my desktop....
EDIT2:
Being able to run this on desktop and resize the window in wacky ways means I can easily see what the effect on multiple mobile screen sizes will be. Shit I'm excited about this. My job just got a whole lot easier.
Another thing about this - suddenly Linux shot up a lot as a good platform to use for mobile app development if you are using flutter. This is a pretty big tick in Linux's favour.
Last edited by Luke_Nukem on 9 July 2020 at 12:16 am UTC
I've tried to use those shells for making desktop app in the past. It has potential however there are some issues that I found annoying :
- AFAIK the shells works (at least the last time I try it) by rendering Flutter UI using GLFW. Because of it, Flutter can be compiled anywhere GLFW can work. However, thanks to this some GLFW issues exists as well, e.g. weird font rendering and blank white screen when resizing.
- Dart language (that used by Flutter) only uses two spaces for indentation, which is too small for me. I don't mind enforced formatting like Rust and Go, however indentation width shouldn't be enforceable since everyone might have different eyes condition. This is why tab exist after all. There is issue for it, but I don't think it's going to be fixed soon.
At the end I ended up using QML which surprisingly quite nice and works properly. Sometimes I wonder why till this day QML is not really popular (outside KDE, I mean). It's fast, customizable and obviously lighter than Electron.
In other note, Linux Mint has dropped Snap packages. The latest release won't include any snaps or snapd. They also make APT will forbid snapd from getting installed.
Last edited by Acrophobic on 9 July 2020 at 1:15 am UTC
Quoting: AcrophobicIn other note, Linux Mint has dropped Snap packages. The latest release won't include any snaps or snapd. They also make APT will forbid snapd from getting installed.
snap isn't required at all, just flutter (master for Nvidia fix) and clang, ninja-build, libgtk-3-dev. I have various dev libs already installed, so maybe there are more, I'm not sure.
Point is, snapd isn't a requirement.
Quoting: Luke_NukemPoint is, snapd isn't a requirement.Yes, that's true. I forgot to mention it but I tested Flutter in Manjaro without snap and it works properly.
I just mentioned Linux Mint dropped Snap because it's quite a big news since one of the most popular Linux distro decided to drop it.
Quoting: AcrophobicIn other note, Linux Mint has dropped Snap packages. The latest release won't include any snaps or snapd. They also make APT will forbid snapd from getting installed.That is not quite accurate. Mint won't stop you from installing snapd. But you have to do it deliberately--it's not installed by default and it won't be automatically pulled in by certain applications that Ubuntu packages as snap only.
Quoting: TheSHEEEPDoes it actually work on Windows?Google is talking with MS, too. I heard about both Win64 & UWP APIs.
Quoting: TheSHEEEPYou either develop a UI for desktop, or you develop a UI for mobile. Or you do both at the same time, but you can't just use the same layouts for both
Yes, they are working on more layouts, mouse input, desktop integration hooks, etc
See more from me