Add configuration for GNOME

This commit is contained in:
Alexander Hess 2026-08-03 14:30:55 +02:00
commit 7804080953
Signed by: alexander
GPG key ID: B46EDB4DFC26805D
47 changed files with 6899 additions and 0 deletions

View file

@ -0,0 +1,60 @@
# GNOME Settings
This folder contains my GNOME settings
split into several `*.ini` files by logical group.
Machine-specific overrides may live in `local/*.ini` and are loaded last.
See this [README.md](./local/README.md) for details and examples.
All paths inside the files are absolute,
anchored at the root of `dconf`.
Therefore, they must always be loaded anchored at the root as well.
The files are machine independent and use `/home/user` as a placeholder,
which must be rewritten to the real home directory before loading:
```bash
sed "s|/home/user|$HOME|g" <file> | dconf load /
```
[`gnome-restore`](../../.local/bin/gnome-restore) automates this upon every login
(via the `gnome-restore.service` systemd user unit).
Process:
1. Back up the current `dconf` state into ~/.local/state/gnome-settings-backups/
2. On a fresh session, remove the temporary background state
written by [`randomize-background`](../../.local/bin/randomize-background)
3. Reset all managed sub-trees,
so that keys removed from the `*.ini` files do not linger in the live state
4. Patch a broken backup path in the installed `forge` extension (`theme.js`)
5. Ensure the enabled GNOME extensions' schemas are imported
6. Load every `*.ini` here, then every `local/*.ini`
7. Apply a small [patch](../../.local/bin/gnome-shell-extension-forge-patch)
to the `forge` extension to draw borders on unfocused windows
[`dconf-load`](../../.local/bin/dconf-load) captures step 6 as an independent utility,
or for just one file given as an argument,
which is handy while iterating on a single `*.ini`:
```bash
dconf-load key-bindings.ini
```
It neither backs up nor resets anything,
so keys removed from the `*.ini` files stay active until the next `gnome-restore`.
Its purpose is to help during development of the `*.ini` files.
[`dconf-verify`](../../.local/bin/dconf-verify) lists keys diverging
between the live state and the `*.ini` files,
and can be used to find live keys worth adopting.
## Color Palette
`COLORS.md` is an untracked, human-readable overview of the palette,
written by [`color-palette`](../../.local/bin/color-palette).