System Tray

GNOME does not come with a system tray. The extension TopIcons Plus used to be the goto for adding a tray back into GNOME. However, the developer has ceased development. GNOME and KDE have both gone to libappindicator instead of the legacy system tray. Quite a few applications now support this, such as Pidgin, Clementine, Discord, Dropbox, Telegram, and potentially many others.

The extension needed is (K)StatusNotifierItem/AppIndicator.

Add minimize/maximize

GNOME Developers seem to think minimize/maximize is not a useful feature of a desktop environment. To enable it, run the following as your user:

% gsettings set org.gnome.desktop.wm.preferences button-layout 'appmenu:minimize,maximize,close'


When using Pidgin in GNOME, there’s no default tray for it to live in. You will need to install the (K)StatusNotiferItem/AppIndicator extension from the gnome extension website. And then install this package:

% dnf install pidgin-indicator -y

In pidgin, click tools -> plugins, enable Ubuntu Indicator and restart pidgin.

Use curses dialog for password input

GNOME uses a modal GUI dialog for password input and they refuse to change this behavior. It makes it inconvenient to copy/paste passwords from a password manager. You can force it to use a curses-based dialog (for GPG at least) by doing:

echo "pinentry-program /usr/bin/pinentry-curses" >> ~/.gnupg/gpg-agent.conf

Disable emoji input

I was not able to find where to disable this in the GUI, but when you press CTRL+SHIFT+E, GNOME uses this for emoji input. Disable this with:

gsettings set org.freedesktop.ibus.panel.emoji hotkey []

Swap caps lock and escape

Either look under Additional Layouts in Gnome Tweaks, or run:

dconf write /org/gnome/desktop/input-sources/xkb-options "['caps:swapescape']"

Changing “Program not responding” check timeout

Often times when programs stall for a brief period, Mutter will pop up a dialog asking whether you want to “Force quit” or “Wait” for a program which can be annoying. The default check timeout is 5 seconds. You can change this to 60 seconds by doing:

gsettings set org.gnome.mutter check-alive-timeout 60000