baseproc16-default/theme_kitty
Marty Oehme 3d45d759d8
Add experimental kitty processor
Can set the theme for future kitty instances,
but will not theme the current kitty. For that
the ANSI processor is necessary to be invoked.
2022-01-16 13:01:48 +01:00

82 lines
2.2 KiB
Bash
Executable file

#!/usr/bin/env bash
readonly dependency=("kdrag0n/base16-kitty")
readonly app="kitty"
#
# Kitty reads its theme from the `current-theme.conf` file
# in its .config directory.
path="$1"
package="$2"
theme="$3"
permanent="$4"
kitty_conf="$HOME/.config/kitty/kitty.conf"
include_conf="$HOME/.config/kitty/current-theme.conf"
## Main Entrypoint
#
# Finds the right theme template file and starts theme
# switching and, if necessary, permanent setting processes.
main() {
dbg_msg $app "Starting Processor"
tfile="$path/$package/colors/base16-$theme.conf"
if ! file_exists "$tfile"; then
dbg_msg $app "error" "Theme template $theme not found in package $package"
exit 1
fi
if [ ! -f "$kitty_conf" ]; then
dbg_msg $app "error" "Alacritty config file not found. Please make sure file exists: $kitty_conf"
fi
if [[ $permanent == "true" ]]; then save; fi
theme
dbg_msg $app "Processor Done"
}
## Theme switcher
#
# Makes sure that if any application instance is
# currently running, it switches to new theme.
theme() {
:
# currently needs to be done through ANSI theme processor.
# May be doable with some invocation of kitty loading config files.
# Probably needs kitty to run with remote execution enabled.
}
## Theme setter
#
# Takes care of permanently writing the desired
# base16 theme into application settings.
save() {
dbg_msg $app "Saving theme"
# replace colorscheme.yml content with new one
cp "$tfile" "$include_conf"
dbg_msg $app "Wrote theme file to $include_conf"
# find import line in alacritty conf
if ! grep -qe "^include ${include_conf##*/}" "${kitty_conf}"; then
printf "\ninclude %s\n" "${include_conf##*/}" >>"$kitty_conf"
dbg_msg $app "Including theme file in imports"
fi
}
# Safe sourcing: https://stackoverflow.com/a/12694189
DIR="${BASH_SOURCE%/*}"
if [[ ! -d $DIR ]]; then DIR="$PWD"; fi
# shellcheck source=utilities.sh
. "$DIR/utilities.sh"
## Dependency Checker
#
# Makes sure the processor is called for the correct
# base16 package, or refuses to run if it is not.
if printf '%s\n' "${dependency[@]}" | grep -q -P "^$package$"; then
main
else
dbg_msg $app "error" "Processor does not work for package $package"
fi