Comfy GNOME shell

Sparing thoughts for the desktop whatsit favoured by the thoughtless

August 13, 2019 — July 3, 2022

computers are awful
diy
POSIX
UI
Figure 1

GNOME! The default on Ubuntu! Competitor to KDE Plasma, the other major default widget system aesthetic “desktop environment” framework denomination way of life coding convention whatsit.

At first glance, there is not much to choose between GNOME (C-ish?) and KDE (C++-ish?) styles of doing things. They both give you lots of clicky widgets and buttons, arranged into an adequate conventional UI. Which is to say, they each approximate the floating patch of non-degradable UI decision conventions that is the modern desktop, with occasional innovations that we leave unexplained to avoid confusing Windows users during onboarding. They both look suspiciously over-engineered and tend to be installed with way too much extraneous crap, as per desktop tradition.

GNOME comes configured as the default method of doing things on the default distribution, Ubuntu, and seems (therefore?) to have a larger user base (?) or at least more HOWTOs. KDE has a number of advantages; e.g. I think it is uncontroversial that the KDE file manager Dolphin is a better file manager than Nautilus as far as user experience, and KDE email client, Kmail presumably cannot be worse. There are some other things which I prefer about KDE but not enough that I can be bothered booting into a KDE desktop to remind myself.

One can mix and match GNOME-ish and KDE-ish apps in the same OS. The more fundamental to the desktop environment is the app in question, the more complicated and annoying this gets.

And indeed they both have extensibility and hackability and if anything is wrong, you can change it! All you need to do is wade through a mountain of incomplete and obsolescent documentation and user forums, and dedicate a significant portion of your life to ongoing maintenance. None of the marginal gains from these underexplored configurations seem significant enough to my life for the costs, so I try to stay close to the mainstream. Accordingly, here are some low-effort GNOME tweaks and tips to improve that status quo from within with an emphasis on not needing to compile weird patch versions of the app unless the basic version truly excruciates me.

GNOME shell is not exactly obvious; at least, mastery is not obvious. The Gnome Shell Tutorial: Desktop Workflow Explained helps somewhat.

1 Keyboard shortcuts

What are the keyboard shortcuts? There are many. And they often conflict. Here is a design document which gives an outline/philosophy. Here is a cheatsheet, which may or may not apply to your own flavour of GNOME. Highlights for my workflow:

Enter ”Show Applications”
Super+A
Access Application Menu
Super+F10
Toggle maximized/windowed
Super+Up / Super+Down
Toggle tiled left/right
Super+Left/Right
Hide window
Super+H
Switch to next/previous workspace
Super+PgDown/PgUp
Switch to first/last workspace
Super+Home/End
Move Window to next/previous workspace
Super+Shift+PgDown/PgUp
Move Window to monitor left/right
Super+Shift+Left/Right
Switch to next application
Super+Tab
Switch to next window of the current application
Super+<key above tab>
Switch input source
Super+Space
Toggle Message Tray
Super+M
Expand a notification and give it keyboard focus
Super+N
Take a screenshot
PrintScr
Take a screenshot of a window
Alt+Print
Take a screenshot to clipboard
Ctrl+Print
Video capture desktop
Ctrl+Alt+Shift+R
Lock screen
Super+L

The primary system modifier key should be <Super> (Super/Windows/Command key).

The advanced emoji/unicode shortcuts via the ibus system, Ctrl-shift-e and Ctrl-Shift-u, clash with some other useful shortcuts. I recommend changing them; but these particular shortcuts are not in the usual OS shortcut setup; instead, you must use dark arts. The ibus-setup app is supposed to configure these but it does not run for me. There is a more functional hack involving dconf-editor and the key /desktop/ibus/panel/emoji/hotkey. I changed mine to ['<Super><Shift>e']. The other, nearly-as-annoying, Ctrl-Shift-u unicode keyboard shortcut does not seem to have any way of turning it off except disabling ibus. That also removes various other useful functions that depend upon ibus such as the emoji selector and east-Asian character input methods.

2 Typing foreign characters

See applied typography.

tl;dr

apt install gnome-tweaks

Then launch Tweaks

  1. Go to Keyboard & Mouse.
  2. Choose Caps Lock for the Compose Key.

3 Theming

Those used to Unity (i.e. Ubuntu before 2018) and the Cinnamon desktop it came with might want to make GNOME look like Unity.

For custom user theming AFAICT you need to install a non-Ubuntu extension to enable user themes. That sounds like too much effort. I will just change the desktop background image I think.

Or! Install a not-very-custom pre-built theme. The only one I have witnessed having adherents is Canta. There are others.

3.1 Random wallpaper

Does wallpaperdownloader do the trick?

4 Gnome shell menu

For user themes and extension wrangling, the Alt-F2 menu is useful because it provides access to commands we use in shell tweaking, e.g.:

r
restart GNOME Shell
rt
reload the GNOME Shell theme. i.e. to share/gnome-shell/theme/gnome-shell.css`.
lg
launch LookingGlass, GNOME Shell’s integrated debugger and inspector tool.

🏗 does this work under Wayland?

5 Restarting Gnome

Is something weird? Does it take 2 seconds to switch apps instead of no-perceptible-time-at-all? This happens to me once a week or so. I find restarting GNOME helps. Restarting just the desktop (?) is not as bad as restarting the machine: it takes only a few seconds and no other apps are disturbed. Everything keeps ticking over just fine.

How to achieve this happy outcome? Use the r command from the Alt-F2 menu, above. One of the following two commands might help on Ubuntu-style systems if you need to do it from the terminal:

gnome-shell --replace
sudo systemctl restart systemd-logind
sudo systemctl restart gdm

6 Indicators

Miniature informational applets update the display by some system called indicators e.g. for power.

Occasionally one sees Unity Applets on the web; which were too old to get status indicators and do not work in modern GNOME.

7 Extensions

Real executable code extensions are installed on my computer via a… web browser app? What is going on? The entire system looks dangerously undermaintained for a distribution hub for privileged code. I am not touching that. Look for packages in your local distribution of choice.

7.1 Too many docks on the desktop

Too many docks too many many docks.

I use the Ubuntu dock, because it is default on Ubuntu. But if I search for GNOME Dock Extension there are many variants which briefly seemed to me to be desirable. Cairo-dock? dashtodock? Many more even less reputable looking ones? Bikeshed dock? Committee dock? OCDock? Help! These days, rather than face the problem of choice, I have no dock at all and use a tiling window manager thanks to Pop!_os.

7.1.1 Help! My Dock is visible on lock screen

This was a common problem. If I understand it right, at least for Ubuntu, it’s to do with the demarcation lines after Ubuntu Unity was replaced by Gnome-with-extensions-to-make-it-look-like-unity. If you want everything to work out like you expect, you either do

  1. Use Ubuntu Dock Gnome extension, which is a patched Dash-to-Dock. (i.e. not no dock extension and not vanilla Dash-to-dock extension.)
  2. Oh that didn’t work? Try gsettings set org.gnome.shell.extensions.dash-to-dock transparency-mode FIXED

Why they have it default to BROKEN I will never understand. OK, in fact perhaps the insights of jwz: I told you so, 2021 edition are what we want here, explaining how various screen lockers are broken in hard-to-fix ways.

7.2 Tiling

Tiling window managers! The other paradigm to stacking window managers. Can you turn GNOME into one?

There is extremely basic split screen tiling built into GNOME.

By dragging windows to the left and right edges of the screen you can tile them side by side.

There are various attempts to support more sophisticated tiling, addressed below. As the author of slinger explains, there is a lot of awful kludging needed to make GNOME flexible, so few attempts to do this succeed. Current best candidate, though is Pop-shell, which is the System76 GNOME Auto Tiling extension, which does a pretty good job. It occasionally gets confused, but mostly tiles windows by progressive enhancement, and does not require exotic configuration or precipitous learning curves.

More scruffy community options:

I could, e.g. try to use xmonad with GNOME, but there are so many portents that this is a bad idea feels like checking out the mysterious basement alone in the third act of a slasher flick. 😒

8 Terminal emulators

Tilix is the terminal emulator that Gnome people tend to like. It has consistent keyboard shortcuts, tiles (but tiles terminal windows only; who wants that?) and integrates into the Gnome. I prefer hyper FWIW; it’s cross platform and feels modern, as close as you can get outside of macos to the best terminal that actually ships, iterm2.

9 File manager

The default file manager in GNOME is Nautilus. Nautilus claims a salutary ideological commitment to minimalism and simplicity, which I naturally publicly laud. However, as with many ideological commitments, just as anyone who does not take it as far as me is a mealy-mouthed quisling, so is anyone who takes it further than me a fundamentalist zealot or even a hipster, and the Nautilus team I suspect of comprising some mix of the latter two, because they take the minimalism to an extreme in the wrong places.1 Their bold and/or stubborn commitment to idiosyncratic UI conventions comes at the irritating cost of ignoring the UI conventions of all the other desktop platforms and indeed all the other apps on this same desktop platform.2 When I say this, what I specifically mean is: typeahead navigation is broken in Nautilus and that annoys me, constantly. I understand that not everyone will find this feature essential, but for me it is one of those things that is so deeply ingrained in my workflow that I cannot abide without it.3 And indeed I do not abide without it, in AFAICT any app I have, with the exception of the triply-blighted GNOME file manager.

Nautilus is, at least in GNOME-flavoured (default) Ubuntu, tightly-enough coupled to the OS that it would be awkward to replace it with something substantially different on my own. By this I mean that I suspect that alternative file managers not supported by a large community trying a similar configuration, these will introduce larger irritations of compatibility and maintenance and that faffing about trying it out is not the top of my list. However, I have had some success replacing it with something very similar. I could switch to a different desktop environment entirely (KDE? Linux Mint?) which would be smoothly integrated with a different file manager. I do not relish the prospect of getting my fussy Linux audio apps running in any remotely unorthodox environment, though, or generally spending any more of my workday wondering which obscure config I messed up. So! Fixing things as they stand.

9.1 Typeahead navigation, first-letter navigation

I want to type W to navigate in the file browser to files starting with W, like in Windows/macOS/Chrome/Firefox/etc. Apparently, this is called typeahead navigation. Google calls it first letter navigation. The Nautilus team deleted that feature in favour of a slow, annoying recursive search. Search is nice, but it’s a different thing to navigation, and this absence of keyboard navigation disorients and annoys me every day of my life using GNOME. Typeahead navigation works in macOS, it works in Windows, it works in every drop-down list I can find in the entire Ubuntu OS and every browser and every app, but it does not work on the GNOME file browser. Nonetheless, the Nautilus developers are obdurate about keeping it this way because of being fundamentalist hipsters and also because now everyone is triggered. Files: type ahead (#142) · Issues · Teams / Design / Whiteboards · GitLab

There is a long story as to how the discussion about this feature got so acrimonious but it is kind of boring and resembles too many other open source loggerheads, so let us ignore it and just consider how to fix it as users who know the developers are not going to help.

9.1.1 Use an additional file manager

This involves minimal messing with any structural components of the OS. Keep Nautilus around for things that need Nautilus but otherwise ignore it, and use something that has less design-by-committee-flame-war in its history.

There are various options. fman is OK.

It is weird needing to remember which file manager you opened that folder in, though.

9.1.2 Replace Nautilus with Nemo

In this scenario, we replace the file browser with a competitor, Nemo, which is a cousin of Nautilus. Nautilus is in a complicated family relationship with the subtly different file managers Caja and Nemo, which can sort-of all be shoe-horned into replacing each other, sometimes, diffracting the pure simple light of convenience into a different spectrum of annoyance profiles and sparkling pain points.

Let us run with Nemo. As with internal organs, the filial relationship can help reduce the trauma of the transplant. Confusingly, the new file manager appears as Files not Nemo so I constantly wonder which file browser I am using.

sudo apt install nemo
xdg-mime default nemo.desktop inode/directory application/x-gnome-saved-search

Pro: faster and easier to navigate because it has typeahead navigation.

Con: Preview with gnome-sushi, below, does not work any longer. Maybe nemo-preview would replace it? (I think that is even derived from gnome-sushi.) However, it is not in the repository so I will not go down a rabbit hole to install it.

Con: “Recent files” disappears. You can enable it.

…press Ctrl+L so you can enter “Address/Path”, then type in: recent:/// and press enter. It should show the recent files. Then press Ctrl+D to bookmark this into your Nautilus sidebar.

It still looks janky though.

Con: Errors when dismounting drives. This seems to be cosmetic so I do not care.

Con: You cannot drag files to and from the Desktop.

If these cons are annoying, try

xdg-mime default nautilus.desktop inode/directory application/x-gnome-saved-search
sudo apt remove nemo

Well. This feels fragile.

9.1.3 Replace Nautilus with a forked Nautilus which has typeahead navigation

A reasonable long-term solution for Nautilus-lovers given the too-hipster-for-specifically-me-personally issue upstream seems to be distribution fixes downstream for users. For Archlinux users this is already the system. Ubuntu people can use a forked Nautilus with typeahead search too. This feels fragile. Recent blogs lead me to believe the fork is probably ok? 🤷‍♂

sudo add-apt-repository ppa:lubomir-brindza/nautilus-typeahead
sudo apt upgrade

9.1.4 Retro cinnamon desktop

Install a complete custom fan-built retro cinnamon desktop which includes the classic Nemo and lots of other features with less support from the mainline. This seems rickety and dangerous, and low ROI. If I wanted to go to the trouble of running an unorthodox desktop environment, I would drop GNOME entirely in favour of something lighter and more secure, and hell, try a hardened OS while I was there.

9.2 New context menu items

Nautilus supports clickable scripts in the context menu when you click on a file. There are 2 types.

9.2.1 Nautilus scripts

a.k.a. g-scripts. Simple and useful, although blighted by outdated documentation.

9.2.2 Nautilus actions

More fully integrated is the actions system, which is called filemanager-actions which supersedes nautilus-actions. HOWTO.

sudo apt-get install filemanager-actions
## install/create an action
fma-config-tool
## restart the file manager
nautilus -q

This comes with a little GUI that allows you to put commands in the menu for the file manager when you click on various things. Handy.

9.3 macOS-style quicklook previews

Gnome Sushi does that well.

apt install gnome-sushi

It is broken in Ubuntu 20.10, and you can recompile it yourself, or go to 21.04.

10 Switching to Wayland

Try the following setting: In /etc/gdm3/custom.conf/ comment out the line

WaylandEnable=false

Footnotes

  1. Wrong for me. No mistake, GNOME is a gigantic and over-engineered system which TBH could do with even more stuff trimmed away and the goal of minimalism is important. I get that the trade-offs are hard. I suppose the situation is that the developers think it is ok that system simplicity can come at the expense of user consistency, which means that while life might be simpler for the computer it is more complex for me because I have to remember which developer thought they should buck a trend they decided was complex.↩︎

  2. The Nautilus probably do have superior moral right to make this claim than me because they care enough to work on their vision for this in order to make them real, I get that. I just hate it. However, I clearly do not hate it quite enough to pick this special hill do die upon.↩︎

  3. Unless I vent my discomfort to the uncaring internet. And here we are.↩︎