blob: a3cc75390afe446378e0571804e1cf242ea01be1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
#!/bin/sh
# Sets my preferred Gnome config.
# Find existing bindings with:
# for e in $(gsettings list-schemas | grep bind); do gsettings list-recursively $e; done
NUM_WORKSPACES=9
WORKSPACE_ROUTER_UUID=workspace-router@rbenencia.name
ORG_AGENDA_INDICATOR_UUID=org-agenda-indicator@rbenencia.name
ensure_extension_enabled() {
uuid="$1"
extension_dir=""
for candidate in \
"$HOME/.local/share/gnome-shell/extensions/$uuid" \
"$HOME/.local/gnome-shell/extensions/$uuid"; do
if [ -d "$candidate" ]; then
extension_dir="$candidate"
break
fi
done
if [ -z "$extension_dir" ]; then
return 0
fi
if [ -d "$extension_dir/schemas" ] && command -v glib-compile-schemas >/dev/null 2>&1; then
glib-compile-schemas "$extension_dir/schemas" >/dev/null 2>&1 || true
fi
enabled_extensions=$(
python3 - "$uuid" "$(gsettings get org.gnome.shell enabled-extensions)" <<'PY'
import ast
import sys
uuid = sys.argv[1]
enabled_extensions = ast.literal_eval(sys.argv[2])
if uuid not in enabled_extensions:
enabled_extensions.append(uuid)
print(enabled_extensions)
PY
)
gsettings set org.gnome.shell enabled-extensions "$enabled_extensions"
if command -v gnome-extensions >/dev/null 2>&1; then
gnome-extensions enable "$uuid" >/dev/null 2>&1 || true
fi
}
gsettings set org.gnome.mutter dynamic-workspaces false
gsettings set org.gnome.desktop.wm.preferences num-workspaces $NUM_WORKSPACES
ensure_extension_enabled "$WORKSPACE_ROUTER_UUID"
ensure_extension_enabled "$ORG_AGENDA_INDICATOR_UUID"
# Disable the default <Super>p. I don't use it, and it's disruptive when I accidentally trigger it.
gsettings set org.gnome.mutter.keybindings switch-monitor '[]'
for i in $(seq 1 $NUM_WORKSPACES); do
gsettings set org.gnome.shell.keybindings switch-to-application-$i '[]'
gsettings set org.gnome.desktop.wm.keybindings switch-to-workspace-$i "['<Super>$i']"
gsettings set org.gnome.desktop.wm.keybindings move-to-workspace-$i "['<Shift><Super>$i']"
done
# This configuration is not present in gsettings; we need to fall back to dconf
bindings="emacs org-mode move-windows rofi rofi-run"
keybindings_key="/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings"
keybindings=$(echo $bindings | awk -v key="$keybindings_key" '{for(i=1;i<=NF;i++) printf("'\''" key "/" $i "/'\''%s", (i==NF ? "" : ","))}')
keybindings="[$keybindings]"
dconf write "$keybindings_key" "$keybindings"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emacs/binding "'<Shift><Super>e'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emacs/command "'emacsclient -c'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/emacs/name "'Emacs'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/org-mode/binding "'<Shift><Super>o'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/org-mode/command "'emacsclient -e \"(prot-window-popup-org-capture)\"'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/org-mode/name "'org-capture'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/move-windows/binding "'<Shift><Super>m'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/move-windows/command "'gnome-move-windows'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/move-windows/name "'move-windows'"
# Disable default for <Super>space.
gsettings set org.gnome.desktop.wm.keybindings switch-input-source "[]"
gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward '[]'
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/rofi/binding "'<Super>space'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/rofi/command "'rofi -x11 -show window'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/rofi/name "'rofi'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/rofi-run/binding "'<Super>f2'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/rofi-run/command "'rofi -x11 -show run'"
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/rofi-run/name "'rofi-run'"
|