baseproc16-default/theme_shell
Marty Oehme d230ae9218 Add initial shell theming processor
Uses ANSI escape sequences to switch all open terminals to desired
theme. Does not yet include capability to permanently set themes, since
this would have to be handled either through xresources or dependent on
the individual terminals color settings (e.g. `.config/alacritty.yml`
for alacritty). Needs further investigation.
2020-01-31 10:19:25 +01:00

55 lines
1.4 KiB
Bash
Executable file

#!/usr/bin/env bash
readonly dependency=("chriskempson/base16-shell")
path="$1"
package="$2"
theme="$3"
permanent="$4"
file_exists() {
if [[ -f "$1" ]]; then
true
else
false
fi
}
check_tfile() {
if ! file_exists "$tfile"; then
dbg_msg="$dbg_msg theme $theme for rofi not found.\n"
exit 1
fi
}
theme_shell() {
dbg_msg="SHELL: $package - "
tfile="$path/$package/scripts/base16-$theme.sh"
check_tfile
if [[ "$permanent" == "true" ]]; then set_shell_theme; fi
switch_shell_theme
[[ "$DEBUG" == true ]] && echo "$dbg_msg"
}
switch_shell_theme() {
# source "$tfile" -- works, but only for current terminal
# ANSI solution from: https://www.reddit.com/r/unixporn/comments/80nidw/bspwm_script_to_change_all_themes_on_demand/duxjw1e/
# only we can make use of kempson's scripts and send them to all terminals, so we don't have to manually
# sed the colors like sed -nE 's/^(color[0-9|_foreground|_background]+)="(.+)".*$/\1,\2/gp' $tfile
for term in /dev/pts/[0-9]*; do
# shellcheck source=/dev/null
source "$tfile" >"$term"
done
dbg_msg="$dbg_msg Set theme $theme\n"
}
set_shell_theme() {
dbg_msg="$dbg_msg -- shell theme permanent setting not implemented."
}
if printf '%s\n' "${dependency[@]}" | grep -q -P "^$package$"; then
theme_shell
else
printf "Processor does not work for %s, please use another." "$package"
fi