I dug at this for a while and it never worked well. There might be some way to do this with what currently exists, but it isn't obvious if so and I don't think it is worth it. I think I may prefer to just set brave to dark mode and keep the frame minimal. Also, my plan is to switch to using qutebrowser as my primary browser anyway.
76 lines
2.6 KiB
Bash
Executable File
76 lines
2.6 KiB
Bash
Executable File
#!/bin/zsh
|
|
|
|
# This script is modeled after Omarchy's omarchy-theme-set script and my theme-switching
|
|
# approach is modeled after Omarchy's theme-switching approach.
|
|
# (See: https://github.com/basecamp/omarchy)
|
|
# Omarchy is licensed under the MIT License. See the original LICENSE file for details at:
|
|
# https://github.com/basecamp/omarchy/blob/master/LICENSE
|
|
# Copyright (c) David Heinemeier Hansson
|
|
|
|
##########################################################################################
|
|
|
|
theme_update_terminal() {
|
|
case "$TERMINAL" in
|
|
("havoc" | "foot")
|
|
echo "TODO: theme update for havoc or foot not yet implemented"
|
|
;;
|
|
("kitty")
|
|
killall -SIGUSR1 kitty
|
|
;;
|
|
esac
|
|
}
|
|
|
|
theme_update_tmux() {
|
|
tmux source-file $DIR_THEME_SETTINGS/.current-theme/tmux.conf
|
|
}
|
|
|
|
theme_update_neovim() {
|
|
nvim_stdpath_run=$(dirname $(
|
|
nvim -l <(echo "vim.cmd.echo('stdpath(\"run\")')") > /dev/stdout 2>&1
|
|
))
|
|
find "$nvim_stdpath_run" -type s -name "nvim*" 2> /dev/null |
|
|
while IFS= read -r nvim_server; do
|
|
timeout 2s nvim --server "$nvim_server" \
|
|
--remote-expr "execute('lua ThemeUpdate()')" \
|
|
> /dev/null 2>&1
|
|
done
|
|
}
|
|
|
|
theme_update_browser() {
|
|
policy='BrowserThemeColor'
|
|
color_hex=$(
|
|
printf '#%02x%02x%02x' $(
|
|
cat $DIR_THEME_SETTINGS/.current-theme/brave.theme | tr ',' ' '
|
|
)
|
|
)
|
|
[[ "$OSTYPE" != *"darwin"* ]] && {
|
|
echo "{\"$policy\": \"$color_hex\"}" > "/etc/brave/policies/managed/color.json"
|
|
brave --refresh-platform-policy --no-startup-window > /dev/null
|
|
} || {
|
|
# TODO: fix or just remove this macos part; currently, property is set and seen
|
|
# by brave, but colors are applied either with a huge delay or not at all
|
|
# defaults write com.brave.Browser $policy -string "$color_hex"
|
|
}
|
|
}
|
|
|
|
[[ ! -z $1 ]] && raw_target="$1" ||
|
|
raw_target=$(
|
|
find $DIR_THEME_SETTINGS -mindepth 1 -maxdepth 1 -type d -exec basename -- {} \; |
|
|
fzf
|
|
)
|
|
|
|
target_theme="$DIR_THEME_SETTINGS/$(echo $raw_target | tr ' ' '-' | tr '[:upper:]' '[:lower:]')"
|
|
[[ ! -d "$target_theme" ]] && echo "theme not found: $target_theme" && exit 1
|
|
|
|
ln -snf "$target_theme" $DIR_THEME_SETTINGS/.current-theme
|
|
|
|
theme_update_terminal
|
|
theme_update_tmux
|
|
theme_update_neovim &
|
|
theme_update_browser
|
|
# theme_update_obsidian # TODO: decide if theming beyond transparency is worth it, if so, implement
|
|
# theme_update_reaper # TODO: implement
|
|
# theme_update_mutt # TODO: possible and actually desired?
|
|
|
|
theme-update-wallpaper "zz-default-for-theme" &
|