Files
omarchy/bin/omarchy-theme-set
Noah Penza 45d6aac29c Add Theme Menu Switcher (#154)
* Add theme menu for quick theme switching

* Bind theme menu

* Fix current theme being selected

* Replace omarchy-theme-next binding with theme menu

* Add omarchy-theme-set and refactor theme menu script

* Add solid black fallback if background image does not exist in current theme
2025-07-14 21:17:04 -07:00

47 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
# omarchy-theme-set: Set a theme, specified by its name.
# Usage: omarchy-theme-set <theme-name>
THEMES_DIR="$HOME/.config/omarchy/themes/"
CURRENT_THEME_DIR="$HOME/.config/omarchy/current/theme"
if [[ -z "$1" ]]; then
echo "Usage: omarchy-theme-set <theme-name>" >&2
exit 1
fi
THEME_NAME="$1"
THEME_PATH="$THEMES_DIR/$THEME_NAME"
BACKGROUND_PATH="$HOME/.config/omarchy/backgrounds/$THEME_NAME"
# Check if the theme entered exists
if [[ ! -d "$THEME_PATH" ]]; then
echo "Theme '$THEME_NAME' does not exist in $THEMES_DIR" >&2
exit 2
fi
# Update theme symlinks
ln -nsf "$BACKGROUND_PATH" "$HOME/.config/omarchy/current/backgrounds"
ln -nsf "$THEME_PATH" "$CURRENT_THEME_DIR"
# Trigger alacritty config reload
touch "$HOME/.config/alacritty/alacritty.toml"
# Restart components to apply new theme
pkill -SIGUSR2 waybar
makoctl reload
hyprctl reload
# Set new background
first_bg=$(find "$HOME/.config/omarchy/current/backgrounds/" -type f | head -n 1)
if [[ -n "$first_bg" ]]; then
ln -nsf "$first_bg" "$HOME/.config/omarchy/current/background"
pkill -x swaybg
setsid swaybg -i "$HOME/.config/omarchy/current/background" -m fill &
else
# Background does not exist for this theme - fallback to solid black.
rm -f "$HOME/.config/omarchy/current/background"
pkill -x swaybg
setsid swaybg -c '#000000' &
fi