GNOME - hpaluch/hpaluch.github.io GitHub Wiki
GNOME
GNOME 3 (or later) is most controversial GUI ever seen. GNOME developers have their own view how people should use UI denying any customizations (only possible with Extensions).
If you plan to use plain GNOME you need to understand several important shortcuts:
- NOTE: Win key is often referenced as "Super" key in docs.
Running new application
- Win+A - will open application search - you have type something (for example
term
) and than click on Terminal app to run it. - if you know command name (for example
terminator
) you can press Alt-F2 and type command name to run (this shortcut is one of few from very old GNOME versions).
Running application from dash (dash does NOT need to be visible)
- Win+1 - will run 1st application on Dash - if it is Firefox, it will run Firefox
- Win+2 - will run 2nd application from Dash, etc...
Creating new Window: If application is already running it will only focus you to existing application!
- if you want to create new Window it is application specific:
- File manager "File" - Ctrl-N
- ptyxis (Default terminal in Fedora 41+)
- Ctrl-Shift-N - new Window
- Ctrl-Shift-T - new Tab
Workspaces you can use:
- you will see workspaces at left-top corner:
- long dash is active workspace
- circle is inactive workspace
- there is always one empty last workspace. There is no shortcut to create new workspace (!) Group of empty workspace is automatically reduced to single empty workspace.
- Win+PageUp/Down to switch to next/previous
- Win+Wheel - cycle next/previous workspaces
- if you accidentally created application in wrong workspace you
can move it with additional Shift key, so:
- Shift+Win+PageUp/Down
Cycling application windows:
- Alt-Tab (from MS Windows) will cycle all applications (across all workspaces) but NOT multiple Windows of same application(!)
- to cycle Windows of current application you can use Alt-` (but NOT other applications)
- to cycle across all Applications and Windows in current workspace Alt-Esc
Bonus - screencast (Video screen recording)
- press Ctrl-Alt-Shift-R - small dialog will appear (region or whole Screen).
WARNING! On Fedora 42 Rawhide
Window
option was not available - you will see recording status at right-top screen.
- to stop recording click on Red recording icon on top-right (it should be possible to stop it also with pressing Ctrl-Alt-Shift-R again, but it did not work in my case).
- video will be stored under
~/Videos/Screencasts
See
- https://wiki.gnome.org/Design/OS/KeyboardShortcuts
- https://help.gnome.org/users/gnome-help/stable/shell-keyboard-shortcuts.html.en
Common GNOME tweaks
Stop hiding scroll-bars:
- CLI:
gsettings set org.gnome.desktop.interface overlay-scrolling false
- or in GUI
- right-top click (on power icon etc..)
- click on "Settings"
- click on "Accessibility"
- expand "Seeing"
- uncheck "Overlay Scrollbars"
Reduce wasteful animations
- CLI:
gsettings set org.gnome.desktop.interface enable-animations false
- or in GUI:
- go to "Accessibility" and "Seeing" as described above
- check "Reduce Animations"
How to stop automount (I have several disks with lot of volumes, so it is really annoying):
- official RedHat instructions: https://access.redhat.com/solutions/20107
- here is version for current GNOME user:
gsettings set org.gnome.desktop.media-handling automount false gsettings set org.gnome.desktop.media-handling automount-open false sudo systemctl restart gdm
- or better way (from same RedHat page):
- create file
/etc/dconf/db/local.d/00-media-automount
with contents:[org/gnome/desktop/media-handling] automount=false automount-open=false
- and then call as root
dconf update
- create file
Fedora 41 GNOME tweaks
All extensions are disabled by default(!).
You have to enable them with:
gsettins set org.gnome.shell disable-user-extensions false
Also extensions are no longer managed in "Tweaks" app, you need to install:
sudo dnf install gnome-extensions-app
And run Extensions
app.
Fedora 39 GNOME tweaks
Always install at least these tools:
sudo dnf install gnome-tweaks dconf-editor gnome-applets
Stop hiding Dash:
-
Dash (application launch bar) is by default hidden - you have to click at top-left to reveal it
-
there are two extensions that change this behaviour:
a) Dash to Dock - this will ensure that Dash (launch pad) will be always visible. It is similar MacOS X ui. b) Dash to Panel - this will replace both Dash and Top bar with single "panel". It has similar look as windows Task bar.
-
to fix it you have to do this:
sudo dnf install gnome-shell-extension-dash-to-dock gnome-shell-extension-dash-to-panel # IMPORTANT: Now Log-out and Log-in - otherwise extensions will not be available! # And then: gnome-extensions list #enable ONE of these extensions: # a) ensure that Dash is always visible gnome-extensions enable [email protected] # b) OR move top-bar and Dash to single "Windows like" task bar at bottom: gnome-extensions enable [email protected]
Installing System Load Indicator
Indicator is an application that will show information on Top Bar
Here are instructions how to install two versions of system load indicators:
a) Installing standard Fedora Package
- First install package:
sudo dnf install gnome-shell-extension-system-monitor-applet
- Logout and Login so new Extension will be visible
- Enable Extension using:
gnome-extensions enable [email protected]
b) Building Ubuntu System Load Indicator under Fedora 39
I really like Ubuntu System Load Indicator
(it will chart various kinds of system load - on top bar).
(The only drawback is missing Tooltips (to know which chart is what). There is only one summary tooltip
showing all information at once.)
So i decided to build it for Fedora.
Official Ubuntu page with downloads is here:
Do this to build and install it:
mkdir src
cd src/
curl -fLO https://launchpad.net/indicator-multiload/stable/0.4/+download/indicator-multiload-0.4.tar.gz
tar xvf indicator-multiload-0.4.tar.gz
cd indicator-multiload-0.4/
#dnf grouplist
sudo dnf groupinstall "Development Tools"
# dependencies to build this Indciator
sudo dnf install libgnome-devel
#dnf provides intltool-update ...
sudo dnf install intltool libgtop2-devel glib-devel cairo-devel \
libappindicator-gtk3-devel
./configure
make
sudo make install
Because there is only one way how to do things in GNOME we need to first install and enable AppIndicator Extension:
sudo dnf install gnome-shell-extension-appindicator
# from /usr/share/doc/gnome-shell-extension-appindicator/README.md
gnome-extensions enable [email protected]
To quote above README.md
This extension integrates Ubuntu AppIndicators and KStatusNotifierItems (KDE's blessed successor of the systray) into GNOME Shell. Including support for legacy tray icons.
Now simply click on Apps and click on System Load Indicator
- it should magically
appear on right-top.
To enable more load charts right-click on CPU chart and select Preferences...
I prefer color scheme XOSView
(it is name of very old X-Window program that did same thing).
Enable bold font in GNOME Terminal
It was first hidden and then removed entirely. Because supreme GNOME God decided that it was wrong(!). For details see:
- https://bugzilla.gnome.org/show_bug.cgi?id=762247
- https://gitlab.gnome.org/GNOME/gnome-terminal/-/issues/201
- https://gitlab.gnome.org/GNOME/vte/-/issues/323
I found two ways how to allow bold fonts in GNOME.
-
Install better terminal:
dnf install xfce4-terminal
Problem fixed! There is even icon - so you can add this sane terminal Icon to your Dash.
-
Set Bold Monospace font in Gnome Tweaks:
- install:
dnf install gnome-tweaks terminus-fonts
- run Tweaks and: select Fonts -> Monospace Font -> Terminus bold
- ensure that GNOME Terminal use "System settings" - in that case it will not filter out bold fonts(!)
- install:
Unable to resize Totem video player
GNOME terrorists decided that Totem player should always resize video to full screen and does not allow to change it to 1:1 or other size(!). See
- https://www.reddit.com/r/linux/comments/24k8xr/what_the_fuck_gnome_removes_ability_to_resize/?rdt=63773
- https://bugzilla.gnome.org/show_bug.cgi?id=694457 They are completely ignoring that some hardware is able to accelerate video playback only on 1:1 resolution...
GNOME tracks your location
Even when you disable Location tracking on First boot wizard, GNOME will happily ignore it(!)
- see https://discourse.gnome.org/t/what-s-using-location-services/12848/3
- recommended to mask it:
sudo systemctl mask geoclue
- here is list of issues that were ignored using vicious excuses:
- https://gitlab.freedesktop.org/geoclue/geoclue/-/issues/111
- https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/805
- https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/964
- and reboot
Above issue
- https://gitlab.freedesktop.org/geoclue/geoclue/-/issues/111
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=924516 is very useful as it shows several ways how to track specific application if it make connection
a) iptables variant:
- setup
iptables -A OUTPUT -m owner --gid-owner geoclue
- after a while show output usage statistics:
iptables -nvxL OUTPUT
b) nfatbles: - run these commands:
nft add table inet geoclue
nft "add chain inet geoclue geoclue { type filter hook output priority 0; }"
nft add rule inet geoclue geoclue skuid geoclue counter
- after a while run
nft list rulese
and watch forskuid "geoclue" ... packets X bytes X
- if X is not zero it means that process in
geoclue
group made output connections...
Disable suspend
- I have old desktop (so always on AC power)
- but GNOME insists on Suspend
- solution here: https://unix.stackexchange.com/questions/36477/how-do-i-prevent-gnome-suspending-while-i-finish-a-compilation-job
gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 0
Warning! Also GDM login manager will suspend your computer - even if you are not logged in - see discussion on
- https://discussion.fedoraproject.org/t/gnome-suspends-after-15-minutes-of-user-inactivity-even-on-ac-power/79801
- there is this setting:
sudo -u gdm dbus-run-session gsettings list-recursively org.gnome.settings-daemon.plugins.power | grep sleep
How works GDM
GDM was Gnome displapy Manager (GUI Login). However if you look into source you will find that it is nearly empty - no GUI, no login dialog.
Once you look into process list it will become clear: you will find gnome-session (still no GUI at all) and gnome-shell
!
So to summarize:
- gnome-shell is used to run both GNOME Interface
- to run Login (or Unlock or other) interface (former task of GDM).
So basically GDM now just run gnome-shell
in gdm
mode.
- most of source is written in GJS (GNOME JavaScript) - see https://gjs.guide/guides/gjs/intro.html
Example:
- when you run
gnome-shell --list-modes
- it will call
resource:///org/gnome/shell/ui/listModes.js
- source is under
gnome-shell-47.2/js/ui/sessionMode.js
Are you curious from where come Not listed?
(text on GDM User list)
- it is in
gnome-shell-47.2/js/gdm/loginDialog.js
BTW its GUI does NOT use GTK (or other library) directly, but there is so called "St Widgets" library, and that uses Clutter which is more or less OpenGL rendering (!) library:
- clutter - "An OpenGL based 'interactive canvas' library"
- Mutter which is "Mutter is a Wayland display server and X11 window manager and compositor library"
- Cogl (also under Mutter) - "hardware acceleration abstraction library used to simplify usage of OpenGL pipelines"
If you want to find more here is nice picture:
Quote:
Unlike most GNOME applications, Mutter and GNOME Shell are both built on the Clutter toolkit which is more abstract than GTK.
Clutter widgets are called Actors and have all the basic properties and signals you would expect from a base widget. Actors can contain other actors using several layout managers and have built-in support for animations and other effects.
St builds on Clutter to provide more complex widgets like buttons, icons, text entries and scrollable areas. It also adds support for CSS so the style of widgets can be changed programmatically or from a stylesheet.
To understand Wayland you also need to touch Mutter
When used as a Wayland display server, it runs on top of KMS and libinput. It implements the compositor side of the Wayland core protocol as well as various protocol extensions. It also has functionality related to running X11 applications using Xwayland.
It contains functionality related to, among other things, window management, window compositing, focus tracking, workspace management, keybindings and monitor configuration.
Internally it uses a fork of Cogl, a hardware acceleration abstraction library used to simplify usage of OpenGL pipelines, as well as a fork of Clutter, a scene graph and user interface toolkit.