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.
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