52 lines
1.5 KiB
Shell
Executable file
52 lines
1.5 KiB
Shell
Executable file
#!/bin/sh
|
|
|
|
# Triggered by <Super><Alt>d
|
|
# as defined in [org/gnome/settings-daemon/plugins/media-keys]
|
|
# in ~/.config/gnome-settings/key-bindings.ini
|
|
|
|
set -eu
|
|
|
|
|
|
XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
|
|
|
|
Forge=org.gnome.shell.extensions.forge
|
|
Interface=org.gnome.desktop.interface
|
|
|
|
|
|
if [ "$(gsettings get $Interface color-scheme)" = "'prefer-dark'" ]; then
|
|
new_theme="light"
|
|
else
|
|
new_theme="dark"
|
|
fi
|
|
|
|
|
|
# Render and apply the palette for the target scheme before flipping,
|
|
# so that the visible switch happens in one step
|
|
"$HOME/.local/bin/color-palette" --write --scheme "$new_theme"
|
|
|
|
|
|
dconf load / < "$XDG_CONFIG_HOME/gnome-settings/local/palette.ini"
|
|
|
|
|
|
# Set the "color-scheme" explicitly here to be on the safe side
|
|
# (although it is also contained in the palette.ini file)
|
|
#
|
|
# See comments for "color-scheme" under [org/gnome/desktop/interface]
|
|
# in ~/.config/gnome-settings/misc.ini
|
|
gsettings set $Interface color-scheme "prefer-$new_theme"
|
|
|
|
|
|
# `forge` only re-reads its stylesheet on a restart;
|
|
# however, it takes about one second to do so
|
|
# gnome-extensions disable forge@jmmaranan.com
|
|
# gnome-extensions enable forge@jmmaranan.com
|
|
|
|
# As a hack, we make `forge` re-read its stylesheet by poking a watched setting
|
|
if gnome-extensions list --enabled 2>/dev/null | grep -qxF "forge@jmmaranan.com"; then
|
|
_gap=$(gsettings get $Forge window-gap-size | awk '{print $2}')
|
|
gsettings set $Forge window-gap-size "uint32 $((_gap + 1))"
|
|
gsettings set $Forge window-gap-size "uint32 $_gap"
|
|
fi
|
|
|
|
|
|
echo "Switched the color theme to $new_theme"
|