Files
omarchycn/bin/omarchy-theme-set-gnome
T

56 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
# omarchy:summary=Apply the current theme to GNOME color mode and icon settings
# omarchy:hidden=true
# Detect mode (light|dark) with this precedence:
# 1. `mode` key in the active theme's colors.toml
# 2. legacy `light.mode` file shipped beside the theme
THEME_DIR=~/.config/omarchy/current/theme
COLORS_FILE="$THEME_DIR/colors.toml"
theme_color() {
local key="$1"
awk -F= -v key="$key" '
{
field = $1
gsub(/^[[:space:]]+|[[:space:]]+$/, "", field)
if (field == key) {
value = $2
gsub(/^[[:space:]]+|[[:space:]]+$/, "", value)
if (value ~ /^"/) {
sub(/^"/, "", value)
sub(/".*$/, "", value)
}
print value
exit
}
}
' "$COLORS_FILE"
}
mode=""
if [[ -f $COLORS_FILE ]]; then
mode=$(theme_color mode)
fi
if [[ -z $mode && -f $THEME_DIR/light.mode ]]; then
mode="light"
fi
if [[ $mode == "light" ]]; then
gsettings set org.gnome.desktop.interface color-scheme "prefer-light"
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita"
else
gsettings set org.gnome.desktop.interface color-scheme "prefer-dark"
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
fi
# Change gnome icon theme color
GNOME_ICONS_THEME=~/.config/omarchy/current/theme/icons.theme
if [[ -f $GNOME_ICONS_THEME ]]; then
gsettings set org.gnome.desktop.interface icon-theme "$(<$GNOME_ICONS_THEME)"
else
gsettings set org.gnome.desktop.interface icon-theme "Yaru-blue"
fi