aboutsummaryrefslogtreecommitdiffstats
path: root/config/hypr/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'config/hypr/scripts')
-rwxr-xr-xconfig/hypr/scripts/Hyprsunset.sh99
-rwxr-xr-xconfig/hypr/scripts/MediaCtrl.sh65
-rw-r--r--config/hypr/scripts/sddm_wallpaper.sh23
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
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage