blob: e95b27b9ef2db7a0cd8ad761105042697d057ccb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
#!/bin/sh
# Theme switcher for Hyprland desktop
# Usage: set-theme <theme-name>
# set-theme --toggle
# set-theme --current
# Available themes: dupre, hudson
THEME_DIR="$HOME/.config/themes"
CURRENT_FILE="$HOME/.config/current-theme"
# Get current theme
get_current() {
if [ -f "$CURRENT_FILE" ]; then
cat "$CURRENT_FILE"
else
echo "hudson" # default
fi
}
# List available themes
list_themes() {
for dir in "$THEME_DIR"/*/; do
basename "$dir"
done
}
# Apply a theme
apply_theme() {
theme="$1"
if [ ! -d "$THEME_DIR/$theme" ]; then
echo "Error: Theme '$theme' not found in $THEME_DIR"
echo "Available themes: $(list_themes | tr '\n' ' ')"
exit 1
fi
echo "Applying theme: $theme"
# Copy configs that don't support sourcing
cp "$THEME_DIR/$theme/foot.ini" "$HOME/.config/foot/foot.ini"
cp "$THEME_DIR/$theme/fuzzel.ini" "$HOME/.config/fuzzel/fuzzel.ini"
cp "$THEME_DIR/$theme/waybar.css" "$HOME/.config/waybar/style.css"
cp "$THEME_DIR/$theme/dunstrc" "$HOME/.config/dunst/dunstrc"
cp "$THEME_DIR/$theme/hyprlock.conf" "$HOME/.config/hypr/hyprlock.conf"
cp "$THEME_DIR/$theme/Xresources" "$HOME/.Xresources"
# Apply Xresources (for X11 apps and Emacs)
xrdb -merge "$HOME/.Xresources" 2>/dev/null
# Apply Hyprland colors directly via hyprctl
case "$theme" in
dupre)
# Window borders
hyprctl keyword general:col.active_border "rgba(d7af5fff)"
hyprctl keyword general:col.inactive_border "rgba(474544ff)"
# hy3 tab bar (monocle mode)
hyprctl keyword plugin:hy3:tabs:col.active "rgba(474544ff)"
hyprctl keyword plugin:hy3:tabs:col.active.text "rgba(969385ff)"
hyprctl keyword plugin:hy3:tabs:col.inactive "rgba(d0cbc0ff)"
hyprctl keyword plugin:hy3:tabs:col.inactive.text "rgba(d0cbc0ff)"
hyprctl keyword plugin:hy3:tabs:col.urgent "rgba(d47c59ff)"
hyprctl keyword plugin:hy3:tabs:col.locked "rgba(8a9496ff)"
;;
hudson)
# Window borders
hyprctl keyword general:col.active_border "rgba(daa520ff)"
hyprctl keyword general:col.inactive_border "rgba(444444ff)"
# hy3 tab bar (monocle mode)
hyprctl keyword plugin:hy3:tabs:col.active "rgba(444444ff)"
hyprctl keyword plugin:hy3:tabs:col.active.text "rgba(bbbbbbff)"
hyprctl keyword plugin:hy3:tabs:col.inactive "rgba(c5c8c6ff)"
hyprctl keyword plugin:hy3:tabs:col.inactive.text "rgba(c5c8c6ff)"
hyprctl keyword plugin:hy3:tabs:col.urgent "rgba(cc6666ff)"
hyprctl keyword plugin:hy3:tabs:col.locked "rgba(8abeb7ff)"
;;
esac
# Save current theme
echo "$theme" > "$CURRENT_FILE"
# Set default wallpaper
swww img ~/pictures/wallpaper/trondheim-norway.jpg 2>/dev/null
# Reload applications
killall -SIGUSR2 waybar 2>/dev/null
pkill dunst && dunst &
# Notify user
notify-send "Theme" "Switched to $theme" -t 2000
echo "Theme '$theme' applied. Open new terminals to see changes."
}
# Toggle between themes
toggle_theme() {
current=$(get_current)
case "$current" in
dupre) apply_theme "hudson" ;;
hudson) apply_theme "dupre" ;;
*) apply_theme "dupre" ;;
esac
}
# Show picker with fuzzel
pick_theme() {
themes=$(list_themes)
current=$(get_current)
selected=$(echo "$themes" | fuzzel --dmenu --prompt "Theme (current: $current): ")
if [ -n "$selected" ]; then
apply_theme "$selected"
fi
}
# Main
case "$1" in
--toggle|-t)
toggle_theme
;;
--current|-c)
get_current
;;
--list|-l)
list_themes
;;
--pick|-p)
pick_theme
;;
--help|-h)
echo "Usage: set-theme <theme-name>"
echo " set-theme --toggle Toggle between themes"
echo " set-theme --current Show current theme"
echo " set-theme --list List available themes"
echo " set-theme --pick Pick theme with fuzzel"
echo ""
echo "Available themes: $(list_themes | tr '\n' ' ')"
;;
"")
pick_theme
;;
*)
apply_theme "$1"
;;
esac
|