From 5bb4cb6d7138fcac012305b50f52ffd53f9bd2c2 Mon Sep 17 00:00:00 2001 From: Ahmed Abdelhalim Date: Wed, 14 Jan 2026 23:12:28 +0100 Subject: Add hyprtheme (based on omarchy themes) role with 2 themes --- roles/hyprtheme/files/scripts/theme-bg-next | 49 +++++++++++++++++++++++++ roles/hyprtheme/files/scripts/theme-set | 57 +++++++++++++++++++++++++++++ 2 files changed, 106 insertions(+) create mode 100644 roles/hyprtheme/files/scripts/theme-bg-next create mode 100644 roles/hyprtheme/files/scripts/theme-set (limited to 'roles/hyprtheme/files/scripts') diff --git a/roles/hyprtheme/files/scripts/theme-bg-next b/roles/hyprtheme/files/scripts/theme-bg-next new file mode 100644 index 00000000..c3259a45 --- /dev/null +++ b/roles/hyprtheme/files/scripts/theme-bg-next @@ -0,0 +1,49 @@ +#!/bin/bash + +# Cycles through the background images available + +THEMES_PATH="$HOME/.config/hyprthemes/" +THEME_BACKGROUNDS_PATH="$THEMES_PATH/current/backgrounds/" +CURRENT_BACKGROUND_LINK="$THEMES_PATH/current/background" + +mapfile -d '' -t BACKGROUNDS < <(find -L "$THEME_BACKGROUNDS_PATH" -maxdepth 1 -type f -print0 2>/dev/null | sort -z) +TOTAL=${#BACKGROUNDS[@]} + +if [[ $TOTAL -eq 0 ]]; then + notify-send "No background was found for theme" -t 2000 + pkill -x swaybg + setsid uwsm-app -- swaybg --color '#000000' >/dev/null 2>&1 & +else + # Get current background from symlink + if [[ -L "$CURRENT_BACKGROUND_LINK" ]]; then + CURRENT_BACKGROUND=$(readlink "$CURRENT_BACKGROUND_LINK") + else + # Default to first background if no symlink exists + CURRENT_BACKGROUND="" + fi + + # Find current background index + INDEX=-1 + for i in "${!BACKGROUNDS[@]}"; do + if [[ "${BACKGROUNDS[$i]}" == "$CURRENT_BACKGROUND" ]]; then + INDEX=$i + break + fi + done + + # Get next background (wrap around) + if [[ $INDEX -eq -1 ]]; then + # Use the first background when no match was found + NEW_BACKGROUND="${BACKGROUNDS[0]}" + else + NEXT_INDEX=$(((INDEX + 1) % TOTAL)) + NEW_BACKGROUND="${BACKGROUNDS[$NEXT_INDEX]}" + fi + + # Set new background symlink + ln -nsf "$NEW_BACKGROUND" "$CURRENT_BACKGROUND_LINK" + + # Relaunch swaybg + pkill -x swaybg + setsid uwsm-app -- swaybg -i "$CURRENT_BACKGROUND_LINK" -m fill >/dev/null 2>&1 & +fi diff --git a/roles/hyprtheme/files/scripts/theme-set b/roles/hyprtheme/files/scripts/theme-set new file mode 100644 index 00000000..905ce932 --- /dev/null +++ b/roles/hyprtheme/files/scripts/theme-set @@ -0,0 +1,57 @@ +#!/bin/bash + +# Extracted from omarchy with a little modifications +if [[ -z $1 ]]; then + echo "Usage: theme-set " + exit 1 +fi + +THEMES_PATH="$HOME/.config/hyprthemes/themes" +CURRENT_THEME_PATH="$HOME/.config/hyprthemes/current" +THEME_NAME=$(echo "$1" | sed -E 's/<[^>]+>//g' | tr '[:upper:]' '[:lower:]' | tr ' ' '-') + +if [[ ! -d "$THEMES_PATH/$THEME_NAME" ]]; then + echo "Theme '$THEME_NAME' does not exist" + exit 1 +fi + +# Get close to as atomic as possible. +ln -sfn "$THEMES_PATH/$THEME_NAME" "$CURRENT_THEME_PATH.new" +rm -rf "$CURRENT_THEME_PATH" +mv "$CURRENT_THEME_PATH.new" "$CURRENT_THEME_PATH" +./.config/hyprthemes/scripts/theme-bg-next + +pkill -x waybar || true +setsid uwsm-app -- waybar >/dev/null 2>&1 & + +# pkill -x swayosd-server || true +# setsid uwsm-app -- swayosd-server >/dev/null 2>&1 & + +hyprctl reload >/dev/null 2>&1 + +pkill -SIGUSR2 btop || true + +makoctl reload + +if [[ -f ~/.config/alacritty/alacritty.toml ]]; then + touch ~/.config/alacritty/alacritty.toml +fi +killall -SIGUSR1 kitty >/dev/null 2>&1 || true +killall -SIGUSR2 ghostty >/dev/null 2>&1 || true + +# if [[ -f ~/.config/hyprthemes/current/light.mode ]]; 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/hyprthemes/current/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 + -- cgit v1.2.3