131 lines
3.5 KiB
Nix
131 lines
3.5 KiB
Nix
{ 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
|
|
pidof kitty >/dev/null && kill -SIGUSR1 $(pidof kitty)
|
|
|
|
#waybar
|
|
pidof waybar >/dev/null && kill -SIGUSR2 $(pidof waybar)
|
|
|
|
#swaync
|
|
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\'
|
|
swww img /home/typo/.config/backgrounds/gruvbox/nix_dark.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\'
|
|
swww img /home/typo/.config/backgrounds/gruvbox/nix_light.png -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 && echo test
|
|
'';
|
|
|
|
home.file.".config/hypr/hyprland/scripts/themeswitch.sh".force = true;
|
|
}
|