GNOME
- https://en.wikipedia.org/wiki/GNOME
- https://gitlab.gnome.org/GNOME
- https://www.gnome.org/
- https://handbook.gnome.org/
- https://help.gnome.org
GNOME 3.22 (Fedora 25)
Intro
- GNOME 3 pre svoje fungovanie potrebuje v podstate iba DBus service (sucast freedesktop.org projektu)
- Bola vykonana (zatial este nie uplna) migracia z GConf (GNOME 2) na GSettings (GNOME 3)
dconf(low-level configuration system) is only the GSettings backend. Most applications will not want to interface directly with dconf, but rather with GSettings
- Commandline konfiguracny nastroj
gsettingsv GNOME 3 zamiena predoslygconftool-2z GNOME 2 - Analogicky GUI aplikacia
dconf-editorv GNOME 3 zamiena predoslygconf-editorz GNOME 2 gsettingsnemoze zmenit hodnotu kluca pokial nebezi DBus service (napr. problemy s X-serverom), mozno vsak pouzitdbus-launchutilitu
$ dbus-launch gsettings get org.gnome.desktop.session session-name 'gnome' # default GNOME 3 $ dbus-launch gsettings set org.gnome.desktop.session session-name 'gnome-fallback' # rezim spatnej kompatibility (hardware cannot handle graphics acceleration)
- Kedze este nebola zavrsena plna migracia z Gconf na GSettings, pre plnu konfigurovatelnost GNOME 3 sa moze okrem predurceneho
gsettings(resp. GUI ekvivalentdconf-editor) pouzivat ajgconftool-2(resp. GUIgconf-editor). Pre realny zivot je vsak uz takmer (GNOME > 3.14) plna migracia na GSettings.
Configuration
| GNOME configuration tools | |||
|---|---|---|---|
gnome-control-center |
basic | GUI | Configure GNOME settings |
gnome-tweaks |
advanced | GUI | Graphical interface for advanced GNOME settings |
dconf |
expert | CLI | Tool for manipulating a dconf database |
dconf-editor |
expert | GUI | Graphical editor for gsettings and dconf |
gsettings |
expert | CLI | GSettings configuration tool |
GSettings configuration tool
.gschema.override- zmena defaultu- viac override súborov + poradie NN-<schema> (GLib ich spracúva v lexikografickom poradí, 99 prepisuje vsetko predchadzajuce)
0-foo.gschema.override 50-bar.gschema.override
- gsettings / dconf — zmena konkrétnej hodnoty
- dconf system-wide defaults (cez /etc/ a ptoom sudo dconf update) + moznost lock-nut
ZAVISI od hierarchie databaz
- https://wiki.archlinux.org/title/GDM # see auto-suspend
- https://discussion.fedoraproject.org/t/gnome-suspends-after-15-minutes-of-user-inactivity-even-on-ac-power/79801
- https://src.fedoraproject.org/rpms/fedora-release/blob/rawhide/f/fedora-release.spec
- server with org.gnome.settings-daemon.plugins.power.gschema.override
https://discussion.fedoraproject.org/t/gnome-suspends-after-15-minutes-of-user-inactivity-even-on-ac-power/79801
https://src.fedoraproject.org/rpms/fedora-release/c/6f94a4dbbc29d2725f60d0f844530a63f4122999?branch=rawhide
https://wiki.archlinux.org/title/GDM#GDM_auto-suspend_(GNOME_3.28)
https://help.gnome.org/system-admin-guide/overrides.html GSettings overrides sú určené pre distribúcie/vendorov na úpravu defaultov. dconf overrides sú určené pre system administrátorov. https://help.gnome.org/system-admin-guide/dconf-custom-defaults.html
https://help.gnome.org/system-admin-guide/logout-automatic.html https://help.gnome.org/system-admin-guide/dconf-lockdown.html
musinsky@muke:~$ sudo dconf update /etc/dconf/db/gdm.d: 01-customize-suspend: [org/gnome/desktop/interface/]: clock-format: invalid path: dconf key must not contain two consecutive slashes error: failed to update at least one of the databases OK, takze funguje (ale mam tam preklep, na konci zbytocne '/')
gsettings(1) offers a simple commandline interface to GSettings. Note that gsettings needs a D-Bus session bus connection to write changes to the dconf(1) database.
# example withorg.gnome.desktop.backgroundschema andpicture-optionskey $ gsettings describe org.gnome.desktop.background picture-options Determines how the image set by wallpaper_filename is rendered. Possible values are 'none', 'wallpaper', 'centered', 'scaled', 'stretched', 'zoom', 'spanned'. $ gsettings get org.gnome.desktop.background picture-options 'zoom' $ gsettings set org.gnome.desktop.background picture-options 'none' $ gsettings reset org.gnome.desktop.background picture-options $ gsettings reset-recursively org.gnome.desktop.background $ gsettings list-recursively org.gnome.desktop.background
My personal GNOME customization
$ wget https://raw.githubusercontent.com/musinsky/config/master/GNOME/gnome.sh -O - | bash
! POKRACOVAT !
$ set | grep -i XDG cat /usr/share/glib-2.0/schemas/org.gnome.desktop.background.gschema.xml
https://wiki.archlinux.org/title/GDM#Login_screen_background_image (extractgst.sh)
https://techwiser.com/ubuntu-alt-tab-ungroup/
- 2024-01
$ gsettings set org.gnome.desktop.wm.keybindings switch-windows "['<Alt>Tab']" # default @as [] $ gsettings set org.gnome.desktop.wm.keybindings switch-applications "[]" # ['<Super>Tab', '<Alt>Tab']
$ gsettings reset org.gnome.shell command-history $ gsettings set org.gnome.shell command-history "['gnome-terminal', 'emacs', 'audacious']"
Commandline interface
<gistit user="musinsky" repo="config" file="GNOME/gnome.sh"/>
gsettings list-recursively > gsettings.all gsettings list-recursively org.gnome.desktop.background gsettings reset org.gnome.desktop.interface gtk-enable-primary-paste # Middle Click Paste (true) gsettings reset org.gnome.desktop.peripherals.touchpad disable-while-typing # (true)
GSettings schemas
- At runtime, GSettings looks for schemas in the glib-2.0/schemas/ subdirectories of all directories specified in the
XDG_DATA_DIRSenvironment variable. The usual location to install schema files is /usr/share/glib-2.0/schemas/ - Uzivatel moze pridat svoju directory (napr. ~/.local/share/glib-2.0/schemas/) nastavenim premennej
export XDG_DATA_DIRS=~/.local/share:/usr/share - Ina moznost je specifikovat directory, kde sa ma hladat schema, napr.
gsettings --schemadir ~/.local/share/gnome-shell/extensions/system-monitor@paradoxxx.zero.gmail.com/schemas/ get org.gnome.shell.extensions.system-monitor move-clock
glib-compile-schemaskompiluje vsetky GSettings XML schemas files v jeden binarny file gschemas.compiled, ktory potom cita GSettings
$ ln -s ~/.local/share/gnome-shell/extensions/system-monitor@paradoxxx.zero.gmail.com/schemas/org.gnome.shell.extensions.system-monitor.gschema.xml \ /usr/share/glib-2.0/schemas/ $ glib-compile-schemas /usr/share/glib-2.0/schemas/
gsettings get org.gnome.shell.extensions.system-monitor move-clock
- Jednoducha moznost nastavenia vlastnych default hodnot vytvorenim subora s filename extension .gschema.override
https://docs.gtk.org/gio/class.Settings.html#vendor-overrides
https://unix.stackexchange.com/questions/199836/how-can-i-view-the-content-of-a-backup-of-the-dconf-database-file https://askubuntu.com/questions/363288/how-can-i-read-gsettings-values-from-a-filesystem-backup $ dconf dump / $ dconf dump /org/gnome/desktop/wm/preferences/
Just do dconf watch / and change the icon theme, it will show what dconf prop is changed $ dconf watch /
Windows Management
- Clutter
- Library for creating fast, hardware-accelerated (OpenGL), visually rich graphical user interfaces
- Mutter & Muffin
- Window and compositing managers. Mutter & Muffin combines the Clutter toolkit with solid window-management inherited from the Metacity window manager
- Mutter used as the display core of a larger system such as GNOME Shell or Moblin (default manager for GNOME 3 in Fedora)
- Muffin used as the display core of a larger system such as Cinnamon (non-default in Fedora)
Metacity- Window manager that was used by default in the GNOME 2 desktop. Since Gnome 3.16 metacity themes are no more supported. Mutter no longer uses Metacity themes.
Themes
- Vsetky themes subory sa nachadzaju v /usr/share/themes/<themeName>/, resp. ~/.themes/<themeName>/ directory
- Zmena celej theme, resp. desktop-u (odhliadnuc od icons a cursors), zahrna zmenu dvoch sub-theme:
- Shell theme - themes/<themeName>/gnome-shell/
- uzivatel moze vyberat, menit GNOME Shell theme az po nainstalovani extensions
dnf install gnome-shell-extension-user-theme
- GTK+ Theme - themes/<themeName>/{gtk-2.0,gtk-3.0}/
Current (Window) theme - themes/<themeName>/metacity-1/
- Themes je mozne velmi jedoducho vyberat, menit pomocou
gnome-tweak-toolv menu Appearance - Default theme pre GNOME 3 (a zaroven aj pre Fedora) je Adwaita, rozne ine themes:
Customizing
- Najoptimalnejsi sposob ako menit niektore nastavenia v Shell alebo GTK+ themes je vytvorit kvazi novu theme, ktora je odvodena od povodnej theme. Window theme, resp. Metacity nie je mozne derivovat
- Customizing default Shell theme derived from default gnome-shell.css
$ wget https://raw.githubusercontent.com/musinsky/config/master/GNOME/gnome-shell.css -P /usr/share/themes/Mucha/gnome-shell/
- Customizing default GTK+ theme (Adwaita) derived from default gtk.css
$ wget https://raw.githubusercontent.com/musinsky/config/master/GNOME/gtk.css -P /usr/share/themes/Mucha/gtk-3.0/ $ ln -s /usr/share/themes/Adwaita/gtk-2.0/ /usr/share/themes/Mucha/
- Applying changes
gsettings set org.gnome.shell.extensions.user-theme name 'Mucha' gsettings set org.gnome.desktop.interface gtk-theme 'Mucha'
- https://wiki.archlinux.org/index.php/GNOME
- http://blog.fpmurphy.com/2011/03/customizing-the-gnome-3-shell.html
- http://blog.fpmurphy.com/2011/05/more-gnome-shell-customization.html
- https://github.com/gnome-integration-team/firefox-gnome
- Customizing Adwaita Window (Metacity) theme based on default metacity-theme-3.xml
$ mkdir -p /usr/share/themes/Mucha/metacity-1/ $ cp /usr/share/themes/Adwaita/metacity-1/metacity-theme-3.xml /usr/share/themes/Mucha/metacity-1/
- reduce titlebar height
$ sed -i '/title_vertical_pad/s|value="[0-9]\{1,2\}"|value="2"|g' /usr/share/themes/Mucha/metacity-1/metacity-theme-3.xml
- change titlebar color (in
titlebar_fill_focusedsection)
- change titlebar color (in
$ sed -i 's/gtk:custom(wm_bg_b,gtk:bg\[NORMAL\])/blend\/#000000\/gtk:bg\[NORMAL\]\/0.8/' /usr/share/themes/Mucha/metacity-1/metacity-theme-3.xml
gsettings set org.gnome.desktop.wm.preferences theme 'Mucha' # GNOME 3.16 is DEPRECATED
Power
Pravdepodobne najmenej user friendly (intuitivne) nastavenia. V skutocnosti najnovsi GNOME (a Wayland) nema ziaden screensaver. Pod screensaver mozno rozumiet vypnutie monitora (blank).
- /usr/share/glib-2.0/schemas/org.gnome.desktop.session.gschema.xml
org.gnome.desktop.session idle-delay 300The number of seconds of inactivity before the session is considered idle.
- Po
idle-delaysekundach (0 sekund = nikdy) necinnosti sa vypne monitor (blank), co mozno chapat ako spustenie screensaver. - V GNOME Settings (gnome-control-center) v sekcii Power\Power Saving ako polozky: Automatic Screen Blank a Delay.
- Po
- /usr/share/glib-2.0/schemas/org.gnome.desktop.screensaver.gschema.xml
org.gnome.desktop.screensaver lock-delay 0The number of seconds after screensaver activation before locking the screen.
- Po
lock-delaysekundach (0 sekund = ihned) a potom akoidle-delay(vid vyssie) sa uzamkne obrazovka, t.j. v skutocnosti po sumeidle-delay+lock-delay.
org.gnome.desktop.screensaver lock-enabled trueSet this to TRUE to lock the screen when the screensaver goes active.
- Len v pripade
lock-enabledje mozne uzamknutie obrazovky (kedze unsignedlock-delay = 0znamena ihned a nie nikdy).
- Po
Ak nastavime idle-delay na 0 sekund (na nikdy) tak potom nikdy nenastane ani uzamknutie obrazovky, kedze to nastava az po uplynuti idle-delay. V takom pripade jedina moznost uzamknutia obrazovky je kliknutim v pravom hornom rohu obrazovky na ikonu Lock Screen (resp. cez CLI $ loginctl(1)rpm lock-session).
Zaroven plati, ze ak nastane uzamknutie obrazovky (po uplynuti idle-delay + lock-delay) tak to uzamknutie nastane pri vypnutom monitore (blank), kedze monitor sa vypol v dosledku idle-delay. Po prebudeni, zapnuti monitora (pohybom mysi alebo stlacenim klavesu) vidime uzamknutu obrazovku. Tuto vlasnost umoznuje obist napr. Unblank lock screen GNOME extension.
V pripade necinnosti pri uzamknutej obrazovky sa monitor znova vypne po uplynuti idle-delay.
- /usr/share/glib-2.0/schemas/org.gnome.settings-daemon.plugins.power.gschema.xml
org.gnome.settings-daemon.plugins.power sleep-inactive-ac-timeout 900The amount of time in seconds the computer on AC power needs to be inactive before it goes to sleep. A value of 0 means never.
- Po
sleep-inactive-ac-timeoutsekundach (0 sekund = nikdy) necinnosti prejde pocitac do rezimu sleep. Tento timeout je nezavisly uz od skor spomenutehoidle-delay. - V GNOME Settings (gnome-control-center) v sekcii Power\Power Saving ako polozky: Automatic Suspend a Delay.
org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'suspend'The type of sleeping that should be performed when the computer is inactive.
- Enum
sleep-inactive-ac-type: 'blank', 'suspend', 'shutdown', 'hibernate', 'interactive', 'nothing' or 'logout'.
- Po
V tomto pripade je viac menej vsetko jasne. Okrem nastaveni pre AC power existuju ekvivalentne nastavenia aj pre battery power. Ak nechceme aby sa PC vypinal (AC power), mame dve moznosti:
sleep-inactive-ac-timeoutnastavit hodnotu 0- alebo
sleep-inactive-ac-typenastavit ako 'nothing' alebo asi vhodnejsie 'blank' (vypnut monitor)
GNOME Shell
GNOME Shell je zakladna cast user interface v GNOME 3 (spusta aplikacie, prepina okna a pod.), pouziva Mutter (compositing window manager) a je stale aktivne vyvijane. Moze sa flexibilne upravovat pomocou roznych extensions, ktore jednoducho nacitavaju JavaScript a CSS. Je to nahrada za pred tym pouzivane applets a widgets. Subory s GNOME Shell extensions sa nachadzaju v /usr/share/gnome-shell/extensions/<extName>/, resp. ~/.local/share/gnome‑shell/extensions/<extName>/.
| GNOME Extensions tools | ||
|---|---|---|
| gnome-extensions(1)rpm | CLI | Command line tool for managing GNOME extensions |
| gnome-extensions-app | GUI | Manage GNOME Shell extensions |
| https://extensions.gnome.org/local/ | Web | Find and install GNOME Shell extensions using website |
NOTE gnome-shell-extension-prefs and gnome-shell-extension-tool are deprecated, use gnome-extensions instead.
| ||
$ dnf list gnome-shell-extension\* # available extensions in system (Fedora) $ dnf remove gnome-shell-extension\* # installing extensions from a web browser instead of system packages $ dnf install gnome-browser-connector # GNOME browser integration is required $ gnome-extensions list # installed extensions $ gsettings get org.gnome.shell enabled-extensions # enabled extensions
GNOME Shell Extensions
git clone https://gitlab.gnome.org/GNOME/gnome-shell-extensions.git cd gnome-shell-extensions/ git checkout gnome-50 # set actual version ormainbranch head meson.build # check versionversion: '50.3'./export-zips.sh gnome-extensions install zip-files/apps-menu@gnome-shell-extensions.gcampax.github.com.shell-extension.zip gnome-extensions install zip-files/window-list@gnome-shell-extensions.gcampax.github.com.shell-extension.zip gnome-extensions enable apps-menu@gnome-shell-extensions.gcampax.github.com gnome-extensions enable window-list@gnome-shell-extensions.gcampax.github.com
Other Shell Extensions
SDIR="$HOME/.local/share/gnome-shell/extensions/simple-weather@romanlefler.com/schemas" gsettings --schemadir "$SDIR" reset-recursively org.gnome.shell.extensions.simple-weather gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.simple-weather panel-box 'center' gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.simple-weather show-refresh-button true
EasyScreenCast, Vitals, Frippery Applications Menu, Frippery Bottom Panel
| Developer tools (keyboard command Alt+F2) | |
|---|---|
'lg' |
Looking Glass (GNOME Shell debugger) |
'r' or 'restart' |
restart GNOME Shell (not available on Wayland) |
'rt' |
reload GNOME Shell theme |
'debugexit' |
quit GNOME Shell |
| Manage GNOME Extensions | ||
|---|---|---|
gnome-extensions |
CLI | Command line tool for managing GNOME extensions |
gnome-extensions-app |
GUI | Manage your GNOME Extensions |
| https://extensions.gnome.org/local/ | Web | Find and install GNOME Shell extensions using website |
NOTE gnome-shell-extension-prefs and gnome-shell-extension-tool are deprecated, use gnome-extensions instead.NOTE GNOME Shell browser required $ dnf install gnome-browser-connector.
| ||
- personally prefer installing extensions from a web browser instead of installing system packages
SDIR="$HOME/.local/share/gnome-shell/extensions/system-monitor-next@paradoxxx.zero.gmail.com/schemas/" gsettings --schemadir "$SDIR" reset-recursively org.gnome.shell.extensions.system-monitor-next-applet gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet background '#ffffff16' gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet icon-display false gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet show-tooltip true gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet move-clock false gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet cpu-show-text false gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet cpu-style 'both' gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet cpu-graph-width 80 gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet memory-display false gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet net-show-text false gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet net-style 'graph' gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet disk-usage-style 'bar' gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet thermal-display true gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet thermal-show-text false gsettings --schemadir "$SDIR" set org.gnome.shell.extensions.system-monitor-next-applet thermal-style 'digit'
Screenshots
Z relativne trivialnej zalezitosti sa s pouzitim najnovsieho GNOME v kombinacii s Wayland-om stava problem.
Povodna samostatna aplikacia GNOME Screenshot sa s prichodom GNOME 42 (released 2022-03) meni na built-in utility in GNOME Shell. Samostatna aplikacia gnome-screenshot(1)rpm je sice este distribuovane, ale uz nefunkcna (and archived). Built-in GNOME Screenshots and screencasts sa spusta jednoducho stlacenim PrtSc klavesy. Ponuka tri moznosti: Selection, Screen a Window.
- problem-1 nastava pri Window screenshot, kedy sa zachytava aj transparency shadow effect okolo samotneho window. Nie je to chyba, ale vlastnost Wayland, resp. Mutter, ktory pridava dekoracie, jemny tien, resp. prehladny okraj. Niekedy je to dokonca ziaduci efekt.
$ magick input.png -fuzz 50% -trim +repage output.png # vseobecne odporucane riesenie nie je stale funkcne $ magick input.png -channel A -threshold 50% -trim +repage output.png # -alpha off # -strip # funkcne riesenie pre odstranenie shadow effect (default Adwaita theme)
- problem-2 Window screenshot vzdy vybera iba jedno top-level okno a napr. dialogove alebo about okno ponuka len ako samostatne a nie ako ich composite. Vtedy je potrebne vybrat Selection screenshot a tu nastava problem ako presne vyrezat (crop) window zo selection. Kedze pouzivam jednofarebny desktop background, tak pouzijeme ImageMagick na auto-crop.
$ magick input.png -fuzz 33% -trim +repage output.png # -fuzz udava toleranciu podobnych farieb (jednofarebne pozadie), see [1] and [2]
NOTE Pre potrebnu, vhodnu zmenu velkosti okna pouzivame Screenshot Window Sizer GNOME Shell Extension.
Otestovany (Fedora, GNOME Wayland) Screen capture software:
NEFUNKCNE:
FUNKCNE (vsetky tri aplikacie maju vstavany editor, resp. annotation tool):
- flameshot Qt-based super, ale neviem vybrat potrebne window, len screen resp. selection cez vstavany editor (annotation tool).
- shutter Gtk3 in Perl, OK, pod Wayland limitovane moznosti, len screen resp. selection cez vstavany editor (annotation tool).
- ksnip Qt-based ale pod Wayland len screen resp. selection cez vstavany editor (annotation tool).