GNOME Extensions Spicing Up the Desktop Experience

GNOME’s latest desktop avatar hasn’t really excited most users. The GNOME team has, therefore, put together a number of extensions to make the desktop experience more user friendly. We take a look at some of the best extensions for GNOME 3.

GNOME 3 debuted with much hoopla, a new UI, as well as a complete overhaul of the toolkit and code-base. It is aimed at bridging the gap between the medieval PC industry and the growing tablet market with a multi-pronged approach. However, responses have been lukewarm, making it a tough time enticing users to adopt the new interface. Besides, the lack of many pre-requisite features makes for an unsatisfactory user experience. Another major let-down was the deprecated APIs, which made many applications, widgets and fancy add-ons obsolete.

To tackle these issues, the GNOME team presented us with GNOME extensions small add-ons that let users get an experience similar (if not better) to competing desktops, and even its older avatar. So let’s jump in for a quick look at these extensions and evaluate their performance compared to the bells and whistles offered by the competition.
Compatibility with GNOME 3.x forks: Ever since the GNOME 3.x release, there’s been a huge uproar in the distro community about the revamped desktop. With missing features and a performance hit, most distros are either not including GNOME 3.x, or forking the release and re-crafting it. Cinnamon (of Linux Mint fame) is one of the most popular forks of GNOME Shell, and tries to bridge the gap between the ever-loved GNOME 2.x while adding many new enhancements to the shell. The main disadvantage of using forks like Cinnamon or even Ubuntu Unity is it prevents you using the extensions from the GNOME extensions site. However, if you are lucky, you can still find the extension in your package manager or a third-party PPA. Most popular extensions are available and should be good to go even if you use unsupported versions.

Cinnamon extensions: The Mint developers have gone one step ahead by not only forking the usual GNOME shell, but by providing users with arrays of extensions that will augment your user experience. To install Cinnamon extensions, simply install the extension from https://extensions.gnome.org/ and copy the extension to ~/,local/share/cinnamon/extensions.
Forks aside, the major problem with GNOME extensions is that to install most of them, the system must be running the latest iteration of GNOME, else the GNOME extension website will simply not let you install the extension. This is a serious let-down and developers should come up with a solution. Even a new point release will bar you from installing the extensions.
Installing extensions: Since GNOME Shell and Cinnamon are not at all compatible, their extensions will not work without certain changes being made. If you are using Linux Mint, you can switch between GNOME Shell and Cinnamon with gnome-shell replace and cinnamon replace respectively. Make sure you kill the associated process and shell before switching, unless you want to leak system memory.
The best way to install extensions in GNOME is to use gnome-tweak-tool a.k.a. Advanced Settings, a one-stop-shop for editing GNOME Shell properties and installing or changing themes, shell extensions and various other eye-candy. Make sure you have the gnome-shell-extension package installed; else you will not be able to install extensions using gnome-tweak-tool.
Manual installation: There are many ways to install the extension manually. If you are using the GNOME extensions website, then just click the On/Off slider; installation will begin automatically. If you have cloned the source code for the extension, you can simply copy the extension in /usr/share/gnome/extension for system-wide (for all users) installation, or to ~/.local/share/gnome/extension for a single user. Make sure to restart the shell after this; press ALT+F2, type r and hit Enter. GNOME Shell will restart, and all installed extensions should be active.

Must-have GNOME extensions
If you head to the GNOME extensions website, you will find a not-so-user-friendly interface, and not many options to find the best of the bunch. Most extensions are either too basic or too fragile to be used in a stable desktop. So I have selected some of the best for you.
Note: It’s possible that the extension will not work, courtesy the broken version control at the GNOME end. If you are using a somewhat older revision, you may have to update it first.

Weather: For those who love to know about the weather, there’s a cool extension that shows the latest updates in a beautiful graphical pattern, along with basic pressure, humidity and wind speed data, as well as forecasts for two days. This extension is not available from the GNOME extensions website; you can grab and compile source code from Git, or use the PPA for Ubuntu-based distros. To get the Git source, run git clone git://github.com/simon04/gnome-shell-extension-weather.git. For a PPA, use the following commands:

sudo add-apt-repository ppa:webupd8team/gnome3 
sudo apt-get update 
sudo apt-get install gnome-shell-extensions-weather

The GPaste clipboard: If you are missing trusty old clipboard tools such as Klipper and GNOME clipboard, do not worry. GPaste fills the gap. It works pretty well, and lets you track your old clips and even back them up. Unfortunately, this nifty tool hasn’t made it to the extension website either. Git users can use the following command:

git clone git://github.com/Keruspe/GPaste.git,

while for PPA, add the ppa:webupd8team/gnome3 repository just like you did for the weather earlier update it, and then sudo apt-get install gnome-shell-extensions-gpaste.
The media player extension: Ever since Ubuntu integrated the music player in the GNOME panel, everyone seems to be jumping to do it too. The media player extension lets you enjoy your music collection right from the GNOME panel (you need a compatible GTK-based media player installed for this to work). The extension is available from the GNOME extensions website (https://extensions.gnome.org/extension/55/media-player-indicator/). For Git: git clone git://github.com/eonpatapon/gnome-shell-extensions-mediaplayer.git, and the webupd8team/gnome3 PPA (sudo apt-get install gnome-shell-extensions-mediaplayer).
Docks: Deprecated APIs and a new Clutter desktop took away all the bells and whistles GNOME 2 used to offer, including docks. However, there is a gimmicky dock for dock fans. The let-down: the dock mimics the favourite apps panel in the activity pane, and doesn’t allow any of its own effects and options. You can’t even add custom entries and in case you want to, you have to first add the application to the dock in the activities pane, and then it will automatically display shortcuts or icons on the desktop. Get it from the GNOME extension website (https://extensions.gnome.org/extension/17/dock/), PPA (webupd8team/gnome3) and sudo apt-get install gnome-shell-extensions-dock.
Mounters: These are handy extensions that let you see mounted devices  you can unmount them or open a file manager for one. Extension page: https://extensions.gnome.org/extension/7/removable-drive-menu/.
Sensors – CPU temperature: Paranoid about your CPUs temperature? An extension that uses the fickle lm_sensors does the job, if your CPU/APU is supported. Extension page: https://extensions.gnome.org/extension/82/cpu-temperature-indicator/.
Advanced volume mixer: Tired of the flimsy PulseAudio, yet want more control over your music playback and pipelines? The advanced volume mixer will be just right for you. It sits on top of the existing volume rocker, adding much-needed abilities such as advanced device control and the ability to pause the sound output from apps. Get it at https://extensions.gnome.org/extension/212/advanced-volume-mixer/.

Removing accessibility: The only downside of GNOME extensions is that the majority of them sit on the GNOME panel. Adding too many will create unnecessary clutter there. You can remove unused extensions to save space. Accessibility is one that is hardly used, and so you can get rid of it to reclaim space for other valuable extensions. The Remove Accessibility extension does just that. Extension page: https://extensions.gnome.org/extension/112/remove-accesibility/.

To-do/Note taking: This is a no-nonsense note-taking application. You can add notes by entering the contents, and they can be removed by clicking on them. No fancy editing options, back-ups, dates, time or alarm. It’s a simple clutter-free extension. If you need a simple notes extension, then this is for you. Extension page: https://extensions.gnome.org/extension/162/todo-list/.
Advanced Settings Center: This extension embeds an Advanced Settings option under the user menu, letting you access many system settings with just a few clicks a very handy time-saver. Extension page: https://extensions.gnome.org/extension/341/settingscenter/.
That sums up my must-have GNOME extensions. There are many other useful extensions like the workspace switcher, GMail notifier and more. I will leave the rest for you to discover. The GNOME extension website may not be the best, but it offers a boatload of extensions that might be handy for you.
Creating your own extensions
You can create your own extensions, though the dearth of documentation makes the job a little tough. Adding the changes in settings and APIs can even sour the experience. Anyway, that shouldn’t stop us from trying. You need some knowledge of JavaScript and GNOME APIs. To begin, in a terminal run the following command:

gnome-shell-extension-tool create-extension

You’ll be asked a few questions like the name of the extension, description and unique ID (UUID). After these steps, the tool will create the files needed for your extension, under ~/.local/share/gnome-shell/extensions/<your_extension>. For example, I created an OSFY extension with the UUID LFY@shashwat-desktop, and a folder was created with this name in place of your_extension in the above path. In the directory, you will notice three files by default:
extension.js: The main JavaScript extension file that holds all the code for an extension to work.
metadata.json: A JavaScript Object Notation file that holds the metadata that you entered while creating the extension.
stylesheet.css: Provides the look and feel for your extension. All additional styling is in this file.
Once you are done, simply restart the GNOME Shell and an icon will appear on the top. Upon clicking it, you may display several messages.
If you want to develop an extension, there aren’t many live examples, though GNOME has compiled a decent getting-started page: https://live.gnome.org/GnomeShell/Extensions. You may also want to get through the GObject used by GNOME developers to call data back and forth.

Removing or managing extensions
You can disable extensions using gnome-tweak-tool or the GNOME extension website (visit https://extensions.gnome.org/local/).
You can use the extension preferences located under Settings Center (provided you have installed the Advance Settings Center mentioned earlier) or simply launch it by typing gnome-shell-extension-prefs.
You can remove extensions either by removing their folder from ~./local/share/gnome-shell/<extension> or simply clicking the Remove button on the GNOME extension site.
Some closing words…
The GNOME desktop provides a stable experience, but the missing features are a setback for both developers and mainstream users. GNOME has come up with extensions to try and remedy the problem, but real extension development has not yet caught up to that extent. Still, things are not too bad the ever-growing development community is churning out extensions fast, and hopefully more useful extensions will soon find their way to us.
Developing extensions may be painful at times, given the ever-changing APIs and missing documentation. The biggest hurdle is the panel, which limits the number of extensions you can install and use at any point in time. This may make developers wary of creating new extensions for GNOME’s new desktop.
Overall, the GNOME extension experience is a very mixed bag, which will hurt the desktop. The ever-changing API has let developers down. The install experience wasn’t great either, but thankfully many developers have provided multiple sources for installing their extensions so even if the GNOME portal fails to meet your needs, you can always resort to other options.
Finally, if you use GNOME, you may want to try some of the listed (and other) extensions to enhance your desktop experience, though the currently available extensions may not really rock your world just yet.

References
Home page: https://extensions.gnome.org/
Developer resources: https://live.gnome.org/GnomeShell/Extensions

  • Christian Louis Gabriel METZLE

    “Weather: For those who love to know about the weather, there’s a cool extension that shows the latest updates in a beautiful graphical pattern, along with basic pressure, humidity and wind speed data, as well as forecasts for two days. This extension is not available from the GNOME extensions website”

    https://extensions.gnome.org/extension/613/weather/

All published articles are released under Creative Commons Attribution-NonCommercial 3.0 Unported License, unless otherwise noted.
Open Source For You is powered by WordPress, which gladly sits on top of a CentOS-based LEMP stack.

Creative Commons License.