diff options
Diffstat (limited to 'bin/gnome-set-config')
| -rwxr-xr-x | bin/gnome-set-config | 79 |
1 files changed, 77 insertions, 2 deletions
diff --git a/bin/gnome-set-config b/bin/gnome-set-config index 84c3319..0a05ad7 100755 --- a/bin/gnome-set-config +++ b/bin/gnome-set-config @@ -4,10 +4,76 @@ # for e in $(gsettings list-schemas | grep bind); do gsettings list-recursively $e; done NUM_WORKSPACES=9 +WORKSPACE_ROUTER_UUID=workspace-router@rbenencia.name +WORKSPACE_ROUTER_CLI_UUID=workspace-router-cli@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 +} + +reload_extension() { + uuid="$1" + + if ! command -v gnome-extensions >/dev/null 2>&1; then + return 0 + fi + + gnome-extensions disable "$uuid" >/dev/null 2>&1 || true + gnome-extensions enable "$uuid" >/dev/null 2>&1 || true +} 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 "$WORKSPACE_ROUTER_CLI_UUID" +ensure_extension_enabled "$ORG_AGENDA_INDICATOR_UUID" +reload_extension "$WORKSPACE_ROUTER_CLI_UUID" + +ROFI_CMD="$HOME/bin/rofi" + +# 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']" @@ -15,7 +81,7 @@ for i in $(seq 1 $NUM_WORKSPACES); do done # This configuration is not present in gsettings; we need to fall back to dconf -bindings="emacs org-mode move-windows" +bindings="emacs org-mode move-windows 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]" @@ -31,5 +97,14 @@ dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/org 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/command "'$HOME/bin/gnome-move-windows'" dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/move-windows/name "'move-windows'" + +# Disable default for input-source switching. Leave <Super>space available +# for the GNOME Switcher extension. +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-run/binding "'<Super>f2'" +dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/rofi-run/command "'$ROFI_CMD -show run'" +dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/rofi-run/name "'rofi-run'" |
