mirror of
https://github.com/basecamp/omarchy.git
synced 2025-07-27 12:19:24 +00:00
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
This commit is contained in:
47
bin/omarchy-theme-set
Executable file
47
bin/omarchy-theme-set
Executable file
@ -0,0 +1,47 @@
|
||||
#!/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
|
Reference in New Issue
Block a user