My GNOME Shell must-haves

I’ve been using GNOME Shell full-time for nearly a year now. In that time, I’ve collected a rather lengthy list of modifications, mostly GNOME Shell Extensions, with others of my own design, which transform it from an unwieldy atrocity into capable and efficient desktop.

The first issue I ever encountered with GNOME Shell, and I think its most grievous error, is its reliance on gestures: namely, the Activities hot-corner, and the message tray; either of these events can quite easily break a large variety of different applications, and yet they’re some of the easiest events to actually trigger on the GNOME Shell desktop. Fortunately, these gestures can be disabled with relative ease using GNOME Shell Extensions:

The second was more about acclimating to GNOME Shell; other desktops, like newer versions of Windows, as well as Ubuntu’s Unity, allow you to use the keyboard shortcut [Super]+n (for n\in\{0..9\}) to, conditionally, start up the n-th application on your taskbar/launcher if it is not already running, or switch to it if it is. GNOME Shell lacks this feature entirely. Apparently it isn’t particularly important to most users either, because I wasn’t able to find any extensions fixing this particular absence. So, I hacked together my own fix:

It’s just a simple shell script, but it works remarkably well for my own purposes, and conveniently it functions in just about every desktop I’ve used. The underlying commands rely on wmctrl, which can be installed (in Debian or Ubuntu) using apt. Using the script itself is pretty simple: just place it in your local “bin” directory (~/bin/) and ensure it’s executable (chmod +x launchit). Then, in your desktop environment’s settings, bind a keyboard shortcut of your choice to:

launchit [-a] -w ${windowclass} -l ${launchcommand}

Replace ${windowclass} with the window class of the desired app (if you launch the app, and then execute the command “wmctrl -lx” in another terminal, the window class is the text in the third column, before the period) and replace ${launchcommand} with the command you’d type to open up the program — and include “-a” if you wish for the script to bring windows on other desktops into focus. The resulting keyboard shortcut should behave in the same manner as a Unity or Windows [Super]-n shortcut.

How launchit behaves.

A diagram describing how launchit behaves.

The next category of modifications are dock-based modifications. The first allows the GNOME Shell’s favorites tray to be used as a dock:

It works pretty well for its intended purpose, with fewer negative interactions with apps than the built-in gestures, but I particularly appreciate the customization it enables for the dock; the default settings leave large blank spaces above and below the favorites tray, and this allows you to shrink them considerably and use your screen space more efficiently.

The other dock modification I use is just a very primitive, hand-made shell extension containing only the file stylesheet.css with three lines:

.dash-item-container > StButton {
    padding: 0px 0px;

All it does is remove the huge margins that are normally placed around the dash’s icons. I always thought it looked bizarre to have such tiny icons with so much unused space between them, so I hacked together a (clumsy and unrefined) way to fix it; on the other hand, I consider it a major improvement over editing the analogous lines in /usr/share/gnome-shell/theme/gnome-shell.css directly.

The last class of modification I use is “goodies”; they aren’t strictly necessary, or even useful, but I use them nonetheless. These include:

  • Alternative Status Menu ( Because having to remember alt commands just to suspend/restart/turn off your computer is just a touch silly. Also because it was installed by default in Debian.
  • SystemMonitor ( I don’t really have a good reason for using this. It’s just kind of neat to have a system monitor in the message tray, I suppose. It’s not actually very useful (nothing about it is numerical), but it looks neat and balances out the message tray visually.
  • Weather (gnome-shell-extension-weather in the Debian repositories): It’s nice to be able to know the weather without the bother of turning my head left 15° to look out the window. Also, forecasts and numerical descriptions of current and future weather.

GNOME Shell can be a pretty great desktop, even if it does need a little bit of help getting there. I hope this may be found useful by others attempting to make GNOME Shell into a comfortable desktop.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s