aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x.config/mode/switch.d/mode7
-rwxr-xr-x.config/mode/switch.d/vim32
-rw-r--r--.config/nvim/lightline-base.vim18
-rw-r--r--.config/nvim/mode.vim13
l---------[-rwxr-xr-x].local/share/bin/mode128
-rwxr-xr-x.local/share/mode/bin/mode107
-rw-r--r--.local/share/mode/lib/accent.sh10
-rw-r--r--.local/share/mode/lib/functions.sh4
-rw-r--r--.local/share/mode/reload.d/brave11
-rwxr-xr-x.local/share/mode/reload.d/dunst (renamed from .config/mode/reload.d/dunst)0
-rwxr-xr-x.local/share/mode/reload.d/fcitx5 (renamed from .config/mode/reload.d/fcitx5)0
-rwxr-xr-x.local/share/mode/reload.d/gtk (renamed from .config/mode/reload.d/gtk)0
-rwxr-xr-x.local/share/mode/reload.d/nvim (renamed from .config/mode/reload.d/nvim)0
-rwxr-xr-x.local/share/mode/reload.d/polybar (renamed from .config/mode/reload.d/polybar)0
-rwxr-xr-x.local/share/mode/reload.d/term (renamed from .config/mode/reload.d/term)0
-rwxr-xr-x.local/share/mode/reload.d/wall (renamed from .config/mode/reload.d/wall)0
-rwxr-xr-x.local/share/mode/switch.d/chromium (renamed from .config/mode/switch.d/chromium)4
-rwxr-xr-x.local/share/mode/switch.d/discord (renamed from .config/mode/switch.d/discord)2
-rwxr-xr-x.local/share/mode/switch.d/dunst (renamed from .config/mode/switch.d/dunst)0
-rwxr-xr-x.local/share/mode/switch.d/fcitx5 (renamed from .config/mode/switch.d/fcitx5)0
-rwxr-xr-x.local/share/mode/switch.d/gtk (renamed from .config/mode/switch.d/gtk)2
-rwxr-xr-x.local/share/mode/switch.d/mode8
-rwxr-xr-x.local/share/mode/switch.d/polybar (renamed from .config/mode/switch.d/polybar)0
-rwxr-xr-x.local/share/mode/switch.d/rofi (renamed from .config/mode/switch.d/rofi)0
-rwxr-xr-x.local/share/mode/switch.d/vim58
-rwxr-xr-x.local/share/mode/switch.d/xrdb22
-rwxr-xr-x.local/share/mode/switch.d/zathura (renamed from .config/mode/switch.d/zathura)0
l---------.local/share/mode/themes/dark1
-rw-r--r--.local/share/mode/themes/github-dark24
-rw-r--r--.local/share/mode/themes/github-light24
l---------.local/share/mode/themes/light1
31 files changed, 280 insertions, 196 deletions
diff --git a/.config/mode/switch.d/mode b/.config/mode/switch.d/mode
deleted file mode 100755
index 2b638f6..0000000
--- a/.config/mode/switch.d/mode
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/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/vim b/.config/mode/switch.d/vim
deleted file mode 100755
index ea5ab63..0000000
--- a/.config/mode/switch.d/vim
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/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/nvim/lightline-base.vim b/.config/nvim/lightline-base.vim
deleted file mode 100644
index 968b4b1..0000000
--- a/.config/nvim/lightline-base.vim
+++ /dev/null
@@ -1,18 +0,0 @@
-let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
-let s:p.normal.left = [ [ s:fg, s:mode ], [ s:faint, s:bg ] ]
-let s:p.normal.right = [ [ s:faint, s:bg ] ]
-let s:p.normal.middle = [ [ s:none, s:none ] ]
-let s:p.normal.error = [ [ s:test, s:test ] ]
-let s:p.normal.warning = [ [ s:test, s:test ] ]
-let s:p.inactive.left = copy(s:p.normal.left)
-let s:p.inactive.right = copy(s:p.normal.right)
-let s:p.inactive.middle = copy(s:p.normal.middle)
-let s:p.insert.left = copy(s:p.normal.left)
-let s:p.replace.left = copy(s:p.insert.left)
-let s:p.visual.left = copy(s:p.insert.left)
-let s:p.tabline.left = copy(s:p.normal.right)
-let s:p.tabline.tabsel = [ [ s:fg, s:mode ] ]
-let s:p.tabline.middle = copy(s:p.normal.right)
-let s:p.tabline.right = copy(s:p.normal.right)
-
-let g:lightline#colorscheme#auto#palette = lightline#colorscheme#flatten(s:p)
diff --git a/.config/nvim/mode.vim b/.config/nvim/mode.vim
index 3ab04cb..e1deaca 100644
--- a/.config/nvim/mode.vim
+++ b/.config/nvim/mode.vim
@@ -1,15 +1,8 @@
" this file should only contain colorscheme information, and sourcing it
" should cause colors set by `mode` to update in an existing neovim session
-
-if filereadable(expand("$XDG_DATA_HOME/mode/light"))
- colorscheme github-light
-else
- colorscheme ghdark
-endif
-
-source $XDG_CONFIG_HOME/nvim/termcolors.vim
-
-source $XDG_CONFIG_HOME/nvim/lightline.vim
+source $XDG_CONFIG_HOME/nvim/mode/colorscheme.vim
+source $XDG_CONFIG_HOME/nvim/mode/termcolors.vim
+source $XDG_CONFIG_HOME/nvim/mode/lightline.vim
call lightline#colorscheme()
source $XDG_CONFIG_HOME/nvim/color-tweaks.vim
diff --git a/.local/share/bin/mode b/.local/share/bin/mode
index 6589b32..8b72998 100755..120000
--- a/.local/share/bin/mode
+++ b/.local/share/bin/mode
@@ -1,127 +1 @@
-#!/bin/sh
-progname="$(basename "$0")"
-stupid() {
- echo "run \`$progname --help\` for options" >&2
-}
-usage() {
- cat << EOF
-$progname -- switch between dark / light theme
-
-usage:
- $progname [-chr] action
-
-options:
- -c, --no-cfggen disable updating of configuration files
- -h, --help display this help text
- -r, --no-reload disable reloading of applications after applying theme
-
-actions:
- dark switch to dark mode
- light switch to light mode
- restore switch to last set mode ($XDG_DATA_HOME/mode/active)
- reload only reload applications, do not update configuration files
- help same as --help option
-
-examples:
- mode dark switch to dark mode and reload applications
- mode restore --no-reload make sure all configuration files are up-to-date
- mode reload only reload applications
-
-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/$mode"
- bg="$(get_color background)"
- fg="$(get_color foreground)"
- color0="$(get_color color0)"
- color1="$(get_color color1)"
- color2="$(get_color color2)"
- color3="$(get_color color3)"
- color4="$(get_color color4)"
- color5="$(get_color color5)"
- color6="$(get_color color6)"
- color7="$(get_color color7)"
- color8="$(get_color color8)"
- color9="$(get_color color9)"
- color10="$(get_color color10)"
- color11="$(get_color color11)"
- color12="$(get_color color12)"
- color13="$(get_color color13)"
- color14="$(get_color color14)"
- color15="$(get_color color15)"
- [ "$mode" == "light" ] && {
- accent="$color15"
- accent_text="$color0"
- }
- [ "$mode" == "dark" ] && {
- accent="$(mix_rgb $bg $color0 0.5)"
- accent_text="$fg"
- }
-}
-
-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 $mode
-
- for switch_function in "$XDG_CONFIG_HOME"/mode/switch.d/* ; do
- ! [ -x "$switch_function" ] && continue
- . "$switch_function" &
- done
-
- wait $(jobs -rp)
-}
-
-reload() {
- echo "reloading programs..."
-
- for reload_function in "$XDG_CONFIG_HOME"/mode/reload.d/* ; do
- ! [ -x "$reload_function" ] && continue
- . "$reload_function" &
- done
-
- wait $(jobs -rp)
-}
-
-run_cfggen=1
-run_reload=1
-mode=""
-
-for arg in "$@" ; do
- case "$arg" in
- --) break ;;
- -h|--help|help) usage ; exit 0 ;;
- dark|light) mode="$arg" ;;
- restore) mode="$(cat "$XDG_DATA_HOME/mode/active")" ;;
- reload) run_reload=1 run_cfggen=0 ;;
- -r|--no-reload) run_reload=0 ;;
- -c|--no-cfggen) run_cfggen=0 ;;
- *)
- echo "error: unknown argument: $arg" >&2
- stupid && exit 1
- ;;
- esac
-done
-
-if [ $run_cfggen -eq 1 ] && [ -z "$mode" ] ; then
- echo "error: no action provided" >&2
- stupid && exit 1
-fi
-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
-
+../mode/bin/mode \ No newline at end of file
diff --git a/.local/share/mode/bin/mode b/.local/share/mode/bin/mode
new file mode 100755
index 0000000..a4e6947
--- /dev/null
+++ b/.local/share/mode/bin/mode
@@ -0,0 +1,107 @@
+#!/bin/sh
+progname="$(basename "$0")"
+data="$(readlink -f "$(dirname "$(readlink -f "$0")")/..")"
+export data
+
+stupid() {
+ echo "run \`$progname --help\` for options" >&2
+}
+usage() {
+ cat << EOF
+$progname -- switch system themes
+
+usage:
+ $progname [-chr] action|theme
+
+options:
+ -c, --no-cfggen disable updating of configuration files
+ -h, --help display this help text
+ -r, --no-reload disable reloading of applications after applying theme
+
+actions:
+ restore switch to last set theme ($XDG_CACHE_HOME/mode/state/theme)
+ reload do not update configuration files, only reload applications
+ help same as --help option
+
+themes:
+ $(ls "$data/themes" | tr '\n' ' ' | fold -sw 60)
+
+examples:
+ mode dark switch to dark mode and reload applications
+ mode restore --no-reload make sure all configuration files are up-to-date
+ mode reload only reload applications
+
+EOF
+}
+
+. "$data/lib/functions.sh"
+
+switch() {
+ theme_path="$(readlink -f "$data/themes/$theme")"
+ theme="$(basename "$theme_path")"
+ echo "setting theme to $theme..."
+
+ . "$theme_path"
+
+ case "$mode" in
+ dark|light) break ;;
+ *)
+ echo "error: theme $theme does not define a valid \$mode" >&2
+ stupid && exit 1
+ ;;
+ esac
+ export mode
+
+ # create accent color differently for dark/light mode
+ . "$data/lib/accent.sh"
+
+ for switch_function in "$data"/switch.d/* ; do
+ ! [ -x "$switch_function" ] && continue
+ "$switch_function" &
+ done
+
+ wait $(jobs -rp)
+}
+
+reload() {
+ echo "reloading programs..."
+
+ for reload_function in "$data"/reload.d/* ; do
+ ! [ -x "$reload_function" ] && continue
+ "$reload_function" &
+ done
+
+ wait $(jobs -rp)
+}
+
+run_cfggen=1
+run_reload=1
+theme=""
+
+for arg in "$@" ; do
+ case "$arg" in
+ --) break ;;
+ -h|--help|help) usage ; exit 0 ;;
+ restore) theme="$(cat "$XDG_CACHE_HOME/mode/state/theme")" ;;
+ reload) run_reload=1 run_cfggen=0 ;;
+ -r|--no-reload) run_reload=0 ;;
+ -c|--no-cfggen) run_cfggen=0 ;;
+ *)
+ if [ -e "$data/themes/$arg" ] ; then
+ theme="$arg"
+ continue
+ fi
+ echo "error: unknown argument or theme: $arg" >&2
+ stupid && exit 1
+ ;;
+ esac
+done
+if [ $run_cfggen -eq 1 ] && [ -z "$theme" ] ; then
+ echo "error: no theme selected" >&2
+ stupid && exit 1
+fi
+export theme
+
+[ $run_cfggen -eq 1 ] && switch
+[ $run_reload -eq 1 ] && reload
+
diff --git a/.local/share/mode/lib/accent.sh b/.local/share/mode/lib/accent.sh
new file mode 100644
index 0000000..45643eb
--- /dev/null
+++ b/.local/share/mode/lib/accent.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+[ "$mode" == "light" ] && {
+ export accent="$color15"
+ export accent_text="$color0"
+}
+[ "$mode" == "dark" ] && {
+ export accent="$(mix_rgb $bg $color0 0.5)"
+ export accent_text="$fg"
+}
+
diff --git a/.local/share/mode/lib/functions.sh b/.local/share/mode/lib/functions.sh
new file mode 100644
index 0000000..c7212e4
--- /dev/null
+++ b/.local/share/mode/lib/functions.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+hex_to_rgb_array() { pastel format rgb "$1" | cut -c4- | tr '()' '[]' ; }
+mix_rgb() { pastel mix --colorspace=RGB --fraction="$3" "$1" "$2" | pastel format hex ; }
+
diff --git a/.local/share/mode/reload.d/brave b/.local/share/mode/reload.d/brave
new file mode 100644
index 0000000..62fb08c
--- /dev/null
+++ b/.local/share/mode/reload.d/brave
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+
+# - navigate to brave://settings
+# - run `chrome.send("setBraveThemeType", [THEME_ENUM])` in js console
+# values 1: dark
+# 2: light
+# - navigate to brave://extensions
+# - run `chrome.send("setBraveThemeType", [THEME_ENUM])` in js console
+# - run `chrome.developerPrivate.loadUnpacked()` (TODO: how to handle inputting file path non-interactively)
+# TODO: how to use chromedriver from script (preferably without nodejs+npm or python3+pip dependencies?)
diff --git a/.config/mode/reload.d/dunst b/.local/share/mode/reload.d/dunst
index 3c09a31..3c09a31 100755
--- a/.config/mode/reload.d/dunst
+++ b/.local/share/mode/reload.d/dunst
diff --git a/.config/mode/reload.d/fcitx5 b/.local/share/mode/reload.d/fcitx5
index cd27698..cd27698 100755
--- a/.config/mode/reload.d/fcitx5
+++ b/.local/share/mode/reload.d/fcitx5
diff --git a/.config/mode/reload.d/gtk b/.local/share/mode/reload.d/gtk
index 178f895..178f895 100755
--- a/.config/mode/reload.d/gtk
+++ b/.local/share/mode/reload.d/gtk
diff --git a/.config/mode/reload.d/nvim b/.local/share/mode/reload.d/nvim
index 84ae847..84ae847 100755
--- a/.config/mode/reload.d/nvim
+++ b/.local/share/mode/reload.d/nvim
diff --git a/.config/mode/reload.d/polybar b/.local/share/mode/reload.d/polybar
index af39394..af39394 100755
--- a/.config/mode/reload.d/polybar
+++ b/.local/share/mode/reload.d/polybar
diff --git a/.config/mode/reload.d/term b/.local/share/mode/reload.d/term
index 5f02463..5f02463 100755
--- a/.config/mode/reload.d/term
+++ b/.local/share/mode/reload.d/term
diff --git a/.config/mode/reload.d/wall b/.local/share/mode/reload.d/wall
index f6c2e41..f6c2e41 100755
--- a/.config/mode/reload.d/wall
+++ b/.local/share/mode/reload.d/wall
diff --git a/.config/mode/switch.d/chromium b/.local/share/mode/switch.d/chromium
index 532510a..5f4f342 100755
--- a/.config/mode/switch.d/chromium
+++ b/.local/share/mode/switch.d/chromium
@@ -1,5 +1,7 @@
#!/bin/sh
-PREFIX="$XDG_DATA_HOME/mode/chromium"
+. "$XDG_DATA_HOME/mode/lib/functions.sh"
+
+PREFIX="$XDG_CACHE_HOME/mode/chromium"
mkdir -p "$PREFIX"
rm -f "$PREFIX/Cached Theme.pak"
diff --git a/.config/mode/switch.d/discord b/.local/share/mode/switch.d/discord
index f656783..2a08662 100755
--- a/.config/mode/switch.d/discord
+++ b/.local/share/mode/switch.d/discord
@@ -1,4 +1,6 @@
#!/bin/sh
+. "$data/lib/functions.sh"
+
cat << EOF > "$XDG_CONFIG_HOME/BetterDiscord/themes/mode.theme.css"
/**
* @name mode
diff --git a/.config/mode/switch.d/dunst b/.local/share/mode/switch.d/dunst
index 2a5a60e..2a5a60e 100755
--- a/.config/mode/switch.d/dunst
+++ b/.local/share/mode/switch.d/dunst
diff --git a/.config/mode/switch.d/fcitx5 b/.local/share/mode/switch.d/fcitx5
index ee99f13..ee99f13 100755
--- a/.config/mode/switch.d/fcitx5
+++ b/.local/share/mode/switch.d/fcitx5
diff --git a/.config/mode/switch.d/gtk b/.local/share/mode/switch.d/gtk
index b5e27cb..63a2f83 100755
--- a/.config/mode/switch.d/gtk
+++ b/.local/share/mode/switch.d/gtk
@@ -1,7 +1,7 @@
#!/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
+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"
diff --git a/.local/share/mode/switch.d/mode b/.local/share/mode/switch.d/mode
new file mode 100755
index 0000000..17b981c
--- /dev/null
+++ b/.local/share/mode/switch.d/mode
@@ -0,0 +1,8 @@
+#!/bin/sh
+PREFIX="$XDG_CACHE_HOME/mode/state"
+rm -rf "$PREFIX"/*
+mkdir -p "$PREFIX"
+
+echo "$mode" > "$PREFIX/mode"
+echo "$theme" > "$PREFIX/theme"
+
diff --git a/.config/mode/switch.d/polybar b/.local/share/mode/switch.d/polybar
index b7e752a..b7e752a 100755
--- a/.config/mode/switch.d/polybar
+++ b/.local/share/mode/switch.d/polybar
diff --git a/.config/mode/switch.d/rofi b/.local/share/mode/switch.d/rofi
index 19b9008..19b9008 100755
--- a/.config/mode/switch.d/rofi
+++ b/.local/share/mode/switch.d/rofi
diff --git a/.local/share/mode/switch.d/vim b/.local/share/mode/switch.d/vim
new file mode 100755
index 0000000..6c83f9f
--- /dev/null
+++ b/.local/share/mode/switch.d/vim
@@ -0,0 +1,58 @@
+#!/bin/sh
+PREFIX="$XDG_CONFIG_HOME/nvim/mode"
+mkdir -p "$PREFIX"
+
+# lightline
+cat << EOF > "$PREFIX/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' ]
+
+let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
+let s:p.normal.left = [ [ s:fg, s:mode ], [ s:faint, s:bg ] ]
+let s:p.normal.right = [ [ s:faint, s:bg ] ]
+let s:p.normal.middle = [ [ s:none, s:none ] ]
+let s:p.normal.error = [ [ s:test, s:test ] ]
+let s:p.normal.warning = [ [ s:test, s:test ] ]
+let s:p.inactive.left = copy(s:p.normal.left)
+let s:p.inactive.right = copy(s:p.normal.right)
+let s:p.inactive.middle = copy(s:p.normal.middle)
+let s:p.insert.left = copy(s:p.normal.left)
+let s:p.replace.left = copy(s:p.insert.left)
+let s:p.visual.left = copy(s:p.insert.left)
+let s:p.tabline.left = copy(s:p.normal.right)
+let s:p.tabline.tabsel = [ [ s:fg, s:mode ] ]
+let s:p.tabline.middle = copy(s:p.normal.right)
+let s:p.tabline.right = copy(s:p.normal.right)
+
+let g:lightline#colorscheme#auto#palette = lightline#colorscheme#flatten(s:p)
+EOF
+
+# terminal colors
+cat << EOF > "$PREFIX/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
+
+# color scheme
+cat << EOF > "$PREFIX/colorscheme.vim"
+colorscheme $vim_theme_name
+EOF
+
diff --git a/.local/share/mode/switch.d/xrdb b/.local/share/mode/switch.d/xrdb
new file mode 100755
index 0000000..591a530
--- /dev/null
+++ b/.local/share/mode/switch.d/xrdb
@@ -0,0 +1,22 @@
+#!/bin/sh
+cat << EOF | xrdb -override
+*.color0: $color0
+*.color1: $color1
+*.color2: $color2
+*.color3: $color3
+*.color4: $color4
+*.color5: $color5
+*.color6: $color6
+*.color7: $color7
+*.color8: $color8
+*.color9: $color9
+*.color10: $color10
+*.color11: $color11
+*.color12: $color12
+*.color13: $color13
+*.color14: $color14
+*.color15: $color15
+*.foreground: $fg
+*.background: $bg
+EOF
+
diff --git a/.config/mode/switch.d/zathura b/.local/share/mode/switch.d/zathura
index 0fde1d1..0fde1d1 100755
--- a/.config/mode/switch.d/zathura
+++ b/.local/share/mode/switch.d/zathura
diff --git a/.local/share/mode/themes/dark b/.local/share/mode/themes/dark
new file mode 120000
index 0000000..85ffa87
--- /dev/null
+++ b/.local/share/mode/themes/dark
@@ -0,0 +1 @@
+github-dark \ No newline at end of file
diff --git a/.local/share/mode/themes/github-dark b/.local/share/mode/themes/github-dark
new file mode 100644
index 0000000..f2113a8
--- /dev/null
+++ b/.local/share/mode/themes/github-dark
@@ -0,0 +1,24 @@
+#!/bin/sh
+export mode='dark'
+
+export color0='#484f58'
+export color1='#ffa198'
+export color2='#56d364'
+export color3='#e3b341'
+export color4='#79c0ff'
+export color5='#d2a8ff'
+export color6='#56d4dd'
+export color7='#b1bac4'
+export color8='#6e7681'
+export color9='#ff7b72'
+export color10='#3fb950'
+export color11='#d29922'
+export color12='#58a6ff'
+export color13='#bc8cff'
+export color14='#39c5cf'
+export color15='#ffffff'
+
+export bg='#0d1117'
+export fg='#e6edf3'
+
+export vim_theme_name='ghdark'
diff --git a/.local/share/mode/themes/github-light b/.local/share/mode/themes/github-light
new file mode 100644
index 0000000..d4a5c28
--- /dev/null
+++ b/.local/share/mode/themes/github-light
@@ -0,0 +1,24 @@
+#!/bin/sh
+export mode='light'
+
+export color0='#d1d5da'
+export color1='#cb2431'
+export color2='#22863a'
+export color3='#b08800'
+export color4='#005cc5'
+export color5='#5a32a3'
+export color6='#3192aa'
+export color7='#6a737d'
+export color8='#959da5'
+export color9='#d73a49'
+export color10='#28a745'
+export color11='#dbab09'
+export color12='#0366d6'
+export color13='#5a32a3'
+export color14='#1b7c83'
+export color15='#24292e'
+
+export bg='#ffffff'
+export fg='#24292e'
+
+export vim_theme_name='github-light'
diff --git a/.local/share/mode/themes/light b/.local/share/mode/themes/light
new file mode 120000
index 0000000..7f41e3e
--- /dev/null
+++ b/.local/share/mode/themes/light
@@ -0,0 +1 @@
+github-light \ No newline at end of file