As you may already know, in Microsoft Windows starting with Windows 7, apps are able to draw a progress bar right in their app's taskbar button. It is useful when you are copying some files, downloading something or installing some huge app which takes time. Essentially, any task which shows a progress bar benefits from the taskbar indicating this. Here's good news for Linux Cinnamon users: the same feature is coming to Cinnamon.
Cinnamon is Linux Mint's flagship desktop environment. Started as a Gnome fork, it is now fully independent.
In the upcoming Cinnamon 3.6 desktop environment, its developers have implemented a special change in the LibXapp, the core library shared between apps included in Linux Mint.
Developers have described it as follows:
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 Nemo file manager's operations worked around this problem by changing their window title to indicate their progress. That way the percentage is visible not only in their titlebar but also in the panel's window list.
Windows 7 did this even better, they implemented a mechanism which allows applications to communicate their 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()
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()
This feature is expected in the next update to Linux Mint. Mint version 18.3 will include the task progress feature for the following apps:
- Nemo (file operations)
- The Backup Tool
- The Software Manager
- The Driver Manager
- The USB Stick formatter
- The USB image writer
Developers are also considering adding support for this feature to MATE/Caja and Synaptic and its helper tools like Update Manager, Language Settings and Software Sources.
Finally, the network applet in Cinnamon has got the ability to re-scan for wireless networks.
All these changes are expected in Linux Mint 18.3.
Winaero greatly relies on your support. You can help the site keep bringing you interesting and useful content and software by using these options:
If you like this article, please share it using the buttons below. It won't take a lot from you, but it will help us grow. Thanks for your support!
One thought on “Cinnamon is getting progress bar in the taskbar”