2025-01-15 22:44:59 -05:00
|
|
|
#!/bin/bash
|
|
|
|
|
2025-09-12 08:17:00 -04:00
|
|
|
NVIM_CONF="${HOME}/.config/nvim/init.lua"
|
|
|
|
GHOSTTY_CONF="${HOME}/.config/ghostty/config"
|
2025-01-17 20:57:15 -05:00
|
|
|
|
2025-09-12 08:17:00 -04:00
|
|
|
[ -f "$NVIM_CONF" ] || { echo "Missing $NVIM_CONF"; exit 1; }
|
|
|
|
[ -f "$GHOSTTY_CONF" ] || { echo "Missing $GHOSTTY_CONF"; exit 1; }
|
2025-01-17 20:57:15 -05:00
|
|
|
|
2025-09-17 09:14:53 -04:00
|
|
|
set_light_mode() {
|
2025-09-20 09:13:33 -04:00
|
|
|
sed -E -i 's/^([[:space:]]*theme[[:space:]]*=[[:space:]]*)zenwritten-dark/\1zenwritten-light/' "$GHOSTTY_CONF"
|
|
|
|
sed -E -i 's/(vim.g.light_mode[[:space:]]*=[[:space:]]*).*/\1true/' "$NVIM_CONF"
|
2025-09-12 08:17:00 -04:00
|
|
|
MODE="light"
|
2025-09-17 09:14:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
set_dark_mode() {
|
2025-09-20 09:13:33 -04:00
|
|
|
sed -E -i 's/^([[:space:]]*theme[[:space:]]*=[[:space:]]*)zenwritten-light/\1zenwritten-dark/' "$GHOSTTY_CONF"
|
|
|
|
sed -E -i 's/(vim.g.light_mode[[:space:]]*=[[:space:]]*).*/\1false/' "$NVIM_CONF"
|
2025-09-12 08:17:00 -04:00
|
|
|
MODE="dark"
|
2025-09-17 09:14:53 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
toggle_mode() {
|
|
|
|
if grep -Eq '^\s*theme\s*=\s*zenwritten-light' "$GHOSTTY_CONF"; then
|
|
|
|
set_dark_mode
|
|
|
|
else
|
|
|
|
set_light_mode
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
case "$1" in
|
|
|
|
light)
|
|
|
|
set_light_mode
|
|
|
|
;;
|
|
|
|
dark)
|
|
|
|
set_dark_mode
|
|
|
|
;;
|
|
|
|
toggle|*)
|
|
|
|
toggle_mode
|
|
|
|
;;
|
|
|
|
esac
|
2025-01-17 20:57:15 -05:00
|
|
|
|
2025-09-12 08:17:00 -04:00
|
|
|
# Reload neovim theme
|
|
|
|
if [ "$MODE" = "light" ]; then
|
|
|
|
keys=$'<C-\\><C-n>:silent! let g:light_mode=1 | set background=light | doautocmd ColorScheme | redraw!<CR>'
|
|
|
|
else
|
|
|
|
keys=$'<C-\\><C-n>:silent! let g:light_mode=0 | set background=dark | doautocmd ColorScheme | redraw!<CR>'
|
|
|
|
fi
|
|
|
|
for dir in "${XDG_RUNTIME_DIR:-}" "${TMPDIR:-/tmp}" "/tmp" "$HOME/.local/state/nvim"; do
|
|
|
|
[ -d "$dir" ] || continue
|
|
|
|
find "$dir" -type s -name 'nvim*' 2>/dev/null | while read -r sock; do
|
2025-09-17 09:14:53 -04:00
|
|
|
timeout 1s nvim --server "$sock" --remote-send "$keys" >/dev/null 2>&1 || true
|
2025-09-12 08:17:00 -04:00
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
# Reload Ghostty: send SIGUSR2 to running ghostty processes (macOS/Linux)
|
2025-09-17 09:14:53 -04:00
|
|
|
pkill -USR2 -x ghostty 2>/dev/null
|
2025-01-15 22:44:59 -05:00
|
|
|
|
2025-09-12 08:17:00 -04:00
|
|
|
echo "Switched to ${MODE} mode"
|
|
|
|
|
|
|
|
# Script for changing between light and dark modes on Linux
|
|
|
|
if [ "$(uname)" != "Darwin" ]; then
|
|
|
|
if [ "$MODE" == "dark" ]; then
|
|
|
|
echo "Swapping to dark mode"
|
|
|
|
# GTK Theme
|
2025-09-18 23:30:10 -04:00
|
|
|
gsettings set org.gnome.desktop.interface gtk-theme ''
|
|
|
|
gsettings set org.gnome.desktop.interface gtk-theme 'WhiteSur-Dark'
|
2025-09-12 08:17:00 -04:00
|
|
|
# Rofi theme
|
|
|
|
sed -i -e "s/light.rasi/dark.rasi/" $HOME/.config/rofi/config.rasi
|
|
|
|
|
|
|
|
else
|
|
|
|
echo "Swapping to light mode"
|
|
|
|
# GTK Theme
|
2025-09-18 23:30:10 -04:00
|
|
|
gsettings set org.gnome.desktop.interface gtk-theme ''
|
|
|
|
gsettings set org.gnome.desktop.interface gtk-theme 'WhiteSur-Light'
|
2025-09-12 08:17:00 -04:00
|
|
|
# Rofi theme
|
|
|
|
sed -i -e "s/dark.rasi/light.rasi/" $HOME/.config/rofi/config.rasi
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
killall -HUP xsettingsd
|
|
|
|
fi
|