Nitrux first impressions

I have long been looking for a Linux distribution that could match the Mac in it ease of use and polish and that comes with a Qt based desktop. After having tried many different distributions, it looks like Nitrux may be what I have been looking for.

Nitrux 1.0.6 announcement

Who needs yet another distribution? I certainly don’t. Unless it’s very different from what’s already out there. In the case of Nitrux, it is.

In this post, I will describe my initial experience having booted into this operating system for the very first time and exploring what it has to offer. This is written in the order I encounter things, not in the order of importance.

System information

Branding

The distribution is called “Nitrux”, although one can see “NX” and “nxos” in some places. In the interest of simplicity and to avoid confusion, I’d like to see this all to be unified to “Nitrux”. To distinguish, one could say “the Nitrux system”, “the Nitrux project”, “the Nitrux desktop”, and so on.

Installation

I admit it. I never “install” anything, be it applications (I use AppImages which run without installation) nor operating systems (I use SystemImageKit which allows me to run Live ISOs without installation). Not only is this super convenient, it also allows me to have as many different distributions on my SSD as space permits, without ever having to worry about partitions. As what I consider an added benefit, I have a “factory clean” system every time I reboot (important for testing!). So I am running Nitrux, too, using SystemImageKit GRUB 2 based loop-mount booting from its Live ISO, alongside literally hundreds of other distributions and versions.

Suggestions

  • Correct minor bug in loopback.cfg to make GRUB 2 based loop-mount booting really easy https://github.com/nomad-desktop/nxos-base-files/issues/3
  • Put update information for AppImageUpdate into the Nitrux ISO so that it can be updated using binary delta updates (which means you update only the blocks that have actually changed) — this works for the ISO just like for applications…
  • Beef up the Calamares installer to be able to set up a device (e.g., USB stick) with GRUB 2 based loop-mount booting from ISOs that contain a loopback.cfg. Like SystemImageKit does

Proven base

By leveraging Ubuntu as the technical base, few issues are to be expected in terms of hardware and software compatibility.

Boot process

First thing I notice is the “Welcome” message, reminds me of the early Macs. This is a welcome differentiation from the more technical looking splash screens of other distributions and an example of the kind of polish I am looking for.

Global menu bar

The next thing I know this is a global menu bar. This also reminds me of Mac OS in a positive way. It works with KDE applications like the Konsole application. It even works with regular AppImages of Qt 5.9 applications like Quassel_Client-61fc76a-x86_64.AppImage that otherwise look "alien" everywhere - how are they doing it?

Exposé

There is an Exposé-like function that can be reached by moving the mouse cursor in the upper left corner of the screen. I don’t like this choice because the upper left corner of the screen already has the start menu and according to Fitts’ Law there should not be something else in the same corner because it makes it cumbersome to do the right thing.

Launcher

The launcher could need some improvement: to launch an application I click the triangle symbol in the upper left hand corner of the screen and start to type. However, I have to type at least three characters before the correct

application shows up and even when it does, I cannot launch it by simply pressing the enter key. Also, pressing the Super key opens the menu but doesn’t let me type. So I have to use the mouse. https://github.com/nomad-desktop/nxos-base-files/issues/4

XDG Categories (Development, Graphics,…) are missing. I have not yet decided whether I like this or not.

Nitrux 1.0.6 video (Source: YouTube)

Mouse scroll wheel

The mouse scroll wheel default is way too slow. It should be increased by default.

Task switcher

Switching between applications with the Super key and the Tab key shows a task switcher that I don’t like because it is very different from what I’m used to from both the Mac, Windows, and Ubuntu. I find it irritating. I would prefer seeing large icons of the applications rather than a vertical list of windows.

Notifications

Notifications pop up on the screen but after short time automatically disappear into a menu. I like this.

Audio controls

Volume can be controlled easily in the place where I’d expect it. However it is completely unclear how to switch playback devides from the menu. Why can I control the volume of two output devices in the menu when the sound plays only on one of them?

Why can I control the volume of output devices that are currently not active?

There should be an easy way to switch all sound output to an other playback device. Same for the inputs. And no, “normal users” don’t want to have to do this for each app separately.

Look at how XFCE does this:

If it would also show the different devices to choose from, it would be perfect.

Desktop

The icons on the desktop have unnecessary chrome (a box when you hover over them and two incomprehensible symbols. To fix this, right click on the desktop -> Configure desktop -> Icons -> Features -> uncheck everything. This should be the default.

Like in the other OSes, double-clicking should be the default rather than single-clicking to open folders. This has been so on the Mac and on Windows since 1984, and also on Ubuntu.

Dock

I love that there is a Dock by default. But I don’t like that it hides itself.


Now for the main points, the ones why I am excited about trying out Nitrux in the first place.

NX Software Center

One of the highlights of Nitrux is the built-in NX Software Center.

NX Software Center

It shows a list of available applications that suggests that a large portion of the applications on AppImageHub is available. However, not all of them.

Yes, these are all AppImages right there. In case you wonder what the advantages of AppImages are, let me point out just a few:

  • Compatible: Applications packaged as an AppImages can run on many distributions (including Nitrux, Ubuntu, Fedora, openSUSE, CentOS, elementaryOS, Linux Mint, and others)
  • Easy: One app = one file = super simple for users
  • Fast: No unpacking or installation necessary
  • Personal: No root needed, no system libraries changed
  • Flexible: Can use the same AppImages when dual-booting multiple distributions

Downloading and running applications is the quickest and easiest experience I have ever seen on any distribution. I select “NCSA Mosaic”, click on “Download”, I see a nice fast-moving progress bar, I see a “Run” button, I click it, Mosaic runs. I close it, now I can also open it from the menu.

Downloading, running, removing an application is easy

Suggestions

  • I would welcome it to be called “Nitrux Software Cetner” for consistency
  • When launched, it says “loading applications…”. Maybe refreshing the list of available applications could be moved to a background process so that opening the Software Center would become instant if it had been opened at least once before
  • Cosmetic issue: When I click “Remove” in Software Center, the progress bar appears but doesn’t complete
  • When I right-click an application in the menu, then it would be nice if there was an option to remove (delete) it if it had been added through Software Center (rather than being part of the base system)
  • Software Center should have a possibility to update one installed application by clicking on an “Update” button next to “Remove”. This could be implemented by using libappimageupdate based binary delta updates (which would make it really fast and efficient)
  • Right now Software Center looks very minimalistic. Categories and graphics are missing. Maybe http://appstore.deepin.com can be an inspiration
  • When I search for “Quassel” in the search box it says “Sorry, no applications found” but I cannot get out of that screen (the “home” button does not work). I have to quit Software Center entirely.
  • Downloaded applications are dumped in $HOME/.local/bin/ with strange file names:
me@host:~$ ls /home/me/.local/bin/ AzPainter--latest-.AppImage Qt_DAB--latest-.AppImage XChat--latest-.AppImage Cutter--latest-.AppImage VLC--latest-.AppImage Imagine--latest-.AppImage VNote--latest-.AppImage

It would be nice if the original name of the download would be preserved

AppImage integration

This may well be the first distribution in the world with the optional appimaged daemon runnning out-of-the box:

me@host:~$ ps ax | grep appimaged 2679 ? Ss 0:46 /usr/bin/appimaged 6152 pts/0 S+ 0:00 grep --color=auto appimaged

Yay!

This means that we can go do https://github.com/Subsurface-divelog/subsurface/releases, download an AppImage, and it appears in the launcher and can be launched from there. Even better, as firejail is also installed out-of-the-box, it is launched in a sandbox (currently not limiting anything the application can do, but that could easily be changed, e.g., based on digital signatures, in the future. Volunteers?).

Double Yay!

Suggestions

  • One piece that is currently missing is AppImageUpdate (if it was on the $PATH, then applications could be updated by right-clicking on them), but it can be assumed that Nitrux will want to integrate libappimageupdate into the system
  • When downloading files using the browser as described above, then opening the downloaded AppImage through the browser does not work (because when firejail is available, then appimaged does not set the executable bit). This could be changed by registering the AppImage type-1 and type-2 MIME types with a helper script that would run the AppImage file using firejail. (Potentially the functionality could even be added to appimaged which already has most of the logic for determining how to run an AppImage with firejail in place - pull requests welcome!)
  • Improve what we do with firejail using profiles depending on the trust level of the AppImage, see https://github.com/AppImage/AppImageKit/issues/77#issuecomment-306654582
  • AppImages are currently hidden away from sight in $HOME/.local/bin/. I am not sure I like this, since AppImage files are meant to be managed by the user with drag-and-drop. On the Mac, for example, they go to /Applications by default. So maybe $HOME/bin/ would be a better default location

Conclusion

Overall this distribution feels to me like “elementary OS on Qt”. Which is a good thing.

This is easily one of the best new distributions I have tried this year, because it focuses on attention to detail, good user experience, ease-of-use, and, last but not least, has great AppImage integration which could well make it my new favorite distribution.

Now that the basics are in place, let’s see how much value the authors will place on the little polishing touches like the ones I have suggested in this write-up. This kind of attention to detail is what can make a solid into a great distribution for me.

Download Nitrux today.


probono is the founder and lead developer of the AppImage project. Animated GIF screen recordings were made using the Peek AppImage.