Files
nixos/hyprland/scripts/themeswitch.nix

131 lines
3.5 KiB
Nix
Raw Normal View History

2026-04-08 14:24:18 +02:00
{ lib, config, ... }:
{
home.file.".config/hypr/hyprland/scripts/themeswitch.sh".text = ''
#!/bin/bash
OPTION_DARK="Gruvbox Dark"
OPTION_LIGHT="Gruvbox Light"
EMACS_LIGHT_THEME="doom-gruvbox-light"
EMACS_DARK_THEME="doom-gruvbox"
INPUT="echo -e $OPTION_DARK\n$OPTION_LIGHT"
# Execute the input command and get the selected choice
SELECTED=$($INPUT | fuzzel -d)
declare -A TARGETS=(
["kitty"]="$XDG_CONFIG_HOME/kitty/kitty.conf"
["waybar"]="$XDG_CONFIG_HOME/waybar/style.css"
["fuzzel"]="$XDG_CONFIG_HOME/fuzzel/fuzzel.ini"
["swaync"]="$XDG_CONFIG_HOME/swaync/style.css"
["swayosd"]="$XDG_CONFIG_HOME/swayosd/style.css"
)
make_link() {
ln -sf $1 $2
}
switch_emacs() {
if [[ "$1" == "$OPTION_LIGHT" ]]; then
emacsclient -e "(load-theme '$EMACS_LIGHT_THEME)"
elif [[ "$1" == "$OPTION_DARK" ]]; then
emacsclient -e "(load-theme '$EMACS_DARK_THEME)"
else
echo "Invalid parameter $1"
fi
}
switch_fuzzel() {
if [[ "$1" == "$OPTION_LIGHT" ]]; then
make_link $HOME/.config/fuzzel/fuzzel_light.ini $HOME/.config/fuzzel/fuzzel.ini
elif [[ "$1" == "$OPTION_DARK" ]]; then
make_link $HOME/.config/fuzzel/fuzzel_dark.ini $HOME/.config/fuzzel/fuzzel.ini
else
echo "Invalid parameter $1"
fi
}
switch_swayosd() {
if [[ "$1" == "$OPTION_LIGHT" ]]; then
make_link $HOME/.config/swayosd/style_light.css $HOME/.config/swayosd/style.css
elif [[ "$1" == "$OPTION_DARK" ]]; then
make_link $HOME/.config/swayosd/style_dark.css $HOME/.config/swayosd/style.css
else
echo "Invalid parameter $1"
fi
}
switch_swaync() {
if [[ "$1" == "$OPTION_LIGHT" ]]; then
make_link $HOME/.config/swaync/style_light.css $HOME/.config/swaync/style.css
elif [[ "$1" == "$OPTION_DARK" ]]; then
make_link $HOME/.config/swaync/style_dark.css $HOME/.config/swaync/style.css
else
echo "Invalid parameter $1"
fi
}
switch_kitty() {
if [[ "$1" == "$OPTION_LIGHT" ]]; then
make_link $HOME/.config/kitty/kitty_light.conf $HOME/.config/kitty/kitty.conf
elif [[ "$1" == "$OPTION_DARK" ]]; then
make_link $HOME/.config/kitty/kitty_dark.conf $HOME/.config/kitty/kitty.conf
else
echo "Invalid parameter $1"
fi
}
switch_waybar() {
if [[ "$1" == "$OPTION_LIGHT" ]]; then
make_link $HOME/.config/waybar/style_light.css $HOME/.config/waybar/style.css
elif [[ "$1" == "$OPTION_DARK" ]]; then
make_link $HOME/.config/waybar/style_dark.css $HOME/.config/waybar/style.css
else
echo "Invalid parameter $1"
fi
}
update() {
#kitty
pgrep -x kitty >/dev/null && kill -SIGUSR1 $(pgrep -x kitty)
#waybar
pgrep -x waybar >/dev/null && kill -SIGUSR2 $(pgrep -x waybar)
#swaync
pgrep -x swaync >/dev/null && swaync-client --reload-css
#swayosd
killall swayosd-server
swayosd-server &
}
case "$SELECTED" in
$OPTION_DARK)
dconf write /org/gnome/desktop/interface/color-scheme \'prefer-dark\'
awww img /home/typo/.config/backgrounds/gruvbox/wp11058332.png -t grow --transition-duration 1 --transition-fps 60 --transition-pos 0.$((1 + $RANDOM % 9)),0.$((1 + $RANDOM % 9))
;;
$OPTION_LIGHT)
dconf write /org/gnome/desktop/interface/color-scheme \'prefer-light\'
awww img /home/typo/.config/backgrounds/gruvbox/chinese-hills.jpg -t grow --transition-duration 1 --transition-fps 60 --transition-pos 0.$((1 + $RANDOM % 9)),0.$((1 + $RANDOM % 9))
;;
*)
echo "Invalid selection"
;;
esac
switch_kitty "$SELECTED"
switch_waybar "$SELECTED"
switch_swaync "$SELECTED"
switch_swayosd "$SELECTED"
switch_fuzzel "$SELECTED"
switch_emacs "$SELECTED"
update
'';
home.file.".config/hypr/hyprland/scripts/themeswitch.sh".force = true;
}