Watch
1
0
Fork
You've already forked dotfiles
0

Add configuration for GNOME

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

View file

@ -0,0 +1,50 @@
# Global exclude patterns
*~
~$*
.~lock.*
~*.tmp
]*.~*
]Icon\r*
].DS_Store
].ds_store
*.textClipping
._*
]Thumbs.db
]photothumb.db
System Volume Information
.*.sw?
.*.*sw?
].TemporaryItems
].Trashes
].DocumentRevisions-V100
].Trash-*
.fseventd
.apdisk
.Spotlight-V100
.directory
*.part
*.filepart
*.crdownload
*.kate-swp
*.gnucash.tmp-*
.synkron.*
.sync.ffs_db
.symform
.symform-store
.fuse_hidden*
*.unison
.nfs*
# syncthing
.stfolder
.stignore
.stversions
*.sb-*

View file

@ -0,0 +1,128 @@
{
"overrides": [
{
"wmClass": "org.gnome.Shell.Extensions",
"wmTitle": "Forge Settings",
"mode": "float"
},
{
"wmClass": "jetbrains-toolbox",
"mode": "float"
},
{
"wmClass": "jetbrains-goland",
"wmTitle": "splash",
"mode": "float"
},
{
"wmClass": "jetbrains-webstorm",
"wmTitle": "splash",
"mode": "float"
},
{
"wmClass": "jetbrains-phpstorm",
"wmTitle": "splash",
"mode": "float"
},
{
"wmClass": "jetbrains-datagrip",
"wmTitle": "splash",
"mode": "float"
},
{
"wmClass": "jetbrains-rubymine",
"wmTitle": "splash",
"mode": "float"
},
{
"wmClass": "jetbrains-idea",
"wmTitle": "splash",
"mode": "float"
},
{
"wmClass": "com.github.amezin.ddterm",
"mode": "float"
},
{
"wmClass": "com.github.donadigo.eddy",
"mode": "float"
},
{
"wmClass": "Conky",
"mode": "float"
},
{
"wmClass": "Gnome-initial-setup",
"mode": "float"
},
{
"wmClass": "org.gnome.Calculator",
"mode": "float"
},
{
"wmClass": "gnome-terminal-server",
"wmTitle": "Preferences General",
"mode": "float"
},
{
"wmClass": "gnome-terminal-preferences",
"mode": "float"
},
{
"wmClass": "Guake",
"mode": "float"
},
{
"wmClass": "zoom",
"mode": "float"
},
{
"wmClass": "firefox",
"wmTitle": "About Mozilla Firefox",
"mode": "float"
},
{
"wmClass": "firefox",
"wmTitle": "!Mozilla Firefox",
"mode": "float"
},
{
"wmClass": "org.mozilla.firefox.desktop",
"wmTitle": "About Mozilla Firefox",
"mode": "float"
},
{
"wmClass": "org.mozilla.firefox.desktop",
"wmTitle": "!Mozilla Firefox",
"mode": "float"
},
{
"wmClass": "thunderbird",
"wmTitle": "About Mozilla Thunderbird",
"mode": "float"
},
{
"wmClass": "thunderbird",
"wmTitle": "!Mozilla Thunderbird",
"mode": "float"
},
{
"wmClass": "org.mozilla.Thunderbird.desktop",
"wmTitle": "About Mozilla Thunderbird",
"mode": "float"
},
{
"wmClass": "org.mozilla.Thunderbird.desktop",
"wmTitle": "!Mozilla Thunderbird",
"mode": "float"
},
{
"wmClass": "evolution-alarm-notify",
"mode": "float"
},
{
"wmClass": "variety",
"mode": "float"
}
]
}

View file

@ -0,0 +1,125 @@
.window-unfocused-border {
border-width: 3px;
border-color: rgb(174, 214, 222);
border-style: solid;
border-radius: 12px;
}
.tiled {
color: rgb(222, 237, 241);
opacity: 1;
border-width: 3px;
}
.split {
color: rgb(33, 144, 164);
opacity: 1;
border-width: 3px;
}
.stacked {
color: rgb(2, 131, 151);
opacity: 1;
border-width: 3px;
}
.tabbed {
color: rgb(2, 131, 151);
opacity: 1;
border-width: 3px;
}
.floated {
color: rgb(2, 131, 151);
border-width: 3px;
opacity: 1;
}
.window-tiled-border {
border-width: 4px;
border-color: rgb(222, 237, 241);
border-style: solid;
border-radius: 12px;
}
.window-split-border {
border-width: 4px;
border-color: rgb(33, 144, 164);
border-style: solid;
border-radius: 12px;
}
.window-split-horizontal {
border-left-width: 0;
border-top-width: 0;
border-bottom-width: 0;
}
.window-split-vertical {
border-left-width: 0;
border-top-width: 0;
border-right-width: 0;
}
.window-stacked-border {
border-width: 3px;
border-color: rgb(2, 131, 151);
border-style: solid;
border-radius: 12px;
}
.window-tabbed-border {
border-width: 3px;
border-color: rgb(2, 131, 151);
border-style: solid;
border-radius: 12px;
}
.window-tabbed-bg {
border-radius: 8px;
}
.window-tabbed-tab {
background-color: rgb(10, 98, 113);
border-color: rgba(10, 98, 113, 0.6);
border-width: 1px;
border-radius: 8px;
color: rgb(174, 214, 222);
margin: 1px;
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
}
.window-tabbed-tab-active {
background-color: rgb(2, 131, 151);
color: rgb(222, 237, 241);
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.2);
}
.window-tabbed-tab-close {
padding: 3px;
margin: 4px;
border-radius: 12px;
width: 12px;
background-color: rgb(8, 110, 127);
}
.window-tabbed-tab-icon {
margin: 3px;
}
.window-floated-border {
border-width: 4px;
border-color: rgb(2, 131, 151);
border-style: solid;
border-radius: 12px;
}
.window-tilepreview-tiled {
border-width: 1px;
border-color: rgba(33, 144, 164, 0.4);
border-style: solid;
border-radius: 12px;
background-color: rgba(33, 144, 164, 0.3);
}
.window-tilepreview-stacked {
border-width: 1px;
border-color: rgba(2, 131, 151, 0.4);
border-style: solid;
border-radius: 12px;
background-color: rgba(2, 131, 151, 0.3);
}
.window-tilepreview-swap {
border-width: 1px;
border-color: rgba(124, 189, 203, 0.4);
border-style: solid;
border-radius: 12px;
background-color: rgba(124, 189, 203, 0.4);
}
.window-tilepreview-tabbed {
border-width: 1px;
border-color: rgba(2, 131, 151, 0.4);
border-style: solid;
border-radius: 12px;
}

View file

@ -0,0 +1,64 @@
# 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.
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:
```bash
dconf load / < <file>
```
[`restore-gnome`](../../.local/bin/restore-gnome) automates this upon every login
(via the `restore-gnome.service` systemd user unit).
Process:
1. Back up the current `dconf` state into ~/.local/state/gnome-settings-backups/
2. Reset all managed sub-trees,
so that keys removed from the `*.ini` files do not linger in the live state,
and
3. Load every `*.ini` here, then every `local/*.ini`.
[`verify-dconf`](../../.local/bin/verify-dconf) lists keys diverging
between the live state and the `*.ini` files,
and can be used to find live keys worth adopting.
## Color Palette
A teal ramp from light to dark,
plus two neutral tones for the shell chrome.
Translucent colors are always alpha-variants of a stop,
used for `forge`'s tile previews and tab decorations.
| Stop | Hex | RGB | Role |
|------|-----------|--------------------|----------------------------------------------|
| 1 | `#DEEDF1` | rgb(222, 237, 241) | Foreground and text, focused borders |
| 2 | `#AED6DE` | rgb(174, 214, 222) | Quiet chrome: bar and unfocused windows |
| 3 | `#7CBDCB` | rgb(124, 189, 203) | Tile previews |
| 4 | `#4AA4B6` | rgb( 74, 164, 182) | Borders of active elements |
| 5 | `#2190A4` | rgb( 33, 144, 164) | Accent |
| 6 | `#028397` | rgb( 2, 131, 151) | Stacked and tabbed layout, floated windows |
| 7 | `#067A8D` | rgb( 6, 122, 141) | Openbar Highlights |
| 8 | `#086E7F` | rgb( 8, 110, 127) | Tab decorations |
| 9 | `#0A6271` | rgb( 10, 98, 113) | Dimmed backgrounds (e.g., inactive tabs) |
| 0 | `#054A55` | rgb( 5, 74, 85) | Dark base: terminal and sub-menu backgrounds |
| gray | `#2E2E32` | rgb( 46, 46, 50) | Surfaces: bar and menu backgrounds |
| base | `#000000` | rgb( 0, 0, 0) | Screensaver, shadows |
Stop 5 is GNOME's default "teal" color,
which is one of nine built-in colors that cannot be changed.
"gray" is GNOME's dark surface gray.

View file

@ -0,0 +1,404 @@
# Settings for various desktop apps
# Note that configurations for apps no longer in use
# or not yet installed are dragged along here on purpose
[ca/desrt/dconf-editor]
show-warning=false
bookmarks=['/org/gnome/shell/extensions/']
behaviour='safe'
refresh-settings-schema-source=true
small-bookmarks-rows=true
# Always start at dconf's root
restore-view=false
saved-pathbar-path='/'
saved-view='/'
[org/gnome/baobab]
[org/gnome/baobab/ui]
active-chart='rings'
[org/gnome/calculator]
accuracy=12
angle-units='degrees'
base=10
button-mode='basic'
number-format='fixed'
# For exchange rates
refresh-interval=86400
show-thousands=true
show-zeroes=true
source-currency='EUR'
target-currency='USD'
source-units='degree'
target-units='radian'
window-maximized=false
[org/gnome/calendar]
active-view='week'
weather-settings=(true, true, '', @mv nothing)
window-maximized=false
[org/gnome/Characters]
[org/gnome/clocks]
geolocation=true
# Keep in sync with "locations" in [org/gnome/shell/world-clocks]
world-clocks=[{'location': <(uint32 2, <('Phoenix', 'KPHX', true, [(0.58353629681163499, -1.955660817467636)], [(0.58378430809834336, -1.9560609516519483)])>)>}, {'location': <(uint32 2, <('New York', 'KNYC', true, [(0.71180344078725644, -1.2909618758762367)], [(0.71059804659265924, -1.2916478949920254)])>)>}, {'location': <(uint32 2, <('UTC', 'BIRK', true, [(1.1216380205691279, -0.38222710618675809)], [(1.1195629471197465, -0.38251373858977449)])>)>}, {'location': <(uint32 2, <('London', 'EGLL', true, [(0.89845190959903677, -0.0080529408042633736)], [(0.89899290734596930, -0.0021946055346929697)])>)>}, {'location': <(uint32 2, <('Berlin', 'EDDB', true, [(0.91426163401859872, 0.23591034304566436)], [(0.91658875132345297, 0.23387411976724018)])>)>}]
[org/gnome/clocks/state/window]
maximized=false
panel-id='world'
[org/gnome/Connections]
first-run=false
[org/gnome/Contacts]
did-initial-setup=true
sort-on-surname=false
window-fullscreen=false
window-maximized=false
[org/gnome/control-center]
last-panel='system'
[org/gnome/Disks]
[org/gnome/evince]
auto-reload=true
allow-links-change-zoom=false
# Default search path when opening a document
document-directory=@ms nothing
# Last location to save extracted images to
pictures-directory=@ms nothing
# Ignore a PDF's own copy/print prohibitions
override-restrictions=true
# We know what F7 does
show-caret-navigation-message=false
# Make scrolling larger PDFs smoother
page-cache-size=uint32 512
[org/gnome/evince/default]
continuous=true
dual-page=false
dual-page-odd-left=false
enable-spellchecking=true
fullscreen=false
inverted-colors=false
show-sidebar=false
sidebar-size=128
sizing-mode='automatic'
zoom=1.0
[org/gnome/gedit]
[org/gnome/gedit/plugins/filebrowser]
tree-view=true
[org/gnome/gedit/preferences/ui]
show-tabs-mode='auto'
[org/gnome/gnome-system-monitor]
cpu-smooth-graph=true
cpu-stacked-area-chart=false
disks-interval=1000
graph-update-interval=250
network-in-bits=true
maximized=false
show-all-fs=true
show-dependencies=false
show-whose-processes='user'
update-interval=1000
[org/gnome/Loupe]
# Show the image properties sidebar
show-properties=true
[org/gnome/maps]
map-type='MapsVectorSource'
last-viewed-location=[49.616891519885499, 9.1811720200844604]
zoom-level=13
show-scale=true
transportation-type='car'
[org/gnome/nautilus]
[org/gnome/nautilus/compression]
default-compression-format='zip'
[org/gnome/nautilus/icon-view]
captions=['size', 'none', 'none']
default-zoom-level='large'
[org/gnome/nautilus/list-view]
default-column-order=['name', 'size', 'type', 'owner', 'group', 'permissions', 'where', 'date_modified', 'date_modified_with_time', 'date_accessed', 'recency', 'starred', 'detailed_type']
default-visible-columns=['name', 'size', 'date_modified', 'starred']
default-zoom-level='small'
use-tree-view=true
[org/gnome/nautilus/preferences]
migrated-gtk-settings=true
always-use-location-entry=true
default-folder-viewer='list-view'
search-filter-time-type='last_modified'
show-create-link=false
show-delete-permanently=true
[org/gnome/software]
allow-updates=false
download-updates=false
download-updates-notify=false
enable-repos-dialog=true
show-only-free-apps=false
# `flatpak` authors must be verified
show-only-verified-apps=true
prompt-for-nonfree=false
show-nonfree-ui=true
installed-page-show-size=true
first-run=false
[org/gnome/terminal]
[org/gnome/terminal/legacy]
confirm-close=false
# [org/gnome/terminal/legacy/keybindings]
# See ~/.config/gnome-settings/key-bindings.ini for the key bindings
[org/gnome/terminal/legacy/profiles:]
default='b1dcc9dd-5262-4d8d-a863-c897e6d979b9'
list=['b1dcc9dd-5262-4d8d-a863-c897e6d979b9']
[org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9]
visible-name='Default Profile'
use-custom-command=true
custom-command='/usr/bin/bash'
login-shell=false
audible-bell=false
use-theme-colors=true
# Fallback values for when theme coloring is turned off
background-color='rgb(5,74,85)'
foreground-color='rgb(222,237,241)'
bold-is-bright=true
[org/gnome/TextEditor]
style-scheme='builder'
use-system-font=false
custom-font='FiraCode Nerd Font 11'
discover-settings=true
highlight-current-line=true
auto-indent=true
indent-style='space'
tab-width=4
wrap-text=false
last-save-directory='file:///home/user'
show-grid=true
show-line-numbers=true
show-map=true
show-right-margin=false
spellcheck=true
restore-session=false
[org/gnome/tweaks]
show-extensions-notice=false
[org/gnome/Weather]
# Keep in sync with "locations" in [org/gnome/shell/weather]
locations=[<(uint32 2, <('Berlin', 'EDDB', true, [(0.91426163401859872, 0.23591034304566436)], [(0.91658875132345297, 0.23387411976724018)])>)>, <(uint32 2, <('Heidelberg', 'EDFM', true, [(0.86345801419289459, 0.14862448983795826)], [(0.86238428763706787, 0.1517127801361921)])>)>, <(uint32 2, <('London', 'EGLL', true, [(0.89845190959903677, -0.0080529408042633736)], [(0.89899290734596930, -0.0021946055346929697)])>)>, <(uint32 2, <('New York', 'KNYC', true, [(0.71180344078725644, -1.2909618758762367)], [(0.71059804659265924, -1.2916478949920254)])>)>, <(uint32 2, <('Phoenix', 'KPHX', true, [(0.58353629681163499, -1.955660817467636)], [(0.58378430809834336, -1.9560609516519483)])>)>]
[org/gnome/GWeather4]
default-location=('Heidelberg', 'EDFM', @m(dd) nothing)
distance-unit='meters'
pressure-unit='hpa'
speed-unit='kph'
temperature-unit='celsius'
# [org/gtk/*/settings/file-chooser]
# This is the "GTK file-chooser dialog"
[org/gtk/gtk4/settings/file-chooser]
# Keep in sync with [org/gtk/settings/file-chooser]
date-format='regular'
location-mode='path-bar'
show-hidden=false
show-size-column=true
show-type-column=true
sort-column='name'
sort-directories-first=true
sort-order='ascending'
type-format='category'
[org/gtk/settings/file-chooser]
# Keep in sync with [org/gtk/gtk4/settings/file-chooser]
date-format='regular'
location-mode='path-bar'
show-hidden=false
show-size-column=true
show-type-column=true
sort-column='name'
sort-directories-first=true
sort-order='ascending'
type-format='category'

View file

@ -0,0 +1,485 @@
# Unify all key bindings to conveniently keep them consistent
# Target: `i3wm` defaults are the spec
# => We make GNOME/forge bend to match
# Modifier layers (with exceptions):
#
# <Control> + ... Reserved for in-app shortcuts,
# <Control><Shift> + ... e.g., `gnome-terminal`
#
# <Control><Alt> + ... Primary system layer:
# media, devices, session, power, and some more
#
# <Alt><Shift> + ... Secondary system layer:
# lights, brightness, and overflow from primary
#
# <Super> + ... Navigate windows and workspaces
# and very few extras
#
# <Super><Shift> + ... Move windows within or to another workspace
#
# <Super><Control> + ... Swap windows (GNOME/forge only)
#
# <Super><Alt> + ... Grow windows
# <Super><Alt><Shift> + ... Shrink windows
#
# F1-F12 Deliberately not bound globally
# (Exceptions: F11 for fullscreen and <Alt>F4)
[org/gnome/desktop/wm/keybindings]
activate-window-menu=@as []
always-on-top=@as []
# <Super><Shift>q is i3wm's default
close=['<Super>q', '<Super><Shift>q', '<Alt>F4']
toggle-fullscreen=['<Super>f', 'F11']
toggle-maximized=['<Super>m', '<Super><Shift>f']
maximize=@as []
unmaximize=@as []
minimize=@as []
switch-applications=@as []
switch-applications-backward=@as []
switch-input-source=@as []
switch-input-source-backward=@as []
switch-group=@as []
switch-group-backward=@as []
switch-panels=@as []
switch-panels-backward=@as []
cycle-group=@as []
cycle-group-backward=@as []
cycle-panels=@as []
cycle-panels-backward=@as []
cycle-windows=['<Alt>Tab']
cycle-windows-backward=['<Alt><Shift>Tab']
begin-move=@as []
begin-resize=@as []
# The following could also be populated automatically
# in [org/gnome/shell/extensions/space-bar/shortcuts]
switch-to-workspace-1=['<Super>1']
switch-to-workspace-2=['<Super>2']
switch-to-workspace-3=['<Super>3']
switch-to-workspace-4=['<Super>4']
switch-to-workspace-5=['<Super>5']
switch-to-workspace-6=['<Super>6']
switch-to-workspace-7=['<Super>7']
switch-to-workspace-8=['<Super>8']
switch-to-workspace-9=['<Super>9']
switch-to-workspace-10=['<Super>0']
switch-to-workspace-last=@as []
switch-to-workspace-up=@as []
switch-to-workspace-down=@as []
switch-to-workspace-left=['<Super>comma']
# In [org/freedesktop/ibus/panel/emoji], "hotkey" must be "@as []"
# to turn GNOME's Emoji picker off, which also uses <Super>period
switch-to-workspace-right=['<Super>period']
# The following could also be populated automatically
# in [org/gnome/shell/extensions/space-bar/shortcuts]
move-to-workspace-1=['<Super><Shift>1']
move-to-workspace-2=['<Super><Shift>2']
move-to-workspace-3=['<Super><Shift>3']
move-to-workspace-4=['<Super><Shift>4']
move-to-workspace-5=['<Super><Shift>5']
move-to-workspace-6=['<Super><Shift>6']
move-to-workspace-7=['<Super><Shift>7']
move-to-workspace-8=['<Super><Shift>8']
move-to-workspace-9=['<Super><Shift>9']
move-to-workspace-10=['<Super><Shift>0']
move-to-workspace-last=@as []
move-to-workspace-up=@as []
move-to-workspace-down=@as []
move-to-workspace-left=['<Super><Shift>comma']
move-to-workspace-right=['<Super><Shift>period']
move-to-monitor-up=@as []
move-to-monitor-down=@as []
move-to-monitor-left=@as []
move-to-monitor-right=@as []
[org/gnome/mutter/keybindings]
cancel-input-capture=@as []
# We must set the XF86 key here explicitly
# because by default <Super>p is also bound with it
# and we want to disable this
switch-monitor=['XF86Display']
toggle-tiled-left=@as []
toggle-tiled-right=@as []
[org/gnome/settings-daemon/plugins/media-keys]
search=['<Super>slash']
calculator=@as []
control-center=@as []
email=@as []
help=@as []
home=@as []
media=@as []
www=@as []
# Session & Power related
screensaver=['<Control><Alt>l']
logout=['<Control><Alt>BackSpace', '<Control><Alt>Delete']
suspend=['<Control><Alt>Escape']
hibernate=@as []
reboot=['<Control><Alt>Home']
power=@as []
shutdown=['<Control><Alt>End']
# Devices
battery-status=['<Control><Alt>e']
touchpad-toggle=['<Control><Alt>i']
touchpad-on=@as []
touchpad-off=@as []
# "Airplane mode"
rfkill=['<Control><Alt>w']
rfkill-bluetooth=['<Control><Alt>b']
# Audio related
play=['<Control><Alt>space']
pause=@as []
stop=@as []
eject=@as []
next=['<Control><Alt>Right']
previous=['<Control><Alt>Left']
playback-forward=['<Control><Alt>period']
playback-rewind=['<Control><Alt>comma']
playback-random=@as []
playback-repeat=@as []
volume-up=['<Control><Alt>Up']
volume-up-precise=@as []
volume-up-quiet=@as []
volume-down=['<Control><Alt>Down']
volume-down-precise=@as []
volume-down-quiet=@as []
volume-mute=['<Control><Alt>m']
volume-mute-quiet=@as []
mic-mute=['<Alt><Shift>m']
# Screen and light related
# "Auto rotate"
rotate-video-lock=@as []
toggle-contrast=@as []
screen-brightness-up=['<Alt><Shift>Up']
screen-brightness-down=['<Alt><Shift>Down']
screen-brightness-cycle=@as []
magnifier=@as []
magnifier-zoom-in=@as []
magnifier-zoom-out=@as []
decrease-text-size=@as []
increase-text-size=@as []
screenreader=@as []
on-screen-keyboard=@as []
keyboard-brightness-up=['<Alt><Shift>bracketright']
keyboard-brightness-down=['<Alt><Shift>bracketleft']
keyboard-brightness-toggle=['<Alt><Shift>backslash']
# Non-default GNOME bindings
custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/list_windows/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/dark_theme_toggle/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_force/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_toggle/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_warmer/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_cooler/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/randomize_background/']
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/list_windows]
binding='<Super>Tab'
command='rofi -show window'
name='Windows'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_1]
binding='<Super>space'
command='rofi -show drun'
name='Launcher [1/2]'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/show_launcher_2]
# i3wm's default
binding='<Super>d'
command='rofi -show drun'
name='Launcher [2/2]'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_1]
# i3wm's default, used for our primary terminal with `zsh`
binding='<Super>Return'
command='/usr/bin/alacritty'
name='Alacritty [1/2]'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_primary_terminal_2]
binding='<Control><Alt>Return'
command='/usr/bin/alacritty'
name='Alacritty [2/2]'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_1]
# Our secondary terminal with `bash`
binding='<Super>t'
command='/usr/bin/gnome-terminal'
name='GNOME Terminal [1/2]'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/launch_secondary_terminal_2]
# GNOME's actual default, used for our secondary terminal with `bash`
binding='<Control><Alt>t'
command='/usr/bin/gnome-terminal'
name='GNOME Terminal [2/2]'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/dark_theme_toggle]
binding='<Control><Alt>d'
command='/home/user/.local/bin/dark-theme-toggle'
name='Color Scheme: Toggle dark vs. light'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_force]
binding='<Control><Alt>n'
command='/home/user/.local/bin/night-light-toggle-schedule'
name='Night Light: Force the feature on right now, or back to automatic schedule'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_toggle]
binding='<Alt><Shift>n'
command='/home/user/.local/bin/night-light-toggle-enabled'
name='Night Light: Enable the feature, or disable it'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_warmer]
binding='<Alt><Shift>Right'
command='/home/user/.local/bin/night-light-make-warmer'
name='Night Light: Make screen warmer'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/night_light_make_cooler]
binding='<Alt><Shift>Left'
command='/home/user/.local/bin/night-light-make-cooler'
name='Night Light: Make screen cooler'
[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/randomize_background]
binding='<Alt><Shift>b'
command='/home/user/.local/bin/randomize-background'
name='Background: Pick a random wallpaper from the cloud'
[org/gnome/shell/keybindings]
toggle-application-view=['<Control><Alt>a']
toggle-message-tray=['<Control><Alt>slash']
toggle-overview=@as []
toggle-quick-settings=['<Control><Alt>backslash']
# To take fast screenshots without manual selection first
# as opposed to the simple 'Print' below
screenshot=['<Shift>Print']
screenshot-window=['<Alt>Print']
# Manually select what to screenshot ...
show-screenshot-ui=['Print', '<Control><Alt>p', '<Control><Alt>s']
# ... or what to record
show-screen-recording-ui=['<Control><Alt>r']
focus-active-notification=@as []
# The defaults would collide with forge's "window-resize-*" on <Super><Alt> + Up/Down
shift-overview-up=@as []
shift-overview-down=@as []
# Disable GNOME's default behavior of opening "favorite" apps
# with <Super>1-10 and instead switch workspaces
switch-to-application-1=@as []
switch-to-application-2=@as []
switch-to-application-3=@as []
switch-to-application-4=@as []
switch-to-application-5=@as []
switch-to-application-6=@as []
switch-to-application-7=@as []
switch-to-application-8=@as []
switch-to-application-9=@as []
# `switch-to-application-10=@as []` does not exist by default
open-new-window-application-1=@as []
open-new-window-application-2=@as []
open-new-window-application-3=@as []
open-new-window-application-4=@as []
open-new-window-application-5=@as []
open-new-window-application-6=@as []
open-new-window-application-7=@as []
open-new-window-application-8=@as []
open-new-window-application-9=@as []
[org/gnome/shell/extensions/forge/keybindings]
prefs-open=@as []
# Allow tiling via drag-and-drop with the mouse
mod-mask-mouse-tile='None'
focus-border-toggle=@as []
prefs-tiling-toggle=@as []
window-gap-size-decrease=@as []
window-gap-size-increase=@as []
workspace-active-tile-toggle=['<Super><Shift>y']
window-toggle-float=['<Super><Shift>space']
window-toggle-always-float=@as []
window-focus-up=['<Super>k', '<Super>Up']
window-focus-down=['<Super>j', '<Super>Down']
window-focus-left=['<Super>h', '<Super>Left']
window-focus-right=['<Super>l', '<Super>Right']
window-move-up=['<Super><Shift>k', '<Super><Shift>Up']
window-move-down=['<Super><Shift>j', '<Super><Shift>Down']
window-move-left=['<Super><Shift>h', '<Super><Shift>Left']
window-move-right=['<Super><Shift>l', '<Super><Shift>Right']
window-swap-up=['<Super><Control>k', '<Super><Control>Up']
window-swap-down=['<Super><Control>j', '<Super><Control>Down']
window-swap-left=['<Super><Control>h', '<Super><Control>Left']
window-swap-right=['<Super><Control>l', '<Super><Control>Right']
window-swap-last-active=['<Super><Control>Return']
# <Super><Alt> + hjkl pushes an edge outward (i.e., "grow")
# while <Super><Alt><Shift> + hjkl pulls the opposite edge inward (i.e., "shrink")
window-resize-top-increase=['<Super><Alt>k', '<Super><Alt>Up']
window-resize-top-decrease=['<Super><Alt><Shift>j', '<Super><Alt><Shift>Down']
window-resize-bottom-increase=['<Super><Alt>j', '<Super><Alt>Down']
window-resize-bottom-decrease=['<Super><Alt><Shift>k', '<Super><Alt><Shift>Up']
window-resize-left-increase=['<Super><Alt>h', '<Super><Alt>Left']
window-resize-left-decrease=['<Super><Alt><Shift>l', '<Super><Alt><Shift>Right']
window-resize-right-increase=['<Super><Alt>l', '<Super><Alt>Right']
window-resize-right-decrease=['<Super><Alt><Shift>h', '<Super><Alt><Shift>Left']
window-snap-center=@as []
window-snap-one-third-left=@as []
window-snap-one-third-right=@as []
window-snap-two-third-left=@as []
window-snap-two-third-right=@as []
# Split direction is the container's axis, not the divider drawn
# - b => "beside"/"horizontal" => new window opens "beside", to the right
# - v => "vertical" => new window opens below
con-split-horizontal=['<Super>b']
con-split-vertical=['<Super>v']
con-split-layout-toggle=['<Super>e']
con-stacked-layout-toggle=['<Super>s']
con-tabbed-layout-toggle=['<Super>w']
con-tabbed-showtab-decoration-toggle=@as []
[org/gnome/shell/extensions/nightthemeswitcher/time]
# This extension is not in use any more and its config kept as archive
# nightthemeswitcher-ondemand-keybinding=['<Control><Alt>d']
[org/gnome/shell/extensions/project-hamster]
# This extension is not in use any more and its config kept as archive
# show-hamster-dropdown=['<Control><Alt>h']
[org/gnome/shell/extensions/space-bar/shortcuts]
# We use the `switch-to-workspace-N`s in [org/gnome/desktop/wm/keybindings]
enable-activate-workspace-shortcuts=false
# We use the `move-to-workspace-N`s in [org/gnome/desktop/wm/keybindings]
enable-move-to-workspace-shortcuts=false
# Jump back to the previous workspace,
# also allowing toggling between two workspaces
# (Note that "grave" is the formal word for "backtick")
activate-previous-key=['<Super>grave']
# Jump to the next empty workspace
activate-empty-key=['<Super>n']
# Use the mouse to move to the previous workspace
# by clicking on the current one (again)
back-and-forth=false
move-workspace-left=@as []
move-workspace-right=@as []
# Preferences window
open-menu=@as []
[org/gnome/terminal/legacy/keybindings]
close-tab='<Control>w'
close-window='<Control>q'
find='<Control>f'
find-clear='<Control><Shift>f'
find-next='<Control>g'
find-previous='<Control><Shift>g'
new-tab='<Control>t'
new-window='<Control>n'
# "equal" because it is below "plus" on a US keyboard
zoom-in='<Control>equal'
zoom-out='<Control>minus'
# To avoid conflict with "switch-to-workspace-right" in [org/gnome/desktop/wm/keybindings]
[org/freedesktop/ibus/panel/emoji]
hotkey=@as []

View file

@ -0,0 +1,2 @@
This folder is reserved for local (i.e., machine specific) `dconf` settings
that are loaded after the default settings were loaded.

View file

@ -0,0 +1,486 @@
# Various other settings
[org/freedesktop/tracker/miner/files]
# This is the `localsearch` indexing service
index-recursive-directories=['/home/user/Cloud']
index-single-directories=['&DOWNLOAD']
[org/gnome/desktop/a11y]
# Caret browsing for read-only text and GTK3 only
always-show-text-caret=false
# Show the "Universal Access" icon even when no feature is active
always-show-universal-access-status=false
[org/gnome/desktop/a11y/applications]
# Touchscreen keyboard
screen-keyboard-enabled=false
# Master switch for [org/gnome/desktop/a11y/magnifier] below
screen-magnifier-enabled=false
# Disable `orca`
screen-reader-enabled=false
[org/gnome/desktop/a11y/interface]
# Replace the GTK theme,
# overriding our "color-scheme" in [org/gnome/desktop/interface]
high-contrast=false
# Adds a glyph inside toggle switches, for color blindness
show-status-shapes=false
[org/gnome/desktop/a11y/keyboard]
enable=false
# Latch modifiers instead of holding them
stickykeys-enable=false
# Only accept keys held for "slowkeys-delay" ms
slowkeys-enable=false
# Ignore a repeat of the same key within bouncekeys-delay ms
bouncekeys-enable=false
# Move the pointer with the numeric keypad
# (Collides with "numlock-state" in [org/gnome/desktop/peripherals/keyboard])
mousekeys-enable=false
# Beep when Caps/Num/Scroll Lock are toggled
togglekeys-enable=false
# [org/gnome/desktop/a11y/magnifier]
# Inert because "screen-magnifier-enabled" above is false
[org/gnome/desktop/a11y/mouse]
# Click by resting the pointer for "dwell-time" seconds
dwell-click-enabled=false
# Hold the left button for "secondary-click-time" seconds to right-click
secondary-click-enabled=false
[org/gnome/desktop/app-folders]
folder-children=@as []
[org/gnome/desktop/background]
color-shading-type='solid'
# Keep "picture-uri"s in sync with [org/gnome/desktop/screensaver] below
picture-options='zoom'
picture-uri-dark='file:///home/user/.local/share/backgrounds/dark.jpg'
picture-uri='file:///home/user/.local/share/backgrounds/light.jpg'
primary-color='#054A55'
secondary-color='#054A55'
[org/gnome/desktop/break-reminders]
# We keep the settings below as defaults
# for when we re-enable the feature again
selected-breaks=@as []
[org/gnome/desktop/break-reminders/eyesight]
# The 20-20-20 rule: every 20 minutes, look away for 20 seconds
countdown=false
delay-seconds=uint32 180
duration-seconds=uint32 20
interval-seconds=uint32 1200
fade-screen=true
lock-screen=false
notify=true
notify-overdue=true
notify-upcoming=false
play-sound=true
[org/gnome/desktop/break-reminders/movement]
# Get up and move for 5 minutes every 30 minutes
countdown=false
delay-seconds=uint32 180
duration-seconds=uint32 300
interval-seconds=uint32 1800
fade-screen=true
lock-screen=false
notify=true
notify-overdue=true
notify-upcoming=true
play-sound=true
[org/gnome/desktop/calendar]
show-weekdate=true
[org/gnome/desktop/datetime]
automatic-timezone=true
[org/gnome/desktop/file-sharing]
require-password='always'
[org/gnome/desktop/input-sources]
per-window=false
sources=[('xkb', 'us')]
# "caps:ctrl_modifier"
# => Caps Lock becomes an additional Control for quicker access when typing
# "compose:ralt"
# => Right Alt can be used to Compose, e.g., Compose a " gives ä
# "lv3:menu_switch"
# => Menu becomes Right Alt, which we otherwise would not have
xkb-options=['caps:ctrl_modifier', 'compose:ralt', 'lv3:menu_switch']
[org/gnome/desktop/interface]
accent-color='teal'
clock-format='24h'
clock-show-date=true
clock-show-seconds=true
clock-show-weekday=true
color-scheme='prefer-dark'
document-font-name='Cantarell 11'
enable-animations=true
enable-hot-corners=false
font-antialiasing='grayscale'
font-hinting='slight'
font-name='Cantarell 11'
# gtk-im-module='gtk-im-context-simple'
# gtk-theme='Pop-dark'
# icon-theme='Pop'
monospace-font-name='FiraCode Nerd Font 11'
show-battery-percentage=true
toolkit-accessibility=false
[org/gnome/desktop/lockdown]
# Keep in sync with "user-switch-enabled" in [org/gnome/desktop/screensaver]
disable-user-switching=true
[org/gnome/desktop/media-handling]
automount=true
automount-open=false
autorun-never=true
autorun-x-content-ignore=@as []
autorun-x-content-open-folder=@as []
autorun-x-content-start-app=@as []
[org/gnome/desktop/peripherals/keyboard]
numlock-state=true
remember-numlock-state=true
[org/gnome/desktop/peripherals/mouse]
natural-scroll=false
[org/gnome/desktop/peripherals/touchpad]
send-events='enabled'
edge-scrolling-enabled=false
natural-scroll=true
two-finger-scrolling-enabled=true
tap-to-click=true
[org/gnome/desktop/privacy]
disable-camera=false
disable-microphone=false
disable-sound-output=false
hide-identity=true
old-files-age=uint32 7
recent-files-max-age=7
remember-app-usage=true
remember-recent-files=true
remove-old-temp-files=true
remove-old-trash-files=true
report-technical-problems=false
send-software-usage-stats=false
show-full-name-in-top-bar=false
[org/gnome/desktop/remote-desktop]
[org/gnome/desktop/remote-desktop/rdp]
enable=false
view-only=true
[org/gnome/desktop/remote-desktop/vnc]
enable=false
view-only=true
[org/gnome/desktop/screen-time-limits]
daily-limit-enabled=false
daily-limit-seconds=uint32 28800
grayscale=false
history-enabled=false
[org/gnome/desktop/screensaver]
color-shading-type='solid'
# Make the machine locked after suspend
lock-enabled=true
# Only applies to the idle path, and
# "Suspend" locks immediately, regardless of this delay
# => Together with the "idle-*" settings we follow a
# "Blank first, lock much later" strategy
lock-delay=uint32 7200
logout-enabled=true
# Keep "picture-uri" in sync with [org/gnome/desktop/background] above
picture-options='zoom'
picture-uri='file:///home/user/.local/share/backgrounds/dark.jpg'
primary-color='#000000000000'
secondary-color='#000000000000'
show-full-name-in-top-bar=false
status-message-enabled=false
# Keep in sync with "disable-user-switching" in [org/gnome/desktop/lockdown]
user-switch-enabled=false
[org/gnome/desktop/search-providers]
disable-external=false
# The disabled entries should also be the end of the sort-order
disabled=['org.gnome.Characters.desktop', 'org.gnome.clocks.desktop', 'org.gnome.seahorse.Application.desktop', 'org.gnome.Terminal.desktop']
sort-order=['org.gnome.Nautilus.desktop', 'org.gnome.Settings.desktop', 'org.gnome.Software.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Contacts.desktop', 'org.gnome.Characters.desktop', 'org.gnome.clocks.desktop', 'org.gnome.seahorse.Application.desktop', 'org.gnome.Terminal.desktop']
[org/gnome/desktop/session]
# Blank the screen after 10 minutes of idle time
# => Together with the other "idle-*" and the "lock-delay" settings
# we follow a "Blank first, lock much later" strategy
idle-delay=uint32 600
[org/gnome/desktop/sound]
allow-volume-above-100-percent=true
event-sounds=true
input-feedback-sounds=true
# [org/gnome/desktop/wm/keybindings]
# See ~/.config/gnome-settings/key-bindings.ini for the key bindings
[org/gnome/desktop/wm/preferences]
audible-bell=false
visual-bell=false
action-double-click-titlebar='toggle-maximize'
action-middle-click-titlebar='none'
action-right-click-titlebar='none'
mouse-button-modifier=''
# Right-drag resizes when true, and middle-drag when false
# (May only be enabled if "mouse-button-modifier" is set above)
resize-with-right-button=false
# Just show an "X" to close a window in the GUI
button-layout='close:'
focus-mode='click'
raise-on-click=true
# 'strict' would withhold focus from windows launched from a terminal
focus-new-windows='smart'
titlebar-font='Cantarell Bold 11'
num-workspaces=10
workspace-names=['1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
[org/gnome/mutter]
dynamic-workspaces=false
# We use `forge` for tiling
edge-tiling=false
# Keep in sync with "overlay-key" under [org/gnome/shell/extensions/just-perfection]
overlay-key=''
workspaces-only-on-primary=true
# [org/gnome/mutter/keybindings]
# See ~/.config/gnome-settings/key-bindings.ini for the key bindings
[org/gnome/settings-daemon/plugins/color]
# We add some custom logic in ~/.local/bin/night-light-* scripts
# for more convenient management of the tool via keyboard bindings
night-light-enabled=true
# We use the live location to determine the schedule by default,
# and use ~/.local/bin/night-light-toggle-schedule to force "Night Light" on
night-light-schedule-automatic=true
# If automatic does not work, we fall back to something reasonable
night-light-schedule-from=18.0
night-light-schedule-to=6.0
night-light-temperature=uint32 2200
[org/gnome/settings-daemon/plugins/media-keys]
# See ~/.config/gnome-settings/key-bindings.ini for the key bindings
volume-step=10
[org/gnome/settings-daemon/plugins/power]
# Together with the "idle-delay" and "lock-delay" settings
# we follow a "Blank first, lock much later" strategy
idle-dim=true
idle-brightness=10
power-button-action='nothing'
power-saver-profile-on-low-battery=true
# 0 => "never"
sleep-inactive-ac-timeout=0
sleep-inactive-ac-type='nothing'
# 0 => "never"
sleep-inactive-battery-timeout=0
sleep-inactive-battery-type='nothing'
[org/gnome/system/location]
enabled=true
[system/locale]
region='en_US.UTF-8'
[system/proxy]
mode='none'

View file

@ -0,0 +1,907 @@
# Disable most desktop notifications
[org/gnome/desktop/notifications]
# "application-children" is auto-populated upon a login
show-banners=true
# We turn `details-in-lock-screen` off for almost all registered apps
# => If `show-in-lock-screen` is ever turned on,
# individual apps must be turned on as well,
# except for a few ones already turned on below
show-in-lock-screen=false
[org/gnome/desktop/notifications/application/alacritty]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/ca-desrt-dconf-editor]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/chromium]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/com-nextcloud-desktopclient-nextcloud]
enable=true
enable-sound-alerts=false
show-banners=true
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/com-obsproject-studio]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/com-spotify-client]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/com-system76-keyboardconfigurator]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/discord]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/firefox-esr]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/firewall-config]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-analytics-panel]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-color-panel]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-control-center]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-datetime-panel]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-firmware-panel]
enable=true
enable-sound-alerts=false
show-banners=true
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-language-selector]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-network-panel]
enable=true
enable-sound-alerts=false
show-banners=true
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-power-panel]
enable=true
enable-sound-alerts=true
show-banners=true
force-expanded=false
details-in-lock-screen=true
[org/gnome/desktop/notifications/application/gnome-printers-panel]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-session-properties]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-support-panel]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-system-monitor]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-upgrade-panel]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gnome-wellbeing-panel]
enable=true
enable-sound-alerts=true
show-banners=true
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/google-chrome]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/gparted]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/libreoffice-base]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/libreoffice-calc]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/libreoffice-draw]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/libreoffice-impress]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/libreoffice-math]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/libreoffice-startcenter]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/libreoffice-writer]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/menulibre]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/nm-connection-editor]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/nvidia-settings]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-bleachbit-bleachbit]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-cryptomator-cryptomator]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-baobab]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-calculator]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-calendar]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-characters]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-clocks]
enable=true
enable-sound-alerts=true
show-banners=true
force-expanded=false
details-in-lock-screen=true
[org/gnome/desktop/notifications/application/org-gnome-contacts]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-diskutility]
enable=true
enable-sound-alerts=false
show-banners=true
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-eog]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-evince]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-evolution-alarm-notify]
enable=true
enable-sound-alerts=false
show-banners=true
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-evolution]
enable=true
enable-sound-alerts=false
show-banners=true
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-extensions-desktop]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-extensions]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-fileroller]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-gedit]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-nautilus]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-octave]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-photos]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-powerstats]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-screenshot]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-seahorse-application]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-settings]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-shell-extensions]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-software]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-terminal]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-texteditor]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-tweaks]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-gnome-zenity]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-mozilla-firefox]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-mozilla-thunderbird]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-pulseaudio-pavucontrol]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/org-remmina-remmina]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/rstudio]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/rustdesk]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/screenkey]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/simple-scan]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/sqlitebrowser]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/system76-driver]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/telegramdesktop]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/texmaker]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/vlc]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/yelp]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false
[org/gnome/desktop/notifications/application/zoom]
enable=false
enable-sound-alerts=false
show-banners=false
force-expanded=false
details-in-lock-screen=false

View file

@ -0,0 +1,56 @@
# Basic GNOME Shell configuration
[org/gnome/shell]
# Always reset the command history
command-history=@as []
development-tools=false
# Empty because we disable the "dash" in [org/gnome/shell/extensions/just-perfection]
favorite-apps=@as []
last-selected-power-profile='balanced'
# For mounting encrypted or remote filesystems
remember-mount-password=true
# Never show GNOME's welcome dialog again
welcome-dialog-last-shown-version='999.999'
[org/gnome/shell/app-switcher]
current-workspace-only=true
# [org/gnome/shell/keybindings]
# See ~/.config/gnome-settings/key-bindings.ini for the key bindings
[org/gnome/shell/weather]
automatic-location=true
# Keep in sync with "locations" in [org/gnome/Weather]
locations=[<(uint32 2, <('Berlin', 'EDDB', true, [(0.91426163401859872, 0.23591034304566436)], [(0.91658875132345297, 0.23387411976724018)])>)>, <(uint32 2, <('Heidelberg', 'EDFM', true, [(0.86345801419289459, 0.14862448983795826)], [(0.86238428763706787, 0.1517127801361921)])>)>, <(uint32 2, <('London', 'EGLL', true, [(0.89845190959903677, -0.0080529408042633736)], [(0.89899290734596930, -0.0021946055346929697)])>)>, <(uint32 2, <('New York', 'KNYC', true, [(0.71180344078725644, -1.2909618758762367)], [(0.71059804659265924, -1.2916478949920254)])>)>, <(uint32 2, <('Phoenix', 'KPHX', true, [(0.58353629681163499, -1.955660817467636)], [(0.58378430809834336, -1.9560609516519483)])>)>]
[org/gnome/shell/window-switcher]
app-icon-mode='app-icon-only'
current-workspace-only=true
[org/gnome/shell/world-clocks]
# Keep in sync with "world-clocks" in [org/gnome/clocks]
locations=[<(uint32 2, <('Phoenix', 'KPHX', true, [(0.58353629681163499, -1.955660817467636)], [(0.58378430809834336, -1.9560609516519483)])>)>, <(uint32 2, <('New York', 'KNYC', true, [(0.71180344078725644, -1.2909618758762367)], [(0.71059804659265924, -1.2916478949920254)])>)>, <(uint32 2, <('UTC', 'BIRK', true, [(1.1216380205691279, -0.38222710618675809)], [(1.1195629471197465, -0.38251373858977449)])>)>, <(uint32 2, <('London', 'EGLL', true, [(0.89845190959903677, -0.0080529408042633736)], [(0.89899290734596930, -0.0021946055346929697)])>)>, <(uint32 2, <('Berlin', 'EDDB', true, [(0.91426163401859872, 0.23591034304566436)], [(0.91658875132345297, 0.23387411976724018)])>)>]

View file

@ -0,0 +1,590 @@
# Configure all the GNOME Shell extensions
# - "alphabetical-app-grid" and "app-hider" create a simple and flat app drawer
# - "forge" takes the major role for the desktop layout
[org/gnome/shell]
enabled-extensions=['AlphabeticalAppGrid@stuarthayhurst', 'app-hider@lynith.dev', 'appindicator-hider@theophilediot.github.io', 'appindicatorsupport@rgcjonas.gmail.com', 'auto-move-windows@gnome-shell-extensions.gcampax.github.com', 'drive-menu@gnome-shell-extensions.gcampax.github.com', 'forge@jmmaranan.com', 'just-perfection-desktop@just-perfection', 'launch-new-instance@gnome-shell-extensions.gcampax.github.com', 'no-screenshot-box@screenshot', 'openbar@neuromorph', 'panel-date-format@keiii.github.com', 'rounded-window-corners@fxgn', 'space-bar@luchrioh']
disabled-extensions=@as []
disable-user-extensions=false
[org/gnome/shell/extensions/alphabetical-app-grid]
folder-order-position='alphabetical'
sort-folder-contents=true
logging-enabled=false
[org/gnome/shell/extensions/app-hider]
# We hide CLI utilities and rarely needed apps from the app drawer
hidden-apps=['com.nextcloud.desktopclient.nextcloud.desktop', 'display-im7.q16.desktop', 'gvim.desktop', 'htop.desktop', 'idle-python3.13.desktop', 'idle.desktop', 'im-config.desktop', 'jupyter-notebook.desktop', 'jupyterlab.desktop', 'libreoffice-startcenter.desktop', 'lynis.desktop', 'nvidia-settings.desktop', 'org.freedesktop.MalcontentControl.desktop', 'org.gnome.Extensions.desktop', 'org.gnome.Settings.desktop', 'org.gnome.Software.desktop', 'org.gnome.Totem.desktop', 'org.gnome.Tour.desktop', 'org.gnome.tweaks.desktop', 'ranger.desktop', 'rofi-theme-selector.desktop', 'rofi.desktop', 'system-config-printer.desktop', 'texdoctk.desktop', 'yelp.desktop']
[org/gnome/shell/extensions/appindicator]
tray-pos='right'
tray-order=999
compact-mode-enabled=true
# E.g., needed for `nextcloud`
legacy-tray-enabled=true
icon-opacity=240
# 0 => Use the icon's native size
icon-size=0
# 0.0 => No adjustment
icon-saturation=0.0
icon-brightness=0.0
icon-contrast=0.0
# Per-indicator icon overrides (indicator-id, icon-name, attention-icon-name)
custom-icons=@a(sss) []
[org/gnome/shell/extensions/appindicator-hider]
# Hide RustDesk's tray icon
hidden-indicators=['id:tray-icon']
[org/gnome/shell/extensions/auto-move-windows]
# Open these apps on fixed workspaces
# where the format is "<app>.desktop:<ws_no>"
application-list=['org.gnome.Evolution.desktop:10']
# [org/gnome/shell/extensions/drive-menu]
# This extension does not have any settings
[org/gnome/shell/extensions/forge]
# "Magic number" such that forge's stylesheet at
# ~/.config/forge/stylesheet/forge/stylesheet.css
# is not rewritten with default values
css-last-update=uint32 37
logging-enabled=false
primary-layout-mode='tiling'
workspace-skip-tile=''
tiling-mode-enabled=true
stacked-tiling-mode-enabled=true
tabbed-tiling-mode-enabled=true
auto-exit-tabbed=true
showtab-decoration-enabled=true
auto-split-enabled=false
split-border-toggle=false
dnd-center-layout='tabbed'
float-always-on-top-enabled=true
focus-border-toggle=true
focus-on-hover-enabled=false
move-pointer-focus-enabled=false
preview-hint-enabled=true
quick-settings-enabled=false
resize-amount=uint32 32
window-gap-hidden-on-single=false
window-gap-size=uint32 3
window-gap-size-increment=uint32 2
[org/gnome/shell/extensions/just-perfection]
support-notifier-type=0
# Keep in sync with "overlay-key" in [org/gnome/mutter]
overlay-key=false
# Does not work with "overlay-key" turned off
double-super-to-appgrid=false
background-menu=false
# On-screen display for volume, brightness, ...
osd=true
# Show OSD notifications in the center of the screen
osd-position=8
# When switching between workspaces
workspace-popup=false
# Windows related stuff
window-demands-attention-focus=true
window-maximized-on-create=false
# Right-click in the title bar
window-menu=false
window-menu-take-screenshot-button=true
# Panel related stuff
panel=true
panel-in-overview=true
panel-notification-icon=true
# Panel should be at the top
top-panel-position=0
activities-button=false
clock-menu=true
clock-menu-position=0
clock-menu-position-offset=0
calendar=true
events-button=true
invert-calendar-column-items=false
weather=true
world-clock=true
keyboard-layout=false
accessibility-menu=false
power-icon=true
quick-settings=true
quick-settings-airplane-mode=true
quick-settings-backlight=true
quick-settings-dark-mode=true
quick-settings-night-light=true
screen-recording-indicator=true
screen-sharing-indicator=true
# "Hot Corner" animation
ripple-box=false
# In app drawer and overview menu
# Do not start in overview menu after login
startup-status=0
search=false
type-to-search=true
dash=false
dash-app-running=false
dash-separator=false
show-apps-button=false
# Reduce the noise in the overview menu
window-picker-icon=false
window-preview-caption=false
window-preview-close-button=false
workspace=false
workspaces-in-app-grid=false
workspace-peek=false
workspace-wrap-around=true
workspace-background-corner-size=0
workspace-switcher-should-show=false
workspace-thumbnail-to-main-view=false
# Look & Feel
accent-color-icon=false
animation=1
theme=false
# [org/gnome/shell/extensions/launch-new-instance]
# This extension does not have any settings
# [org/gnome/shell/extensions/nightthemeswitcher]
# This extension is not in use any more and its config kept as archive
# [org/gnome/shell/extensions/nightthemeswitcher/cursor-variants]
# enabled=false
# [org/gnome/shell/extensions/nightthemeswitcher/gtk-variants]
# enabled=false
# [org/gnome/shell/extensions/nightthemeswitcher/icon-variants]
# enabled=false
# [org/gnome/shell/extensions/nightthemeswitcher/shell-variants]
# enabled=false
# [org/gnome/shell/extensions/nightthemeswitcher/time]
# manual-schedule=true
# sunrise=6.0
# sunset=18.0
# See ~/.config/gnome-settings/key-bindings.ini for the key bindings
# nightthemeswitcher-ondemand-keybinding=['<Control><Alt>d']
[org/gnome/shell/extensions/no-screenshot-box]
mute-screenshot-sound=true
remove-preselected-box=true
# On a laptop with a touchpad "true" would be too tedious
screenshot-on-release=false
[org/gnome/shell/extensions/openbar]
# Top Bar Properties
bartype='Floating'
position='Top'
set-notif-position=true
height=32.0
set-overview=true
set-fullscreen=true
fitts-widgets=true
margin=3.0
set-bottom-margin=true
bottom-margin=0.0
# Top bar properties when a window is maximized
# => We want the same unified bar at all times
wmaxbar=false
# Disable "Auto Theming" because we manage colors manually
accent-override=false
auto-bgalpha=false
autohg-bar=false
autofg-bar=false
autofg-menu=false
autotheme-font=false
autotheme-refresh=false
smbgoverride=false
# `openbar` keeps per-mode shadow profiles (i.e., "dark-*"/"light-*" below)
# and copies them over the live keys on every dark/light toggle
# => The "Live" keys below must always match the "dark-*" profile
# because we run dark mode by default
# "Live" Bar
bguri='file:///home/user/.local/share/backgrounds/dark.jpg'
bgcolor=['0.180', '0.180', '0.196']
bgcolor-wmax=['0.180', '0.180', '0.196']
bgcolor2=['0.020', '0.290', '0.333']
fgcolor=['0.871', '0.929', '0.945']
bcolor=['0.682', '0.839', '0.871']
hcolor=['0.024', '0.478', '0.553']
iscolor=['0.180', '0.180', '0.196']
boxcolor=['0.180', '0.180', '0.196']
shcolor=['0', '0', '0']
balpha=1.0
bwidth=2.0
bradius=12.0
neon=false
default-font='FiraCode Nerd Font 12'
# "Live" Menus
mbgcolor=['0.180', '0.180', '0.196']
smbgcolor=['0.020', '0.290', '0.333']
mfgcolor=['0.871', '0.929', '0.945']
mbcolor=['0.290', '0.643', '0.714']
mhcolor=['0.024', '0.478', '0.553']
mscolor=['0.129', '0.565', '0.643']
mshcolor=['0', '0', '0']
# "Live" Accents
accent-color=['0.129', '0.565', '0.643']
hscd-color=['0.129', '0.565', '0.643']
vw-color=['0.129', '0.565', '0.643']
winbcolor=['0.290', '0.643', '0.714']
# Dark profile
# => Keep identical to the "Live" keys above
dark-bguri='file:///home/user/.local/share/backgrounds/dark.jpg'
dark-bgcolor=['0.180', '0.180', '0.196']
dark-bgcolor-wmax=['0.180', '0.180', '0.196']
dark-bgcolor2=['0.020', '0.290', '0.333']
dark-fgcolor=['0.871', '0.929', '0.945']
dark-bcolor=['0.682', '0.839', '0.871']
dark-hcolor=['0.024', '0.478', '0.553']
dark-iscolor=['0.180', '0.180', '0.196']
dark-boxcolor=['0.180', '0.180', '0.196']
dark-shcolor=['0', '0', '0']
dark-mbgcolor=['0.180', '0.180', '0.196']
dark-smbgcolor=['0.020', '0.290', '0.333']
dark-mfgcolor=['0.871', '0.929', '0.945']
dark-mbcolor=['0.290', '0.643', '0.714']
dark-mhcolor=['0.024', '0.478', '0.553']
dark-mscolor=['0.129', '0.565', '0.643']
dark-mshcolor=['0', '0', '0']
dark-accent-color=['0.129', '0.565', '0.643']
dark-hscd-color=['0.129', '0.565', '0.643']
dark-vw-color=['0.129', '0.565', '0.643']
dark-winbcolor=['0.290', '0.643', '0.714']
# Light profile
light-bguri='file:///home/user/.local/share/backgrounds/light.jpg'
light-bgcolor=['0.180', '0.180', '0.196']
light-bgcolor-wmax=['0.180', '0.180', '0.196']
light-bgcolor2=['0.020', '0.290', '0.333']
light-fgcolor=['0.871', '0.929', '0.945']
light-bcolor=['0.682', '0.839', '0.871']
light-hcolor=['0.024', '0.478', '0.553']
light-iscolor=['0.180', '0.180', '0.196']
light-boxcolor=['0.180', '0.180', '0.196']
light-shcolor=['0', '0', '0']
light-mbgcolor=['0.180', '0.180', '0.196']
light-smbgcolor=['0.020', '0.290', '0.333']
light-mfgcolor=['0.871', '0.929', '0.945']
light-mbcolor=['0.290', '0.643', '0.714']
light-mhcolor=['0.024', '0.478', '0.553']
light-mscolor=['0.129', '0.565', '0.643']
light-mshcolor=['0', '0', '0']
light-accent-color=['0.129', '0.565', '0.643']
light-hscd-color=['0.129', '0.565', '0.643']
light-vw-color=['0.129', '0.565', '0.643']
light-winbcolor=['0.290', '0.643', '0.714']
[org/gnome/shell/extensions/panel-date-format]
format='%A %B %-d, %Y %H:%M:%S %Z%z'
# [org/gnome/shell/extensions/project-hamster]
# This extension is not in use any more and its config kept as archive
# How Hamster is shown in the top bar:
# - 0 => label
# - 1 => icon
# - 2 => label and icon
#
# Note that the icon does not adapt to a light panel
# panel-appearance=0
# Position among the panel's items,
# where `3` means "center, next to calendar",
# which is the only option not replacing another GUI element
# panel-placement=3
# See ~/.config/gnome-settings/key-bindings.ini for the key bindings
# show-hamster-dropdown=['<Control><Alt>h']
[org/gnome/shell/extensions/rounded-window-corners-reborn]
# Rounds all window corners uniformly (e.g., needed for `alacritty`)
# so that they match the "border-radius" of 12px in
# ~/.config/forge/stylesheet/forge/stylesheet.css
# "padding" matches the border "inset" of 3
# in ~/.local/bin/patch-forge
custom-rounded-corner-settings=@a{sv} {}
global-rounded-corner-settings={'padding': <{'left': uint32 0, 'right': 0, 'top': 0, 'bottom': 0}>, 'keepRoundedCorners': <{'maximized': true, 'fullscreen': true}>, 'borderRadius': <uint32 12>, 'smoothing': <0.0>, 'borderColor': <(0.682, 0.839, 0.871, 1.0)>, 'enabled': <true>}
focused-shadow={'horizontalOffset': 0, 'verticalOffset': 4, 'blurOffset': 28, 'spreadRadius': 4, 'opacity': 60}
unfocused-shadow={'horizontalOffset': 0, 'verticalOffset': 2, 'blurOffset': 12, 'spreadRadius': -1, 'opacity': 65}
# `forge` draws the borders
# => This extension must not
border-width=0
# Round GTK3/legacy apps,
# but not libadwaita's ones that are already rounded
skip-libadwaita-app=true
skip-libhandy-app=false
blacklist=@as []
enable-preferences-entry=false
tweak-kitty-terminal=false
debug-mode=false
[org/gnome/shell/extensions/space-bar/appearance]
custom-styles-enabled=false
workspace-margin=0
workspaces-bar-padding=0
active-workspace-font-size=10
active-workspace-font-weight='700'
active-workspace-text-color='rgb(222,237,241)'
active-workspace-background-color='rgb(33,144,164)'
active-workspace-border-color='rgb(74,164,182)'
active-workspace-border-radius=8
active-workspace-border-width=2
active-workspace-padding-h=8
active-workspace-padding-v=2
inactive-workspace-font-size=10
inactive-workspace-font-weight='600'
inactive-workspace-text-color='rgb(174,214,222)'
inactive-workspace-background-color='rgb(46,46,50)'
inactive-workspace-border-color='rgb(46,46,50)'
inactive-workspace-border-radius=8
inactive-workspace-border-width=2
inactive-workspace-padding-h=8
inactive-workspace-padding-v=2
empty-workspace-font-size=10
empty-workspace-font-weight='600'
empty-workspace-text-color='rgb(6,122,141)'
empty-workspace-background-color='rgb(46,46,50)'
empty-workspace-border-color='rgb(46,46,50)'
empty-workspace-border-radius=8
empty-workspace-border-width=2
empty-workspace-padding-h=8
empty-workspace-padding-v=2
[org/gnome/shell/extensions/space-bar/behavior]
system-workspace-indicator=false
position='left'
position-index=0
indicator-style='workspaces-bar'
always-show-numbers=false
show-empty-workspaces=false
smart-workspace-names=false
enable-custom-label=true
enable-custom-label-in-menu=true
custom-label-named='{{name}}'
custom-label-unnamed='{{number}}'
scroll-wheel='disabled'
toggle-overview=false
# [org/gnome/shell/extensions/space-bar/shortcuts]
# See ~/.config/gnome-settings/key-bindings.ini for the key bindings
# [org/gnome/shell/extensions/system-monitor]
# This extension is not in use any more and its config kept as archive
# center-display=false
# compact-display=false
# icon-display=false
# move-clock=false
# show-tooltip=false
# battery-display=false
# battery-hidesystem=false
# battery-show-menu=false
# battery-show-text=false
# battery-time=false
# cpu-display=true
# cpu-show-menu=false
# cpu-show-text=true
# cpu-style='digit'
# cpu-individual-cores=false
# disk-display=false
# disk-show-menu=false
# disk-show-text=false
# disk-style='digit'
# disk-usage-style='none'
# fan-display=false
# fan-show-menu=false
# fan-show-text=false
# fan-style='digit'
# freq-display=false
# freq-show-menu=false
# freq-show-text=false
# freq-style='digit'
# gpu-display=false
# gpu-show-menu=false
# gpu-show-text=false
# gpu-style='digit'
# memory-display=true
# memory-show-menu=false
# memory-show-text=true
# memory-style='digit'
# net-display=false
# net-show-menu=false
# net-show-text=false
# net-style='digit'
# swap-display=false
# swap-show-menu=false
# swap-show-text=false
# swap-style='digit'
# thermal-display=false
# thermal-show-menu=false
# thermal-show-text=false
# thermal-style='digit'
# thermal-fahrenheit-unit=false

View file

@ -0,0 +1,11 @@
[Unit]
Description=Restore the GNOME settings from ~/.config/gnome-settings/*.ini
Before=gnome-session-pre.target
ConditionPathIsDirectory=%h/.config/gnome-settings
[Service]
Type=oneshot
ExecStart=%h/.local/bin/restore-gnome
[Install]
WantedBy=gnome-session-pre.target

31
.local/bin/dark-theme-toggle Executable file
View file

@ -0,0 +1,31 @@
#!/bin/sh
# Triggered by <Control><Alt>d
# as defined in [org/gnome/settings-daemon/plugins/media-keys]
# in ~/.config/gnome-settings/key-bindings.ini
set -eu
Interface=org.gnome.desktop.interface
Background=org.gnome.desktop.background
# Keep in sync with "primary-color" in [org/gnome/desktop/background]
DARK_COLOR='#054A55'
LIGHT_COLOR='#DEEDF1'
if [ "$(gsettings get $Interface color-scheme)" = "'prefer-dark'" ]; then
gsettings set $Interface color-scheme 'prefer-light'
gsettings set $Background primary-color "$LIGHT_COLOR"
gsettings set $Background secondary-color "$LIGHT_COLOR"
else
gsettings set $Interface color-scheme 'prefer-dark'
gsettings set $Background primary-color "$DARK_COLOR"
gsettings set $Background secondary-color "$DARK_COLOR"
fi

View file

@ -0,0 +1,34 @@
#!/bin/sh
# Make the `GSettings` schemas of all user-installed GNOME Shell extensions
# visible to a plain `gsettings`, by symlinking the *.gschema.xml files
# into the user schema directory and compiling them
#
# Idempotent: Re-running refreshes the links, prunes dangling ones
# (e.g., from removed extensions), and recompiles
set -eu
XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
EXTENSIONS_DIR="$XDG_DATA_HOME/gnome-shell/extensions"
SCHEMAS_DIR="$XDG_DATA_HOME/glib-2.0/schemas"
mkdir -p "$SCHEMAS_DIR"
# Prune symlinks whose target no longer exists
find "$SCHEMAS_DIR" -maxdepth 1 -type l ! -exec test -e {} \; -exec rm -v -- {} \;
# Link every schema shipped by an extension
for xml in "$EXTENSIONS_DIR"/*/schemas/*.gschema.xml; do
[ -e "$xml" ] || continue # because the glob does not expand if empty
echo " $(basename "$xml")"
ln -sf -- "$xml" "$SCHEMAS_DIR/"
done
glib-compile-schemas "$SCHEMAS_DIR"

View file

@ -120,6 +120,13 @@ if [ -x "$XDG_BIN_HOME/generate-shell-completions" ]; then
fi
if [ -f "$HOME/.config/systemd/user/restore-gnome.service" ]; then
systemctl --user daemon-reload
systemctl --user enable restore-gnome.service
systemctl --user status --no-pager restore-gnome.service || true
fi
echo ""
echo "The dotfiles were installed successfully (branch: $DOTFILES_BRANCH)"
echo ""

View file

@ -0,0 +1,85 @@
#!/bin/sh
# Triggered by <Alt><Shift>Left
# as defined in [org/gnome/settings-daemon/plugins/media-keys]
# in ~/.config/gnome-settings/key-bindings.ini
#
# This script ensures "Night Light" is forced on
# if it was not yet on by schedule
# and makes the screen a bit cooler than it currently is
#
# The default warmth is restored at login by ~/.local/bin/restore-gnome
set -eu
# GNOME's GUI lets one choose between 1700 and 4700 only,
# and 6500 is the point where no color correction is applied at all
# while 1000 is the absolute minimum supported by the OS
_MIN_TEMPERATURE=1200
_MAX_TEMPERATURE=4700
notify() {
ID_FILE="${XDG_RUNTIME_DIR}/night-light-notification-id"
_id=$(cat "$ID_FILE" 2>/dev/null || true)
if [ -n "$_id" ]; then
notify-send -p -t 5000 --replace-id="$_id" "Night Light" "$1" > "$ID_FILE" || rm -f "$ID_FILE"
else
notify-send -p -t 5000 "Night Light" "$1" > "$ID_FILE" || rm -f "$ID_FILE"
fi
}
Schema=org.gnome.settings-daemon.plugins.color
active=$(gdbus call --session \
--dest org.gnome.SettingsDaemon.Color \
--object-path /org/gnome/SettingsDaemon/Color \
--method org.freedesktop.DBus.Properties.Get \
org.gnome.SettingsDaemon.Color NightLightActive)
current=$(gsettings get $Schema night-light-temperature | awk '{print $2}')
# 500 = (4700 - 1700 + 500) / 7
# => Seven steps spanning more than the range in the GUI,
# mainly because we want to allow a bit more warmth (i.e., +500)
new=$((current + 500))
if [ "$new" -gt $_MAX_TEMPERATURE ]; then
new=$_MAX_TEMPERATURE
fi
gsettings set $Schema night-light-temperature "uint32 $new"
# Force "Night Light" on, saving a <Control><Alt>n call,
# with the same settings as in ~/.local/bin/night-light-toggle-schedule
if [ "$active" = "(<false>,)" ]; then
gsettings set $Schema night-light-enabled true
gsettings set $Schema night-light-schedule-automatic false
gsettings set $Schema night-light-schedule-from 0.0
gsettings set $Schema night-light-schedule-to 24.0
fi
if [ "$current" -ge $_MAX_TEMPERATURE ]; then
if [ "$active" = "(<false>,)" ]; then
notify "is now forced on and already as cool as it gets (${_MAX_TEMPERATURE}K)"
else
notify "is already as cool as it gets (${_MAX_TEMPERATURE}K)"
fi
else
if [ "$active" = "(<false>,)" ]; then
notify "is now forced on at ${new}K"
fi
fi

View file

@ -0,0 +1,85 @@
#!/bin/sh
# Triggered by <Alt><Shift>Right
# as defined in [org/gnome/settings-daemon/plugins/media-keys]
# in ~/.config/gnome-settings/key-bindings.ini
#
# This script ensures "Night Light" is forced on
# if it was not yet on by schedule
# and makes the screen a bit warmer than it currently is
#
# The default warmth is restored at login by ~/.local/bin/restore-gnome
set -eu
# GNOME's GUI lets one choose between 1700 and 4700 only,
# and 6500 is the point where no color correction is applied at all
# while 1000 is the absolute minimum supported by the OS
_MIN_TEMPERATURE=1200
_MAX_TEMPERATURE=4700
notify() {
ID_FILE="${XDG_RUNTIME_DIR}/night-light-notification-id"
_id=$(cat "$ID_FILE" 2>/dev/null || true)
if [ -n "$_id" ]; then
notify-send -p -t 5000 --replace-id="$_id" "Night Light" "$1" > "$ID_FILE" || rm -f "$ID_FILE"
else
notify-send -p -t 5000 "Night Light" "$1" > "$ID_FILE" || rm -f "$ID_FILE"
fi
}
Schema=org.gnome.settings-daemon.plugins.color
active=$(gdbus call --session \
--dest org.gnome.SettingsDaemon.Color \
--object-path /org/gnome/SettingsDaemon/Color \
--method org.freedesktop.DBus.Properties.Get \
org.gnome.SettingsDaemon.Color NightLightActive)
current=$(gsettings get $Schema night-light-temperature | awk '{print $2}')
# 500 = (4700 - 1700 + 500) / 7
# => Seven steps spanning more than the range in the GUI,
# mainly because we want to allow a bit more warmth (i.e., +500)
new=$((current - 500))
if [ "$new" -lt $_MIN_TEMPERATURE ]; then
new=$_MIN_TEMPERATURE
fi
gsettings set $Schema night-light-temperature "uint32 $new"
# Force "Night Light" on, saving a <Control><Alt>n call,
# with the same settings as in ~/.local/bin/night-light-toggle-schedule
if [ "$active" = "(<false>,)" ]; then
gsettings set $Schema night-light-enabled true
gsettings set $Schema night-light-schedule-automatic false
gsettings set $Schema night-light-schedule-from 0.0
gsettings set $Schema night-light-schedule-to 24.0
fi
if [ "$current" -le $_MIN_TEMPERATURE ]; then
if [ "$active" = "(<false>,)" ]; then
notify "is now forced on and already as warm as it gets (${_MIN_TEMPERATURE}K)"
else
notify "is already as warm as it gets (${_MIN_TEMPERATURE}K)"
fi
else
if [ "$active" = "(<false>,)" ]; then
notify "is now forced on at ${new}K"
fi
fi

View file

@ -0,0 +1,68 @@
#!/bin/sh
# Triggered by <Alt><Shift>n
# as defined in [org/gnome/settings-daemon/plugins/media-keys]
# in ~/.config/gnome-settings/key-bindings.ini
#
# See ~/.local/bin/night-light-toggle-schedule
# for the other half of the toggling logic
# and extensive documentation
set -eu
notify() {
ID_FILE="${XDG_RUNTIME_DIR}/night-light-notification-id"
_id=$(cat "$ID_FILE" 2>/dev/null || true)
if [ -n "$_id" ]; then
notify-send -p -t 5000 --replace-id="$_id" "Night Light" "$1" > "$ID_FILE" || rm -f "$ID_FILE"
else
notify-send -p -t 5000 "Night Light" "$1" > "$ID_FILE" || rm -f "$ID_FILE"
fi
}
Schema=org.gnome.settings-daemon.plugins.color
if [ "$(gsettings get $Schema night-light-enabled)" = "true" ]; then
active_before=$(gdbus call --session \
--dest org.gnome.SettingsDaemon.Color \
--object-path /org/gnome/SettingsDaemon/Color \
--method org.freedesktop.DBus.Properties.Get \
org.gnome.SettingsDaemon.Color NightLightActive)
gsettings set $Schema night-light-enabled false
if [ "$active_before" = "(<false>,)" ]; then
notify "is now disabled, but the screen was not tinted anyways"
fi
else
gsettings set $Schema night-light-enabled true
# We could start from our default warmth, as defined
# in [org/gnome/settings-daemon/plugins/color]
# in ~/.config/gnome-settings/misc.ini
# but choose not to do that because the default
# warmth is reset anyways after a reboot
# gsettings set $Schema night-light-temperature "uint32 2200"
# Give the settings daemon a moment to recompute "NightLightActive"
sleep 0.1
active_after=$(gdbus call --session \
--dest org.gnome.SettingsDaemon.Color \
--object-path /org/gnome/SettingsDaemon/Color \
--method org.freedesktop.DBus.Properties.Get \
org.gnome.SettingsDaemon.Color NightLightActive)
if [ "$active_after" = "(<false>,)" ]; then
notify "is now enabled, but the schedule keeps it off for now"
fi
fi

View file

@ -0,0 +1,102 @@
#!/bin/sh
# Triggered by <Control><Alt>n
# as defined in [org/gnome/settings-daemon/plugins/media-keys]
# in ~/.config/gnome-settings/key-bindings.ini
#
# Night Light control:
#
# - <Control><Alt>n => "when" toggle
# + "Force" the screen to be warm right now!
# (Turns Night Light on if it was off, and keeps it on all day)
# + "Un-force" the Night Light into the local evening schedule
# - <Alt><Shift>n => "if" toggle
# Plain on/off switch for the Night Light feature
#
# Neither key binding changes what the other controls, so they don't fight.
#
# Making the screen cooler or warmer with <Alt><Shift>Left/Right
# also forces "Night Light" on because adjusting this implies
# that the user wants to use it.
#
# State machine:
# TARGET STATE
# +--------------------------+--------------------------+
# CURRENT STATE | nl-toggle-schedule | nl-toggle-enabled |
# +--------------------------+--------------------------+--------------------------+
# | disabled, automatic | enabled, force | enabled, automatic (*) |
# | disabled, force | enabled, force | enabled, force |
# | enabled, automatic | enabled, force (*) | disabled, automatic (*) |
# | enabled, force | enabled, automatic (*) | disabled, force |
# +--------------------------+--------------------------+--------------------------+
# (*) There are four cases where a user does not perceive a change on the screen.
# Then, a notification is shown instead.
#
# See ~/.local/bin/night-light-toggle-enabled for the other half of the toggling logic
set -eu
notify() {
ID_FILE="${XDG_RUNTIME_DIR}/night-light-notification-id"
_id=$(cat "$ID_FILE" 2>/dev/null || true)
if [ -n "$_id" ]; then
notify-send -p -t 5000 --replace-id="$_id" "Night Light" "$1" > "$ID_FILE" || rm -f "$ID_FILE"
else
notify-send -p -t 5000 "Night Light" "$1" > "$ID_FILE" || rm -f "$ID_FILE"
fi
}
Schema=org.gnome.settings-daemon.plugins.color
active_before=$(gdbus call --session \
--dest org.gnome.SettingsDaemon.Color \
--object-path /org/gnome/SettingsDaemon/Color \
--method org.freedesktop.DBus.Properties.Get \
org.gnome.SettingsDaemon.Color NightLightActive)
automatic=$(gsettings get $Schema night-light-schedule-automatic)
enabled=$(gsettings get $Schema night-light-enabled)
if [ "$automatic" = "true" ] || [ "$enabled" = "false" ]; then
# Force "Night Light" enabled, enabling it if needed
gsettings set $Schema night-light-enabled true
gsettings set $Schema night-light-schedule-automatic false
gsettings set $Schema night-light-schedule-from 0.0
gsettings set $Schema night-light-schedule-to 24.0
if [ "$active_before" = "(<true>,)" ] && [ "$automatic" = "true" ]; then
notify "is now forced to stay on and no longer on an automatic schedule"
fi
else
# Back to the live location's schedule
gsettings set $Schema night-light-schedule-automatic true
gsettings set $Schema night-light-schedule-from 18.0
gsettings set $Schema night-light-schedule-to 6.0
if [ "$active_before" = "(<true>,)" ]; then
# Give the settings daemon a moment to recompute "NightLightActive"
sleep 0.1
active_after=$(gdbus call --session \
--dest org.gnome.SettingsDaemon.Color \
--object-path /org/gnome/SettingsDaemon/Color \
--method org.freedesktop.DBus.Properties.Get \
org.gnome.SettingsDaemon.Color NightLightActive)
if [ "$active_after" = "(<true>,)" ]; then
notify "is still on because of an automatic schedule"
fi
fi
fi

64
.local/bin/patch-forge Executable file
View file

@ -0,0 +1,64 @@
#!/bin/sh
# Patch `forge` to draw a border on all tiled and unfocused windows
#
# Idempotent: Re-running on a patched file changes nothing
set -eu
XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
WINDOW_JS="$XDG_DATA_HOME/gnome-shell/extensions/forge@jmmaranan.com/lib/extension/window.js"
[ -w "$WINDOW_JS" ] || { echo "Not writable or missing: $WINDOW_JS" >&2; exit 1; }
grep -q "showUnfocusedBorders" "$WINDOW_JS" && { echo "Already patched"; exit 0; }
# Call our method after the focused border is drawn
sed -i '/^ updateBorderLayout() {$/,/^ }$/ s|this\.showWindowBorders();|this.showWindowBorders();\n this.showUnfocusedBorders();|' "$WINDOW_JS"
# Append the method right after `updateBorderLayout()`
awk '
/^ updateBorderLayout\(\) \{$/ { inFn=1 }
inFn && /^ \}$/ {
print
print ""
print " showUnfocusedBorders() {"
print " if (!this.ext.settings.get_boolean(\"focus-border-toggle\")) return;"
print " this.tree.nodeWindows.forEach((nodeWindow) => {"
print " let metaWindow = nodeWindow.nodeValue;"
print " if (!metaWindow || metaWindow === this.focusMetaWindow) return;"
print " if (metaWindow.minimized || metaWindow.is_fullscreen()) return;"
print " if (metaWindow.get_workspace() !== global.workspace_manager.get_active_workspace()) return;"
print " let maximized = false;"
print " try { maximized = metaWindow.is_maximized(); }"
print " catch (e) { maximized = metaWindow.get_maximized() === 3; }"
print " if (maximized) return;"
print " if (nodeWindow.parentNode.isTabbed() || nodeWindow.parentNode.isStacked()) return;"
print " let windowActor = metaWindow.get_compositor_private();"
print " if (!windowActor || !windowActor.border) return;"
print " let border = windowActor.border;"
print " border.set_style_class_name(\"window-unfocused-border\");"
print " let rect = metaWindow.get_frame_rect();"
print " let inset = 3;"
print " border.set_size(rect.width + inset * 2, rect.height + inset * 2);"
print " border.set_position(rect.x - inset, rect.y - inset);"
print " border.show();"
print " if (global.window_group && global.window_group.contains(border)) {"
print " global.window_group.remove_child(border);"
print " global.window_group.insert_child_above(border, windowActor);"
print " }"
print " });"
print " }"
inFn=0
next
}
{ print }
' "$WINDOW_JS" > "$WINDOW_JS.tmp" && mv "$WINDOW_JS.tmp" "$WINDOW_JS"
echo "Patched: $WINDOW_JS"

75
.local/bin/randomize-background Executable file
View file

@ -0,0 +1,75 @@
#!/bin/sh
# Determine the next wallpaper by round robin from the cloud
# and install it as the background files referenced in
# ~/.config/gnome-settings/{misc,shell-extensions}.ini
#
# Candidates:
# - Pairs => Both "<name>-d.jpg" and "<name>-l.jpg" exist
# - Singles => Any other "*.jpg" not following the -d/-l scheme,
# used as dark and light at the same time
set -eu
SOURCE_DIR="$HOME/Cloud/Null-Tech/Backgrounds"
TARGET_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/backgrounds"
STATE_FILE="${XDG_STATE_HOME:-$HOME/.local/state}/current-background.txt"
[ -d "$SOURCE_DIR" ] || { echo "No such folder: $SOURCE_DIR" >&2; exit 1; }
# One candidate per line, tab-separated: <dark-file> <light-file>
candidates=$(
for jpg in "$SOURCE_DIR"/*.jpg; do
[ -e "$jpg" ] || continue # because the glob does not expand if empty
case "$jpg" in
*-d.jpg) # Complete pairs only
stem="${jpg%-d.jpg}"
[ -f "$stem-l.jpg" ] && printf '%s\t%s\n' "$jpg" "$stem-l.jpg"
;;
*-l.jpg) # Already handled via its "-d" counterpart above
;;
*) # A single file to be used for both modes
printf '%s\t%s\n' "$jpg" "$jpg"
;;
esac
done
)
if [ -z "$candidates" ]; then
echo "No usable *.jpg files in: $SOURCE_DIR" >&2
exit 1
fi
echo "Found $(printf '%s\n' "$candidates" | wc -l) candidate(s)"
# The glob expands alphabetically => "$candidates" is already sorted
# => Pick the first candidate sorting strictly after the last-used one,
# falling back to the first (e.g., for start, wrap-around, or missing state file)
last=$(cat "$STATE_FILE" 2>/dev/null || true)
chosen=$(printf '%s\n' "$candidates" | awk -F '\t' -v last="$last" '$1 > last { print; exit }')
[ -n "$chosen" ] || chosen=$(printf '%s\n' "$candidates" | head -n 1)
dark=$(printf '%s' "$chosen" | cut -f 1)
light=$(printf '%s' "$chosen" | cut -f 2)
echo "Chosen: $(basename "$dark")"
mkdir -p "$TARGET_DIR" "$(dirname "$STATE_FILE")"
cp -- "$dark" "$TARGET_DIR/dark.jpg"
cp -- "$light" "$TARGET_DIR/light.jpg"
printf '%s\n' "$dark" > "$STATE_FILE"
echo "Installed as: $TARGET_DIR/{dark,light}.jpg"

147
.local/bin/restore-gnome Executable file
View file

@ -0,0 +1,147 @@
#!/bin/sh
# Restore the GNOME settings from ~/.config/gnome-settings/*.ini
#
# `dconf load` merges into the existing state, implying
# that keys removed from the *.ini files would still be active
# => Reset the subtrees we fully manage first,
# which makes the resulting state deterministic
set -eu
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
XDG_STATE_HOME="${XDG_STATE_HOME:-$HOME/.local/state}"
BACKUP_DIR="$XDG_STATE_HOME/gnome-settings-backups"
SETTINGS_DIR="$XDG_CONFIG_HOME/gnome-settings"
# Subtrees either
# - fully described by the *.ini files
# - or reset to their defaults
#
# Note: Keep in sync with the `grep`s in ~/.local/bin/verify-dconf
RESET_PATHS="
/ca/desrt/dconf-editor/
/org/freedesktop/ibus/panel/
/org/freedesktop/tracker/
/org/gnome/baobab/
/org/gnome/calculator/
/org/gnome/calendar/
/org/gnome/Characters/
/org/gnome/clocks/
/org/gnome/Connections/
/org/gnome/Contacts/
/org/gnome/control-center/
/org/gnome/desktop/
/org/gnome/Disks/
/org/gnome/evince/
/org/gnome/Extensions/
/org/gnome/file-roller/
/org/gnome/gedit/
/org/gnome/gnome-system-monitor/
/org/gnome/Loupe/
/org/gnome/maps/
/org/gnome/mutter/
/org/gnome/nautilus/
/org/gnome/nm-applet/
/org/gnome/portal/
/org/gnome/settings-daemon/
/org/gnome/shell/
/org/gnome/simple-scan/
/org/gnome/software/
/org/gnome/system/location/
/org/gnome/terminal/
/org/gnome/TextEditor/
/org/gnome/Totem/
/org/gnome/tweaks/
/org/gnome/Weather/
/org/gnome/GWeather4/
/org/gtk/
/system/
"
if ! command -v dconf >/dev/null 2>&1; then
echo "dconf is not installed => Nothing to do" >&2
exit 0
fi
if [ ! -d "$SETTINGS_DIR" ]; then
echo "No settings found at: $SETTINGS_DIR" >&2
exit 1
fi
echo "Backing up current GNOME settings to: $BACKUP_DIR"
mkdir -p "$BACKUP_DIR"
dconf dump / > "$BACKUP_DIR/$(date +%Y%m%d-%H%M%S).ini"
# Keep the ten most recent backups
# shellcheck disable=SC2012 # File names are timestamps => `ls` is safe
ls -1t "$BACKUP_DIR"/*.ini | tail -n +11 | xargs -r rm --
echo "Resetting managed subtrees in dconf"
for path in $RESET_PATHS; do
echo " $path"
dconf reset -f "$path"
done
# forge's `patchCss()` writes its stylesheet backup to a path built from a
# property that no longer exists, yielding "~/undefined.bak"
# => Patch the path in the installed extension
THEME_JS="$XDG_DATA_HOME/gnome-shell/extensions/forge@jmmaranan.com/lib/shared/theme.js"
if [ -w "$THEME_JS" ]; then
sed -i 's|this\.configMgr\.stylesheetFileName + "\.bak"|configCss.get_path() + ".bak"|' "$THEME_JS"
fi
echo "Import GNOME extensions' schemas"
SCHEMAS="$HOME/.local/bin/import-gnome-extension-schemas"
if [ -x "$SCHEMAS" ]; then
"$SCHEMAS" || echo "WARN: importing GNOME extension schemas failed" >&2
fi
echo "Loading GNOME settings from: $SETTINGS_DIR"
for file in "$SETTINGS_DIR"/*.ini; do
[ -e "$file" ] || continue # because the glob does not expand if empty
echo " $(basename "$file")"
sed "s|/home/user|$HOME|g" "$file" | dconf load /
done
for file in "$SETTINGS_DIR"/local/*.ini; do
[ -e "$file" ] || continue # because the glob does not expand if empty
echo " $(basename "$file")"
sed "s|/home/user|$HOME|g" "$file" | dconf load /
done
echo "Patching forge"
# Draw a whitish border on unfocused windows as well
PATCH="$HOME/.local/bin/patch-forge"
if [ -x "$PATCH" ]; then
"$PATCH" || echo "WARN: forge border patch failed" >&2
fi
echo "Restored GNOME to the defaults defined in ~/.config/gnome-settings"

139
.local/bin/restore-nextcloud Executable file
View file

@ -0,0 +1,139 @@
#!/usr/bin/env bash
# This script ensures my `nextcloud` clients operate in a uniform way
set -eu
CFG="${XDG_CONFIG_HOME:-$HOME/.config}/Nextcloud/nextcloud.cfg"
SERVER_FILE="${XDG_CONFIG_HOME:-$HOME/.config}/Nextcloud/server.txt"
XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
FORCE=0
[ "${1:-}" = "--force" ] && FORCE=1
if [ -r "$SERVER_FILE" ]; then
SERVER_URL=$(head -n 1 "$SERVER_FILE")
elif [ "$FORCE" -eq 1 ]; then
SERVER_URL=""
echo "WARN: $SERVER_FILE not found, leaving the server URL unmanaged" >&2
else
echo "Server URL not found at: $SERVER_FILE" >&2
echo ""
echo "Create it with a single line, e.g., 'https://cloud.example.com'," >&2
echo "or re-run with --force to skip the URL settings" >&2
exit 1
fi
if ! command -v crudini >/dev/null 2>&1; then
echo "crudini is not installed => Cannot configure nextcloud" >&2
exit 1
fi
del_key() { # section key
crudini --del "$CFG" "$1" "$2"
}
set_key() { # section key value
crudini --set "$CFG" "$1" "$2" "$3"
}
# Stop `nextcloud`
nextcloud --quit 2>/dev/null || true
for _ in $(seq 30); do
pgrep -x nextcloud >/dev/null || break
sleep 0.5
done
if pgrep -x nextcloud >/dev/null; then
echo "Nextcloud did not exit; aborting" >&2
exit 1
fi
mkdir -p "$(dirname "$CFG")"
touch "$CFG"
# Configure base settings for `nextcloud`
if [ -n "$SERVER_URL" ]; then
set_key General forceOverrideServerUrl true
set_key General overrideServerUrl "$SERVER_URL"
fi
set_key General overrideLocalDir "$HOME/Cloud"
set_key General launchOnSystemStartup true
set_key General monoIcons true
set_key General crashReporter false
# Windows-only, kept for completeness
set_key General showInExplorerNavigationPane true
set_key General optionalServerNotifications false
set_key General showCallNotifications false
set_key General showChatNotifications false
set_key General isVfsEnabled false
set_key General confirmExternalStorage true
set_key General useNewBigFolderSizeLimit false
set_key General newBigFolderSizeLimit 999
set_key General notifyExistingFoldersOverLimit false
set_key General stopSyncingExistingFoldersOverLimit false
set_key General moveToTrash true
set_key General promptDeleteAllFiles true
set_key Proxy type 0
# Make `nextcloud` sync at full speed, with sane fallback limits
# Modes:
# - 0 => unlimited
# - -1 => automatic limit
# - +1 => manually set limit
# Limits:
# - values are in KBytes/s
# - we assume line speeds of 100/30 Mbit/s, to be capped at 80%
set_key BWLimit useDownloadLimit 0
# 100 Mbit/s / 8 => 12500 KBytes/s * 0.8 => 10000
set_key BWLimit downloadLimit 10000
set_key BWLimit useUploadLimit 0
# 30 Mbit/s / 8 => 3750 KBytes/s * 0.8 => 3000
set_key BWLimit uploadLimit 3000
set_key Nextcloud remotePollInterval 60000
# Because of a bug, `nextcloud` wants to create logs at a deprecated location
# => An empty file at that location makes `nextcloud` use the new location
# inside ~/.config/Nextcloud
rm -rf "$XDG_DATA_HOME/Nextcloud"
touch "$XDG_DATA_HOME/Nextcloud"
# Resume `nextcloud`
nextcloud --background &
disown

43
.local/bin/verify-dconf Executable file
View file

@ -0,0 +1,43 @@
#!/bin/sh
# List GNOME `dconf` keys that are live but not described by ~/.config/gnome-settings/*.ini
set -eu
# Keep in sync with the `RESET_PATHS` in ~/.local/bin/restore-gnome
FILTER='^(org/gnome/|org/gtk/|org/freedesktop/(ibus|tracker)/|ca/desrt/|system/)'
DIR="${XDG_CONFIG_HOME:-$HOME/.config}/gnome-settings"
flat() {
awk '/^\[/ { s = substr($0, 2, length($0) - 2); next }
/^[A-Za-z0-9][A-Za-z0-9_-]*=/ { i = index($0, "="); print s "/" substr($0, 1, i - 1) }'
}
live=$(mktemp) || exit 1
managed=$(mktemp) || exit 1
trap 'rm -f "$live" "$managed"' EXIT INT TERM
dconf dump / | flat | grep -E "$FILTER" | sort -u > "$live"
find "$DIR" -maxdepth 2 -type f -name '*.ini' -exec cat {} + \
| sed "s|/home/user|$HOME|g" \
| flat | grep -E "$FILTER" | sort -u > "$managed"
echo ""
echo "== Live keys NOT in the ~/.config/gnome-settings/*.ini files =="
comm -23 "$live" "$managed"
echo ""
echo ""
echo "== Keys in the ~/.config/gnome-settings/*.ini files but NOT live =="
comm -13 "$live" "$managed"
echo ""