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

Common GNOME tweaks

Stop hiding scroll-bars:

  1. CLI:
    gsettings set org.gnome.desktop.interface overlay-scrolling false
    
  2. or in GUI
    • right-top click (on power icon etc..)
    • click on "Settings"
    • click on "Accessibility"
    • expand "Seeing"
    • uncheck "Overlay Scrollbars"

Reduce wasteful animations

  1. CLI:
    gsettings set org.gnome.desktop.interface enable-animations false
    
  2. 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

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:

I found two ways how to allow bold fonts in GNOME.

  1. Install better terminal:

    dnf install xfce4-terminal
    

    Problem fixed! There is even icon - so you can add this sane terminal Icon to your Dash.

  2. 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(!)

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

GNOME tracks your location

Even when you disable Location tracking on First boot wizard, GNOME will happily ignore it(!)

Above issue

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 for skuid "geoclue" ... packets X bytes X
  • if X is not zero it means that process in geoclue group made output connections...

Disable suspend

Warning! Also GDM login manager will suspend your computer - even if you are not logged in - see discussion on

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.

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.