First, I would like to thank you for your donations and for your support. It’s a real pleasure to work on improving Linux Mint not only because it’s fun to develop and integrate software and technology but also because we see how happy and excited you are about what we do.. and that’s an amazing feeling for us.

Last month we unveiled some of the improvements we prepared for Linux Mint 18.3, we’ll it’s been a month since, so let’s unveil some more 🙂

Backup Tool

The Backup Tool was almost entirely rewritten. We reviewed its features, the way it looks and the way it works.

We decided to limit its scope. We wanted this tool to do less and to do it better.

You won’t need to enter your password to run the Backup Tool, because it no longer runs as root. When backing up data you no longer need to go through options or to select a source and a type of backup. This tool is now dedicated to making a backup of your home directory, nothing less and nothing more. It saves all your files into a tar archive. When restoring a backup, files are restored in the exact same place they were before, with their original permissions and timestamps.

Of course when performing a backup you have the option to exclude files and directories and the items you exclude are remembered for future backups (the idea is to make it easy for you to perform new backups regularly).

By default, your cache and settings, which are located in .hidden directories and files at the root of your home directory are excluded from backups. You have the option to include some of them, and these are also remembered for future backups.

Saving your software selection is also much simpler than before. Rather than showing you thousands of packages to choose from (you can get the exact number of packages installed on your computer by typing “dpkg -l | wc -l” in a terminal), the Backup Tool now simply lists the packages you installed from the Software Manager.

Under the curtain, the code is now also much smaller and much more modern. Performance and stability were improved, in particular around data compression and multi-threading. Like it was done for the Software Manager, the APT backend was switched to Aptdaemon.

Window Progress

When an application is busy doing something it usually shows you a progress bar. Instead of mindlessly looking at the bar and waiting for it to reach 100% people usually seize the opportunity to do something else or distract themselves on the Web while waiting. The problem is.. how do you know when the application is ready if you can’t see its progress bar? How can you keep an eye on the progress of the operation after you minimize the window or focus other windows on top of it?

Some applications like the USB Stick formatter or the Nemo file operations worked around that problem by changing their window title to indicate their progress. That way their percentage is visible not only on their titlebar but also in the panel window list.

Windows 7 did even better, they implemented a mechanism which allows applications to communicate progress to their environment.

We decided to make this possible in Linux by implementing it in LibXapp.

LibXApp is a C library available in most distributions. It provides dynamic bindings to many languages via the GIRepository.

Here’s an example in Python:

import gi gi.require_version('Gtk', '3.0') gi.require_version('XApp', '1.0') from gi.repository import Gtk, XApp window = Gtk.Window() window.set_title("My Window") window.show() XApp.set_window_progress(window, 50) XApp.set_window_icon_name(window, "info") window.connect("destroy", Gtk.main_quit) Gtk.main() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import gi gi . require_version ( 'Gtk' , '3.0' ) gi . require_version ( 'XApp' , '1.0' ) from gi . repository import Gtk , XApp window = Gtk . Window ( ) window . set_title ( "My Window" ) window . show ( ) XApp . set_window_progress ( window , 50 ) XApp . set_window_icon_name ( window , "info" ) window . connect ( "destroy" , Gtk . main_quit ) Gtk . main ( )

As you can see, the application is able to communicate a progress (50% in this example) to the window manager by simply calling XApp.set_window_progress(window, 50).

In Cinnamon 3.6, that progress is visible in the window list:

The library also provides a useful class called GtkWindow which derives from Gtk.Window and provides these features through the instance directly:

import gi gi.require_version('Gtk', '3.0') gi.require_version('XApp', '1.0') from gi.repository import Gtk, XApp window = XApp.GtkWindow() window.set_title("My Window") window.show() window.set_progress(50) window.set_icon_name("info") window.connect("destroy", Gtk.main_quit) Gtk.main() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import gi gi . require_version ( 'Gtk' , '3.0' ) gi . require_version ( 'XApp' , '1.0' ) from gi . repository import Gtk , XApp window = XApp . GtkWindow ( ) window . set_title ( "My Window" ) window . show ( ) window . set_progress ( 50 ) window . set_icon_name ( "info" ) window . connect ( "destroy" , Gtk . main_quit ) Gtk . main ( )

In this example, the same result is achieved by calling set_progress(50) on the window itself.

Window progress is coming to Linux Mint 18.3. So far it is supported by Cinnamon and it was implemented in:

Nemo (file operations)

The Backup Tool

The Software Manager

The Driver Manager

The USB Stick formatter

The USB image writer

We’re also considering adding support for it in MATE, Caja and Synaptic (this includes all applications using Synaptic such as the Update Manager, the Language Settings and Software Sources tools, removal of applications from the menu etc etc..).

Other improvements

The Cinnamon network applet received the ability to rescan for wireless networks.

The Upload Manager and the Domain Blocker were removed from the default software selection. They will continue to be available in the repositories but they will no longer be installed by default.

Sponsorships:

Donations in July: