diff options
-rwxr-xr-x | .config/mode/reload.d/dunst | 4 | ||||
-rwxr-xr-x | .config/mode/reload.d/fcitx5 | 3 | ||||
-rwxr-xr-x | .config/mode/reload.d/gtk | 10 | ||||
-rwxr-xr-x | .config/mode/reload.d/nvim | 5 | ||||
-rwxr-xr-x | .config/mode/reload.d/polybar | 3 | ||||
-rwxr-xr-x | .config/mode/reload.d/term | 30 | ||||
-rwxr-xr-x | .config/mode/reload.d/wall | 3 | ||||
-rwxr-xr-x | .config/mode/switch.d/chrome | 44 | ||||
-rwxr-xr-x | .config/mode/switch.d/discord | 31 | ||||
-rwxr-xr-x | .config/mode/switch.d/dunst | 21 | ||||
-rwxr-xr-x | .config/mode/switch.d/fcitx5 | 28 | ||||
-rwxr-xr-x | .config/mode/switch.d/gtk | 14 | ||||
-rwxr-xr-x | .config/mode/switch.d/mode | 7 | ||||
-rwxr-xr-x | .config/mode/switch.d/polybar | 13 | ||||
-rwxr-xr-x | .config/mode/switch.d/rofi | 8 | ||||
-rwxr-xr-x | .config/mode/switch.d/vim | 32 | ||||
-rwxr-xr-x | .config/mode/switch.d/zathura | 27 | ||||
-rwxr-xr-x | .local/share/bin/mode | 342 |
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 |