Add themeswitch script
This commit is contained in:
parent
222dcbb4dd
commit
0d72ee0c84
3 changed files with 93 additions and 13 deletions
80
scripts/toggle-light-dark.sh
Executable file
80
scripts/toggle-light-dark.sh
Executable file
|
@ -0,0 +1,80 @@
|
|||
#!/usr/bin/env bash
|
||||
# Toggle light- or dark-mode for your applications
|
||||
# Usage: toggle [-m light|dark]
|
||||
|
||||
#################
|
||||
### Variables ###
|
||||
#################
|
||||
|
||||
THEME_LIGHT='tdpeuter-light'
|
||||
THEME_DARK='tdpeuter-dark'
|
||||
THEME_DEFAULT="${THEME_LIGHT}"
|
||||
|
||||
STATE_FILE="${HOME}/.local/state/sisyphus/theme"
|
||||
|
||||
declare -A theme_next
|
||||
theme_next[${THEME_LIGHT}]="${THEME_DARK}"
|
||||
theme_next[${THEME_DARK}]="${THEME_LIGHT}"
|
||||
|
||||
declare -A gsettings_alt
|
||||
gsettings_alt[${THEME_LIGHT}]='default'
|
||||
gsettings_alt[${THEME_DARK}]='prefer-dark'
|
||||
|
||||
#############
|
||||
### Logic ###
|
||||
#############
|
||||
|
||||
# Parse options
|
||||
while getopts ":m:" option; do
|
||||
case "${option}" in
|
||||
m)
|
||||
if [ "${OPTARG}" == 'light' ]; then
|
||||
theme="${THEME_LIGHT}"
|
||||
elif [ "${OPTARG}" == 'dark' ]; then
|
||||
theme="${THEME_DARK}"
|
||||
else
|
||||
>&2 printf "Error: Invalid mode: '%s'.\nShould be either 'light' or 'dark'\n" "${option}"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
>&2 printf "Error: Invalid option: '%s'.\n" "${option}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
shift $(( OPTIND - 1 ))
|
||||
|
||||
# Check if the state file exists
|
||||
if ! [ -d "$(dirname ${STATE_FILE})" ]; then
|
||||
mkdir -p "$(dirname ${STATE_FILE})"
|
||||
fi
|
||||
|
||||
# Choose next theme
|
||||
previous_theme="$(cat ${STATE_FILE})"
|
||||
if ! [[ -z "${previous_theme}" || "${theme}" ]]; then
|
||||
theme="${theme_next[${previous_theme}]}"
|
||||
fi
|
||||
echo "${theme:=${THEME_DEFAULT}}" > "${STATE_FILE}"
|
||||
|
||||
######################
|
||||
### Set all themes ###
|
||||
######################
|
||||
|
||||
# GNOME
|
||||
if [ "$(command -v gsettings)" ]; then
|
||||
gsettings set org.gnome.desktop.interface color-scheme "${gsettings_alt[${theme}]}"
|
||||
fi
|
||||
|
||||
# Kitty
|
||||
if [ "$(command -v kitty)" ]; then
|
||||
kitten themes --config-file-name theme.conf "${theme}"
|
||||
fi
|
||||
|
||||
# Vim
|
||||
# This does not reload the config, but will use it when you restart vim
|
||||
# Toggle an existing window using `:colorscheme ${theme}`
|
||||
if [ "$(command -v vim)" ]; then
|
||||
echo "colorscheme ${theme}" > ~/.vim/theme.conf
|
||||
fi
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue