diff options
| author | Donald Williams <129223418+dwilliam62@users.noreply.github.com> | 2025-10-13 20:31:53 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-13 20:31:53 -0400 |
| commit | e4be12e23fa8d6f8a73dde974ea6adf242885bc1 (patch) | |
| tree | b879abcf54989120a0931443bfb8203c885c2b20 /config/hypr/scripts | |
| parent | 0e52d19b894e3cfd2c87cfbcc35ae087d48f5485 (diff) | |
| parent | 9d26c191c1071a542e816d1bc2b0b3f96ebfa74d (diff) | |
Merge pull request #841 from JaKooLit/ddubs-hyprsunset
Merge ddubs-hyprsunset into main fixes for wallust, sddm and weather
Diffstat (limited to 'config/hypr/scripts')
| -rwxr-xr-x | config/hypr/scripts/Hyprsunset.sh | 99 | ||||
| -rwxr-xr-x | config/hypr/scripts/MediaCtrl.sh | 65 | ||||
| -rw-r--r-- | config/hypr/scripts/sddm_wallpaper.sh | 23 |
3 files changed, 153 insertions, 34 deletions
diff --git a/config/hypr/scripts/Hyprsunset.sh b/config/hypr/scripts/Hyprsunset.sh new file mode 100755 index 00000000..c7c4b395 --- /dev/null +++ b/config/hypr/scripts/Hyprsunset.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Hyprsunset toggle + Waybar status helper +# Phase 1: manual toggle only (no scheduling) +# Icons: +# - Off: bright sun +# - On: sunset icon if available, otherwise a blue sun +# +# Customize via env vars: +# HYPERSUNSET_TEMP default 4500 (K) +# HYPERSUNSET_ICON_MODE sunset|blue (default: sunset) + +STATE_FILE="$HOME/.cache/.hyprsunset_state" +TARGET_TEMP="${HYPERSUNSET_TEMP:-4500}" +ICON_MODE="${HYPERSUNSET_ICON_MODE:-sunset}" + +ensure_state() { + [[ -f "$STATE_FILE" ]] || echo "off" > "$STATE_FILE" +} + +# Render icons using pango markup to allow colorization +icon_off() { + # universally available sun symbol + printf "☀" +} + +icon_on() { + case "$ICON_MODE" in + sunset) + # sunset emoji (falls back to tofu if no emoji font) + printf "🌇" + ;; + blue) + # no color in text; rely on CSS .on to style if desired + printf "☀" + ;; + *) + printf "☀" + ;; + esac +} + +cmd_toggle() { + ensure_state + state="$(cat "$STATE_FILE" || echo off)" + + # Always stop any running hyprsunset first to avoid CTM manager conflicts + if pgrep -x hyprsunset >/dev/null 2>&1; then + pkill -x hyprsunset || true + # give it a moment to release the CTM manager + sleep 0.2 + fi + +if [[ "$state" == "on" ]]; then + # Turning OFF: set identity and exit + if command -v hyprsunset >/dev/null 2>&1; then + nohup hyprsunset -i >/dev/null 2>&1 & + # if hyprsunset persists, stop it shortly after applying identity + sleep 0.3 && pkill -x hyprsunset || true + fi + echo off > "$STATE_FILE" + notify-send -u low "Hyprsunset: Disabled" || true + else + # Turning ON: start hyprsunset at target temp in background + if command -v hyprsunset >/dev/null 2>&1; then + nohup hyprsunset -t "$TARGET_TEMP" >/dev/null 2>&1 & + fi + echo on > "$STATE_FILE" + notify-send -u low "Hyprsunset: Enabled" "${TARGET_TEMP}K" || true + fi +} + +cmd_status() { + ensure_state + # Prefer live process detection; fall back to state file + if pgrep -x hyprsunset >/dev/null 2>&1; then + onoff="on" + else + onoff="$(cat "$STATE_FILE" || echo off)" + fi + + if [[ "$onoff" == "on" ]]; then + txt="<span size='18pt'>$(icon_on)</span>" + cls="on" + tip="Night light on @ ${TARGET_TEMP}K" + else + txt="<span size='16pt'>$(icon_off)</span>" + cls="off" + tip="Night light off" + fi + printf '{"text":"%s","class":"%s","tooltip":"%s"}\n' "$txt" "$cls" "$tip" +} + +case "${1:-}" in + toggle) cmd_toggle ;; + status) cmd_status ;; + *) echo "usage: $0 [toggle|status]" >&2; exit 2 ;; + esac diff --git a/config/hypr/scripts/MediaCtrl.sh b/config/hypr/scripts/MediaCtrl.sh index 2cbeccf3..000c3ade 100755 --- a/config/hypr/scripts/MediaCtrl.sh +++ b/config/hypr/scripts/MediaCtrl.sh @@ -6,56 +6,57 @@ music_icon="$HOME/.config/swaync/icons/music.png" # Play the next track play_next() { - playerctl next - show_music_notification + playerctl next + show_music_notification } # Play the previous track play_previous() { - playerctl previous - show_music_notification + playerctl previous + show_music_notification } # Toggle play/pause toggle_play_pause() { - playerctl play-pause - show_music_notification + playerctl play-pause + sleep 0.1 + show_music_notification } # Stop playback stop_playback() { - playerctl stop - notify-send -e -u low -i $music_icon " Playback:" " Stopped" + playerctl stop + notify-send -e -u low -i $music_icon " Playback:" " Stopped" } # Display notification with song information show_music_notification() { - status=$(playerctl status) - if [[ "$status" == "Playing" ]]; then - song_title=$(playerctl metadata title) - song_artist=$(playerctl metadata artist) - notify-send -e -u low -i $music_icon "Now Playing:" "$song_title by $song_artist" - elif [[ "$status" == "Paused" ]]; then - notify-send -e -u low -i $music_icon " Playback:" " Paused" - fi + status=$(playerctl status) + if [[ "$status" == "Playing" ]]; then + song_title=$(playerctl metadata title) + song_artist=$(playerctl metadata artist) + notify-send -e -u low -i $music_icon "Now Playing:" "$song_title by $song_artist" + elif [[ "$status" == "Paused" ]]; then + notify-send -e -u low -i $music_icon " Playback:" " Paused" + fi } # Get media control action from command line argument case "$1" in - "--nxt") - play_next - ;; - "--prv") - play_previous - ;; - "--pause") - toggle_play_pause - ;; - "--stop") - stop_playback - ;; - *) - echo "Usage: $0 [--nxt|--prv|--pause|--stop]" - exit 1 - ;; +"--nxt") + play_next + ;; +"--prv") + play_previous + ;; +"--pause") + toggle_play_pause + ;; +"--stop") + stop_playback + ;; +*) + echo "Usage: $0 [--nxt|--prv|--pause|--stop]" + exit 1 + ;; esac diff --git a/config/hypr/scripts/sddm_wallpaper.sh b/config/hypr/scripts/sddm_wallpaper.sh index a781156e..9487188c 100644 --- a/config/hypr/scripts/sddm_wallpaper.sh +++ b/config/hypr/scripts/sddm_wallpaper.sh @@ -10,7 +10,12 @@ wallDIR="$HOME/Pictures/wallpapers" SCRIPTSDIR="$HOME/.config/hypr/scripts" wallpaper_current="$HOME/.config/hypr/wallpaper_effects/.wallpaper_current" wallpaper_modified="$HOME/.config/hypr/wallpaper_effects/.wallpaper_modified" -sddm_simple="/usr/share/sddm/themes/simple_sddm_2" +# Resolve SDDM themes directory (standard paths and NixOS path) +sddm_themes_dir="/usr/share/sddm/themes" +if [ ! -d "$sddm_themes_dir" ] && [ -d "/run/current-system/sw/share/sddm/themes" ]; then + sddm_themes_dir="/run/current-system/sw/share/sddm/themes" +fi +sddm_simple="$sddm_themes_dir/simple_sddm_2" # rofi-wallust-sddm colors path rofi_wallust="$HOME/.config/rofi/wallust/colors-rofi.rasi" @@ -46,6 +51,12 @@ else wallpaper_path="$wallpaper_modified" fi +# Abort on NixOS where this repo doesn't manage SDDM and themes are typically read-only +if hostnamectl 2>/dev/null | grep -q 'Operating System: NixOS'; then + notify-send -i "$iDIR/error.png" "SDDM" "NixOS detected: skipping SDDM background change." + exit 0 +fi + # Launch terminal and apply changes $terminal -e bash -c " echo 'Enter your password to update SDDM wallpapers and colors'; @@ -70,7 +81,15 @@ sudo sed -i \"s/UserIconColor=\\\"#.*\\\"/UserIconColor=\\\"$color7\\\"/\" \"$sd sudo sed -i \"s/PasswordIconColor=\\\"#.*\\\"/PasswordIconColor=\\\"$color7\\\"/\" \"$sddm_theme_conf\" # Copy wallpaper to SDDM theme -sudo cp \"$wallpaper_path\" \"$sddm_simple/Backgrounds/default\" +# Primary: set Backgrounds/default (no extension) for simple_sddm_2 +sudo cp -f \"$wallpaper_path\" \"$sddm_simple/Backgrounds/default\" || true +# Fallbacks: if theme ships default.jpg or default.png, update those too +if [ -e \"$sddm_simple/Backgrounds/default.jpg\" ]; then + sudo cp -f \"$wallpaper_path\" \"$sddm_simple/Backgrounds/default.jpg\" +fi +if [ -e \"$sddm_simple/Backgrounds/default.png\" ]; then + sudo cp -f \"$wallpaper_path\" \"$sddm_simple/Backgrounds/default.png\" +fi notify-send -i \"$iDIR/ja.png\" \"SDDM\" \"Background SET\" "
\ No newline at end of file |
