diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/gnome-move-windows | 36 | ||||
-rwxr-xr-x | bin/gnome-set-config | 34 | ||||
-rwxr-xr-x | bin/setup-install-fonts | 26 |
3 files changed, 96 insertions, 0 deletions
diff --git a/bin/gnome-move-windows b/bin/gnome-move-windows new file mode 100755 index 0000000..0b6c0cc --- /dev/null +++ b/bin/gnome-move-windows @@ -0,0 +1,36 @@ +#!/bin/sh +# Move windows according to my workflow. Check bin/gnome-set-config to +# see its key-binding. Needs wmctrl. + +# Move all windows to the primary display. If they're on the secondary +# display, and we try to move them to a workspace, it won't work. +for window_id in $(wmctrl -l | awk '{print $1}'); do + wmctrl -i -r $window_id -e 0,0,0,-1,-1 +done + +# Assign windows to predetermined workplaces +misc=$(wmctrl -l | awk '/isco|eepa/ {print $1}') +main="$(wmctrl -xl | awk '/ emacs/ {print $1}')" +communications="$(wmctrl -l | awk '/ebex|lack|communications|notmuch|elfeed/ {print $1}')" +terminals="$(wmctrl -l | awk '/Alacritty|kitty|terminal/ {print $1}')" +browsers="$(wmctrl -xl | awk '/irefox|hrom/ {print $1}')" + +for window_id in $misc; do + wmctrl -i -r $window_id -t 4 +done + +for window_id in $main; do + wmctrl -i -r $window_id -t 0 +done + +for window_id in $browsers; do + wmctrl -i -r $window_id -t 1 +done + +for window_id in $communications; do + wmctrl -i -r $window_id -t 2 +done + +for window_id in $terminals; do + wmctrl -i -r $window_id -t 3 +done diff --git a/bin/gnome-set-config b/bin/gnome-set-config index 5bfb476..15771d7 100755 --- a/bin/gnome-set-config +++ b/bin/gnome-set-config @@ -1,12 +1,46 @@ #!/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 gsettings set org.gnome.mutter dynamic-workspaces false gsettings set org.gnome.desktop.wm.preferences num-workspaces $NUM_WORKSPACES +# 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" +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 -show window'" +dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/rofi/name "'rofi'" diff --git a/bin/setup-install-fonts b/bin/setup-install-fonts new file mode 100755 index 0000000..ea96873 --- /dev/null +++ b/bin/setup-install-fonts @@ -0,0 +1,26 @@ +#!/bin/bash + +set -e + +FONT_DIR="$HOME/.local/share/fonts" +TEMP_DIR=$(mktemp -d) + +mkdir -p "$FONT_DIR" + +pushd $TEMP_DIR +curl -s 'https://api.github.com/repos/be5invis/Iosevka/releases/latest' | \ + jq -r ".assets[] | .browser_download_url" | \ + grep PkgTTC-Iosevka | \ + xargs -n 1 curl -L -O --fail --silent --show-error + +for f in *.zip; do + unzip "$f" +done + +mv *.ttc "$FONT_DIR/" +fc-cache -f -v "$FONT_DIR" + +popd +rm -rf "$TEMP_DIR" + +echo "Iosevka fonts have been installed." |