aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.config/mode/reload.d/dunst4
-rwxr-xr-x.config/mode/reload.d/fcitx53
-rwxr-xr-x.config/mode/reload.d/gtk10
-rwxr-xr-x.config/mode/reload.d/nvim5
-rwxr-xr-x.config/mode/reload.d/polybar3
-rwxr-xr-x.config/mode/reload.d/term30
-rwxr-xr-x.config/mode/reload.d/wall3
-rwxr-xr-x.config/mode/switch.d/chrome44
-rwxr-xr-x.config/mode/switch.d/discord31
-rwxr-xr-x.config/mode/switch.d/dunst21
-rwxr-xr-x.config/mode/switch.d/fcitx528
-rwxr-xr-x.config/mode/switch.d/gtk14
-rwxr-xr-x.config/mode/switch.d/mode7
-rwxr-xr-x.config/mode/switch.d/polybar13
-rwxr-xr-x.config/mode/switch.d/rofi8
-rwxr-xr-x.config/mode/switch.d/vim32
-rwxr-xr-x.config/mode/switch.d/zathura27
-rwxr-xr-x.local/share/bin/mode342
18 files changed, 308 insertions, 317 deletions
diff --git a/.config/mode/reload.d/dunst b/.config/mode/reload.d/dunst
new file mode 100755
index 0000000..3c09a31
--- /dev/null
+++ b/.config/mode/reload.d/dunst
@@ -0,0 +1,4 @@
+#!/bin/sh
+killall dunst
+fork dunst
+
diff --git a/.config/mode/reload.d/fcitx5 b/.config/mode/reload.d/fcitx5
new file mode 100755
index 0000000..cd27698
--- /dev/null
+++ b/.config/mode/reload.d/fcitx5
@@ -0,0 +1,3 @@
+#!/bin/sh
+fork fcitx5 -rd
+
diff --git a/.config/mode/reload.d/gtk b/.config/mode/reload.d/gtk
new file mode 100755
index 0000000..178f895
--- /dev/null
+++ b/.config/mode/reload.d/gtk
@@ -0,0 +1,10 @@
+#!/bin/sh
+# this is max jank but xfsettingsd does other things besides live gtk theme
+# reloading, and i don't like having it running constantly because it fucks
+# up fcitx5 and xbindkeys
+(
+ fork xfsettingsd
+ sleep 1
+ killall xfsettingsd
+)
+
diff --git a/.config/mode/reload.d/nvim b/.config/mode/reload.d/nvim
new file mode 100755
index 0000000..84ae847
--- /dev/null
+++ b/.config/mode/reload.d/nvim
@@ -0,0 +1,5 @@
+#!/bin/sh
+nvr --serverlist | while read -r nvim_socket ; do
+ fork nvr --nostart --servername "$nvim_socket" -c 'source $XDG_CONFIG_HOME/nvim/mode.vim'
+done
+
diff --git a/.config/mode/reload.d/polybar b/.config/mode/reload.d/polybar
new file mode 100755
index 0000000..af39394
--- /dev/null
+++ b/.config/mode/reload.d/polybar
@@ -0,0 +1,3 @@
+#!/bin/sh
+polybar-msg cmd restart > /dev/null
+
diff --git a/.config/mode/reload.d/term b/.config/mode/reload.d/term
new file mode 100755
index 0000000..5f02463
--- /dev/null
+++ b/.config/mode/reload.d/term
@@ -0,0 +1,30 @@
+#!/bin/sh
+escape_msgs="$(cat << EOF | tr -d '\n'
+\033]11;$bg\007
+\033]10;$fg\007
+\033]12;$fg\007
+\033]14;$bg\007
+\033]13;$fg\007
+\033]17;$color8\007
+\033]708;$bg\007
+\033]4;0;$color0\007
+\033]4;1;$color1\007
+\033]4;2;$color2\007
+\033]4;3;$color3\007
+\033]4;4;$color4\007
+\033]4;5;$color5\007
+\033]4;6;$color6\007
+\033]4;7;$color7\007
+\033]4;8;$color8\007
+\033]4;9;$color9\007
+\033]4;10;$color10\007
+\033]4;11;$color11\007
+\033]4;12;$color12\007
+\033]4;13;$color13\007
+\033]4;14;$color14\007
+\033]4;15;$color15\007
+EOF
+)"
+
+find /dev/pts -exec sh -c "printf \"$escape_msgs\" > {}" \; 2> /dev/null
+
diff --git a/.config/mode/reload.d/wall b/.config/mode/reload.d/wall
new file mode 100755
index 0000000..f6c2e41
--- /dev/null
+++ b/.config/mode/reload.d/wall
@@ -0,0 +1,3 @@
+#!/bin/sh
+rwall
+
diff --git a/.config/mode/switch.d/chrome b/.config/mode/switch.d/chrome
new file mode 100755
index 0000000..4c596c3
--- /dev/null
+++ b/.config/mode/switch.d/chrome
@@ -0,0 +1,44 @@
+#!/bin/sh
+(
+ cd ~/.cache/wal/chromium
+ rm -f 'Cached Theme.pak' 'bg.png' 'manifest.json'
+ convert -size 100x100 "xc:$bg" bg.png
+ bg_alt=$(mix_rgb $color7 $bg 0.20)
+ fg_alt=$(mix_rgb $color15 $fg 0.60)
+ bg="$(hex_to_rgb_array "$bg")"
+ fg="$(hex_to_rgb_array "$fg")"
+ bg_alt="$(hex_to_rgb_array "$bg_alt")"
+ fg_alt="$(hex_to_rgb_array "$fg_alt")"
+ cat << EOF > manifest.json
+{
+ "description": "colorscheme generated by mode",
+ "manifest_version": 2,
+ "name": "mode theme",
+ "theme": {
+ "images": { "theme_frame": "bg.png" },
+ "colors": {
+ "frame": $bg,
+ "button_background": $fg,
+ "ntp_background": $bg,
+ "ntp_text": $bg,
+ "toolbar": $bg_alt,
+ "toolbar_button_icon": $fg,
+ "tab_background_text": $fg_alt,
+ "tab_background_text_inactive": $fg_alt,
+ "tab_background_text_incognito": $fg_alt,
+ "tab_background_text_incognito_inactive": $fg_alt,
+ "bookmark_text": $fg,
+ "tab_text": $fg
+ },
+ "tints": {
+ "buttons": [ -1, -1, -1 ],
+ "frame_inactive": [ -1, -1, -1 ],
+ "frame_incognito": [ -1, -1, -1 ],
+ "frame_incognito_inactive": [ -1, -1, -1 ]
+ }
+ },
+ "version": "2"
+}
+EOF
+)
+
diff --git a/.config/mode/switch.d/discord b/.config/mode/switch.d/discord
new file mode 100755
index 0000000..f656783
--- /dev/null
+++ b/.config/mode/switch.d/discord
@@ -0,0 +1,31 @@
+#!/bin/sh
+cat << EOF > "$XDG_CONFIG_HOME/BetterDiscord/themes/mode.theme.css"
+/**
+ * @name mode
+ * @author mode
+ * @version 0
+*/
+
+/* AUTOMATICALLY GENERATED, DO NOT EDIT */
+
+.theme-dark, .theme-light {
+ --background-primary: $bg;
+ --background-secondary: $bg;
+ --background-secondary-alt: $bg;
+ --text-primary: $fg;
+ --text-secondary: $color15;
+ --accent: $color4;
+ --accent-alt: $color12;
+ --error: $color1;
+ --error-alt: $color9;
+}
+
+.theme-dark {
+ --background-tertiary: $(mix_rgb $bg '#000000' 0.7);
+}
+
+.theme-light {
+ --background-tertiary: $bg;
+}
+EOF
+
diff --git a/.config/mode/switch.d/dunst b/.config/mode/switch.d/dunst
new file mode 100755
index 0000000..2a5a60e
--- /dev/null
+++ b/.config/mode/switch.d/dunst
@@ -0,0 +1,21 @@
+#!/bin/sh
+cat "$XDG_CONFIG_HOME/dunst/base" - << EOF > "$XDG_CONFIG_HOME/dunst/dunstrc"
+frame_color = "$color0"
+
+[urgency_low]
+background = "$bg"
+foreground = "$fg"
+timeout = 10
+
+[urgency_normal]
+background = "$bg"
+foreground = "$fg"
+timeout = 10
+
+[urgency_critical]
+background = "$color1"
+foreground = "$bg"
+frame_color = "$color1"
+timeout = 0
+EOF
+
diff --git a/.config/mode/switch.d/fcitx5 b/.config/mode/switch.d/fcitx5
new file mode 100755
index 0000000..ee99f13
--- /dev/null
+++ b/.config/mode/switch.d/fcitx5
@@ -0,0 +1,28 @@
+#!/bin/sh
+cat "$XDG_DATA_HOME/fcitx5/themes/loek/base.conf" - << EOF > "$XDG_DATA_HOME/fcitx5/themes/loek/theme.conf"
+[InputPanel]
+NormalColor=$fg
+HighlightCandidateColor=$accent_text
+HighlightColor=$color13
+HighlightBackgroundColor=$bg
+
+[InputPanel/Background]
+Color=$bg
+BorderColor=$accent
+
+[InputPanel/Highlight]
+Color=$accent
+
+[Menu/Background]
+Color=$bg
+
+[Menu]
+NormalColor=$fg
+
+[Menu/Highlight]
+Color=$accent
+
+[Menu/Separator]
+Color=$color7
+EOF
+
diff --git a/.config/mode/switch.d/gtk b/.config/mode/switch.d/gtk
new file mode 100755
index 0000000..b5e27cb
--- /dev/null
+++ b/.config/mode/switch.d/gtk
@@ -0,0 +1,14 @@
+#!/bin/sh
+GTK_3_SETTINGS_INI="$XDG_CONFIG_HOME/gtk-3.0/settings.ini"
+GTK_4_SETTINGS_ENV="$XDG_CONFIG_HOME/gtk-4.0/env"
+if [ $mode = "light" ]; then
+ sed 's/^\(export\s\+GTK_THEME=.\+\)-Dark\(.*\)$/\1-Light\2/g' -i "$GTK_4_SETTINGS_ENV"
+ sed "s/-Dark/-Light/" -i "$GTK_3_SETTINGS_INI"
+ sed "s/gtk-application-prefer-dark-theme.*/gtk-application-prefer-dark-theme=false/" -i "$GTK_3_SETTINGS_INI"
+else
+ sed 's/^\(export\s\+GTK_THEME=.\+\)-Light\(.*\)$/\1-Dark\2/g' -i "$GTK_4_SETTINGS_ENV"
+ sed "s/-Light/-Dark/" -i "$GTK_3_SETTINGS_INI"
+ sed "s/gtk-application-prefer-dark-theme.*/gtk-application-prefer-dark-theme=true/" -i "$GTK_3_SETTINGS_INI"
+fi
+grep gtk-theme-name "$GTK_3_SETTINGS_INI" | cut -f2 -d= | xargs xfconf-query -c xsettings -p /Net/ThemeName -s
+
diff --git a/.config/mode/switch.d/mode b/.config/mode/switch.d/mode
new file mode 100755
index 0000000..2b638f6
--- /dev/null
+++ b/.config/mode/switch.d/mode
@@ -0,0 +1,7 @@
+#!/bin/sh
+mkdir -p "$XDG_DATA_HOME/mode"
+rm -f "$XDG_DATA_HOME/mode/dark" "$XDG_DATA_HOME/mode/light"
+
+echo "$mode" > "$XDG_DATA_HOME/mode/active"
+touch "$XDG_DATA_HOME/mode/$mode"
+
diff --git a/.config/mode/switch.d/polybar b/.config/mode/switch.d/polybar
new file mode 100755
index 0000000..b7e752a
--- /dev/null
+++ b/.config/mode/switch.d/polybar
@@ -0,0 +1,13 @@
+#!/bin/sh
+cat << EOF > "$XDG_CONFIG_HOME/polybar/colors.ini"
+[color]
+bg = \${xrdb:background:$bg}
+fg = \${xrdb:foreground:$fg}
+fg-alt = \${xrdb:background:$bg}
+fg-half = \${xrdb:color8:$color8}
+
+alpha = #00000000
+
+; vim:ft=dosini
+EOF
+
diff --git a/.config/mode/switch.d/rofi b/.config/mode/switch.d/rofi
new file mode 100755
index 0000000..19b9008
--- /dev/null
+++ b/.config/mode/switch.d/rofi
@@ -0,0 +1,8 @@
+#!/bin/sh
+cat << EOF > "$XDG_CONFIG_HOME/rofi/colors"
+export background="$bg"
+export foreground="$fg"
+export accent="$accent"
+export accent_text="$accent_text"
+EOF
+
diff --git a/.config/mode/switch.d/vim b/.config/mode/switch.d/vim
new file mode 100755
index 0000000..ea5ab63
--- /dev/null
+++ b/.config/mode/switch.d/vim
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# lightline
+cat - "$XDG_CONFIG_HOME/nvim/lightline-base.vim" << EOF > "$XDG_CONFIG_HOME/nvim/lightline.vim"
+let s:bg = [ '$bg', 'NONE' ]
+let s:fg = [ '$fg', 'NONE' ]
+let s:mode = [ '$color0', 'NONE' ]
+let s:faint = [ '$color8', 'NONE' ]
+let s:none = [ 'NONE', 'NONE' ]
+let s:test = [ '#ff00ff', 'NONE' ]
+EOF
+
+# terminal colors
+cat << EOF > "$XDG_CONFIG_HOME/nvim/termcolors.vim"
+let g:terminal_color_0 = '$color0'
+let g:terminal_color_1 = '$color1'
+let g:terminal_color_2 = '$color2'
+let g:terminal_color_3 = '$color3'
+let g:terminal_color_4 = '$color4'
+let g:terminal_color_5 = '$color5'
+let g:terminal_color_6 = '$color6'
+let g:terminal_color_7 = '$color7'
+let g:terminal_color_8 = '$color8'
+let g:terminal_color_9 = '$color9'
+let g:terminal_color_10 = '$color10'
+let g:terminal_color_11 = '$color11'
+let g:terminal_color_12 = '$color12'
+let g:terminal_color_13 = '$color13'
+let g:terminal_color_14 = '$color14'
+let g:terminal_color_15 = '$color15'
+EOF
+
diff --git a/.config/mode/switch.d/zathura b/.config/mode/switch.d/zathura
new file mode 100755
index 0000000..0fde1d1
--- /dev/null
+++ b/.config/mode/switch.d/zathura
@@ -0,0 +1,27 @@
+#!/bin/sh
+cat << EOF > "$XDG_CONFIG_HOME/zathura/colors"
+set default-bg "$bg"
+set statusbar-bg "$bg"
+set inputbar-bg "$bg"
+set completion-highlight-fg "$bg"
+set completion-bg "$bg"
+set notification-error-fg "$bg"
+set notification-warning-fg "$bg"
+set notification-fg "$bg"
+set recolor-lightcolor "$bg"
+
+set default-fg "$fg"
+set inputbar-fg "$fg"
+set completion-fg "$fg"
+set statusbar-fg "$fg"
+set recolor-darkcolor "$fg"
+
+set notification-error-bg "$color9"
+set notification-warning-bg "$color9"
+set completion-highlight-bg "$color9"
+set highlight-color "$color9"
+
+set highlight-active-color "$color13"
+set notification-bg "$color13"
+EOF
+
diff --git a/.local/share/bin/mode b/.local/share/bin/mode
index 1662525..6589b32 100755
--- a/.local/share/bin/mode
+++ b/.local/share/bin/mode
@@ -30,13 +30,12 @@ examples:
EOF
}
-
get_color() { xrdb -get "$1" | tr -d '\n'; }
hex_to_rgb_array() { pastel format rgb "$1" | cut -c4- | tr '()' '[]' ; }
mix_rgb() { pastel mix --colorspace=RGB --fraction="$3" "$1" "$2" | pastel format hex ; }
switch_xrdb() {
- xrdb -override "$XDG_CONFIG_HOME/X11/$1"
+ xrdb -override "$XDG_CONFIG_HOME/X11/$mode"
bg="$(get_color background)"
fg="$(get_color foreground)"
color0="$(get_color color0)"
@@ -55,336 +54,38 @@ switch_xrdb() {
color13="$(get_color color13)"
color14="$(get_color color14)"
color15="$(get_color color15)"
- [ "$1" == "light" ] && {
+ [ "$mode" == "light" ] && {
accent="$color15"
accent_text="$color0"
}
- [ "$1" == "dark" ] && {
+ [ "$mode" == "dark" ] && {
accent="$(mix_rgb $bg $color0 0.5)"
accent_text="$fg"
}
}
-switch_dunst() {
- cat "$XDG_CONFIG_HOME/dunst/base" - << EOF > "$XDG_CONFIG_HOME/dunst/dunstrc"
-frame_color = "$color0"
-
-[urgency_low]
-background = "$bg"
-foreground = "$fg"
-timeout = 10
-
-[urgency_normal]
-background = "$bg"
-foreground = "$fg"
-timeout = 10
-
-[urgency_critical]
-background = "$color1"
-foreground = "$bg"
-frame_color = "$color1"
-timeout = 0
-EOF
-}
-
-switch_zathura() {
- cat << EOF > "$XDG_CONFIG_HOME/zathura/colors"
-set default-bg "$bg"
-set statusbar-bg "$bg"
-set inputbar-bg "$bg"
-set completion-highlight-fg "$bg"
-set completion-bg "$bg"
-set notification-error-fg "$bg"
-set notification-warning-fg "$bg"
-set notification-fg "$bg"
-set recolor-lightcolor "$bg"
-
-set default-fg "$fg"
-set inputbar-fg "$fg"
-set completion-fg "$fg"
-set statusbar-fg "$fg"
-set recolor-darkcolor "$fg"
-
-set notification-error-bg "$color9"
-set notification-warning-bg "$color9"
-set completion-highlight-bg "$color9"
-set highlight-color "$color9"
-
-set highlight-active-color "$color13"
-set notification-bg "$color13"
-EOF
-}
-
-switch_gtk() {
- GTK_3_SETTINGS_INI="$XDG_CONFIG_HOME/gtk-3.0/settings.ini"
- GTK_4_SETTINGS_ENV="$XDG_CONFIG_HOME/gtk-4.0/env"
- if [ $1 = "light" ]; then
- sed 's/^\(export\s\+GTK_THEME=.\+\)-Dark\(.*\)$/\1-Light\2/g' -i "$GTK_4_SETTINGS_ENV"
- sed "s/-Dark/-Light/" -i "$GTK_3_SETTINGS_INI"
- sed "s/gtk-application-prefer-dark-theme.*/gtk-application-prefer-dark-theme=false/" -i "$GTK_3_SETTINGS_INI"
- else
- sed 's/^\(export\s\+GTK_THEME=.\+\)-Light\(.*\)$/\1-Dark\2/g' -i "$GTK_4_SETTINGS_ENV"
- sed "s/-Light/-Dark/" -i "$GTK_3_SETTINGS_INI"
- sed "s/gtk-application-prefer-dark-theme.*/gtk-application-prefer-dark-theme=true/" -i "$GTK_3_SETTINGS_INI"
- fi
- grep gtk-theme-name "$GTK_3_SETTINGS_INI" | cut -f2 -d= | xargs xfconf-query -c xsettings -p /Net/ThemeName -s
-}
-
-switch_fcitx5() {
- cat "$XDG_DATA_HOME/fcitx5/themes/loek/base.conf" - << EOF > "$XDG_DATA_HOME/fcitx5/themes/loek/theme.conf"
-[InputPanel]
-NormalColor=$fg
-HighlightCandidateColor=$accent_text
-HighlightColor=$color13
-HighlightBackgroundColor=$bg
-
-[InputPanel/Background]
-Color=$bg
-BorderColor=$accent
-
-[InputPanel/Highlight]
-Color=$accent
-
-[Menu/Background]
-Color=$bg
-
-[Menu]
-NormalColor=$fg
-
-[Menu/Highlight]
-Color=$accent
-
-[Menu/Separator]
-Color=$color7
-EOF
-}
-
-switch_chrome() (
- cd ~/.cache/wal/chromium
- rm -f 'Cached Theme.pak' 'bg.png' 'manifest.json'
- convert -size 100x100 "xc:$bg" bg.png
- bg_alt=$(mix_rgb $color7 $bg 0.20)
- fg_alt=$(mix_rgb $color15 $fg 0.60)
- bg="$(hex_to_rgb_array "$bg")"
- fg="$(hex_to_rgb_array "$fg")"
- bg_alt="$(hex_to_rgb_array "$bg_alt")"
- fg_alt="$(hex_to_rgb_array "$fg_alt")"
- cat << EOF > manifest.json
-{
- "description": "colorscheme generated by mode",
- "manifest_version": 2,
- "name": "mode theme",
- "theme": {
- "images": { "theme_frame": "bg.png" },
- "colors": {
- "frame": $bg,
- "button_background": $fg,
- "ntp_background": $bg,
- "ntp_text": $bg,
- "toolbar": $bg_alt,
- "toolbar_button_icon": $fg,
- "tab_background_text": $fg_alt,
- "tab_background_text_inactive": $fg_alt,
- "tab_background_text_incognito": $fg_alt,
- "tab_background_text_incognito_inactive": $fg_alt,
- "bookmark_text": $fg,
- "tab_text": $fg
- },
- "tints": {
- "buttons": [ -1, -1, -1 ],
- "frame_inactive": [ -1, -1, -1 ],
- "frame_incognito": [ -1, -1, -1 ],
- "frame_incognito_inactive": [ -1, -1, -1 ]
- }
- },
- "version": "2"
-}
-EOF
-)
-
-switch_polybar() {
- cat << EOF > "$XDG_CONFIG_HOME/polybar/colors.ini"
-[color]
-bg = \${xrdb:background:$bg}
-fg = \${xrdb:foreground:$fg}
-fg-alt = \${xrdb:background:$bg}
-fg-half = \${xrdb:color8:$color8}
-
-alpha = #00000000
-
-; vim:ft=dosini
-EOF
-}
-
-switch_vim_lightline() {
- cat - "$XDG_CONFIG_HOME/nvim/lightline-base.vim" << EOF > "$XDG_CONFIG_HOME/nvim/lightline.vim"
-let s:bg = [ '$bg', 'NONE' ]
-let s:fg = [ '$fg', 'NONE' ]
-let s:mode = [ '$color0', 'NONE' ]
-let s:faint = [ '$color8', 'NONE' ]
-let s:none = [ 'NONE', 'NONE' ]
-let s:test = [ '#ff00ff', 'NONE' ]
-EOF
-}
-
-switch_vim_terminal() {
- cat << EOF > "$XDG_CONFIG_HOME/nvim/termcolors.vim"
-let g:terminal_color_0 = '$color0'
-let g:terminal_color_1 = '$color1'
-let g:terminal_color_2 = '$color2'
-let g:terminal_color_3 = '$color3'
-let g:terminal_color_4 = '$color4'
-let g:terminal_color_5 = '$color5'
-let g:terminal_color_6 = '$color6'
-let g:terminal_color_7 = '$color7'
-let g:terminal_color_8 = '$color8'
-let g:terminal_color_9 = '$color9'
-let g:terminal_color_10 = '$color10'
-let g:terminal_color_11 = '$color11'
-let g:terminal_color_12 = '$color12'
-let g:terminal_color_13 = '$color13'
-let g:terminal_color_14 = '$color14'
-let g:terminal_color_15 = '$color15'
-EOF
-}
-
-switch_discord() {
- cat << EOF > "$XDG_CONFIG_HOME/BetterDiscord/themes/mode.theme.css"
-/**
- * @name mode
- * @author mode
- * @version 0
-*/
-
-/* AUTOMATICALLY GENERATED, DO NOT EDIT */
-
-.theme-dark, .theme-light {
- --background-primary: $bg;
- --background-secondary: $bg;
- --background-secondary-alt: $bg;
- --text-primary: $fg;
- --text-secondary: $color15;
- --accent: $color4;
- --accent-alt: $color12;
- --error: $color1;
- --error-alt: $color9;
-}
-
-.theme-dark {
- --background-tertiary: $(mix_rgb $bg '#000000' 0.7);
-}
-
-.theme-light {
- --background-tertiary: $bg;
-}
-EOF
-}
-
-reload_terms() {
- escape_msgs="$(cat << EOF | tr -d '\n'
-\033]11;$bg\007
-\033]10;$fg\007
-\033]12;$fg\007
-\033]14;$bg\007
-\033]13;$fg\007
-\033]17;$color8\007
-\033]708;$bg\007
-\033]4;0;$color0\007
-\033]4;1;$color1\007
-\033]4;2;$color2\007
-\033]4;3;$color3\007
-\033]4;4;$color4\007
-\033]4;5;$color5\007
-\033]4;6;$color6\007
-\033]4;7;$color7\007
-\033]4;8;$color8\007
-\033]4;9;$color9\007
-\033]4;10;$color10\007
-\033]4;11;$color11\007
-\033]4;12;$color12\007
-\033]4;13;$color13\007
-\033]4;14;$color14\007
-\033]4;15;$color15\007
-EOF
-)"
- find /dev/pts -exec sh -c "printf \"$escape_msgs\" > {}" \; 2> /dev/null
-}
-
-switch_rofi() {
- cat << EOF > "$XDG_CONFIG_HOME/rofi/colors"
-export background="$bg"
-export foreground="$fg"
-export accent="$accent"
-export accent_text="$accent_text"
-EOF
-}
-
-reload_dunst() {
- killall dunst
- fork dunst
-}
-
-reload_polybar() {
- fork polybar-msg cmd restart
-}
-
-reload_fcitx5() {
- fork fcitx5 -rd
-}
-
-reload_gtk() {
- # this is max jank but xfsettingsd does other things besides live gtk theme
- # reloading, and i don't like having it running constantly because it fucks
- # up fcitx5 and xbindkeys
- (
- fork xfsettingsd
- sleep 1
- killall xfsettingsd
- )
-}
-
-reload_nvim() {
- nvr --serverlist | while read -r nvim_socket ; do
- fork nvr --nostart --servername "$nvim_socket" -c 'source $XDG_CONFIG_HOME/nvim/mode.vim'
- done
-}
-
-generate_cfgs() {
- echo "updating configuration files to $1 mode..."
+switch() {
+ echo "updating configuration files to $mode mode..."
# xrdb needs to complete first, as the rest of the color schemes are derived
# from querying xrdb for colors
- switch_xrdb $1
+ switch_xrdb $mode
- switch_dunst $1 &
- switch_zathura $1 &
- switch_gtk $1 &
- switch_fcitx5 $1 &
- switch_chrome $1 &
- switch_polybar $1 &
- switch_vim_lightline $1 &
- switch_discord $1 &
- switch_vim_terminal $1 &
- switch_rofi $1 &
-
- mkdir -p "$XDG_DATA_HOME/mode"
- echo $1 > "$XDG_DATA_HOME/mode/active"
- rm -f "$XDG_DATA_HOME/mode/dark" "$XDG_DATA_HOME/mode/light"
- touch "$XDG_DATA_HOME/mode/$1"
+ for switch_function in "$XDG_CONFIG_HOME"/mode/switch.d/* ; do
+ ! [ -x "$switch_function" ] && continue
+ . "$switch_function" &
+ done
wait $(jobs -rp)
}
-reload_apps() {
+reload() {
echo "reloading programs..."
- reload_polybar &
- reload_dunst &
- reload_terms &
- reload_fcitx5 &
- reload_gtk &
- reload_nvim &
- rwall &
+ for reload_function in "$XDG_CONFIG_HOME"/mode/reload.d/* ; do
+ ! [ -x "$reload_function" ] && continue
+ . "$reload_function" &
+ done
wait $(jobs -rp)
}
@@ -413,7 +114,14 @@ if [ $run_cfggen -eq 1 ] && [ -z "$mode" ] ; then
echo "error: no action provided" >&2
stupid && exit 1
fi
-
-[ $run_cfggen -eq 1 ] && generate_cfgs $mode
-[ $run_reload -eq 1 ] && reload_apps
+case "$mode" in
+ dark|light) break ;;
+ *)
+ echo "error: $mode is not a valid mode" >&2
+ stupid && exit 1
+ ;;
+esac
+
+[ $run_cfggen -eq 1 ] && switch $mode
+[ $run_reload -eq 1 ] && reload