Files
dotfiles-and-setup/src_files/.local/scripts/theme-set
david 52610e056a Ignore brave browser in theme-set for now
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.
2025-11-14 20:00:31 -06:00

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" &