updating wallpaper with a cycle 7am and 8pm

This commit is contained in:
samantha42
2026-04-18 08:11:37 +02:00
parent 75aa2e6605
commit 1788010c7e
13 changed files with 122 additions and 61 deletions

42
hypr/autostart.sh Executable file
View File

@@ -0,0 +1,42 @@
#!/bin/bash
# ~/.config/hypr/autostart.sh
# Launches apps and moves them to the correct workspace once their window appears.
# Use in hyprland.conf:
# exec-once = ~/.config/hypr/autostart.sh
# ── helpers ───────────────────────────────────────────────────────────────────
# Wait for a window matching a class/title regex, then move it to a workspace.
# Usage: launch_on <workspace> <class_regex> <command>
launch_on() {
local ws="$1"
local class="$2"
shift 2
local cmd=("$@")
# Launch the app in the background
"${cmd[@]}" &
# Poll until the window appears, then move it
for _ in $(seq 1 30); do
sleep 1
local addr
addr=$(hyprctl clients -j \
| grep -i "\"class\": \"$class\"" \
| head -1)
if [[ -n "$addr" ]]; then
hyprctl dispatch movetoworkspacesilent "$ws,class:^(${class})$"
break
fi
done
}
# ── app definitions ───────────────────────────────────────────────────────────
# launch_on <workspace> <window class> <command ...>
launch_on 1 firefox firefox
launch_on 2 code code
launch_on 3 kitty kitty
launch_on 4 vesktop vesktop
launch_on 5 steam steam
launch_on 6 spotify spotify

View File

@@ -105,8 +105,7 @@ decoration {
# https://wiki.hypr.land/Configuring/Variables/#animations # https://wiki.hypr.land/Configuring/Variables/#animations
animations { animations {
enabled = yes, please :) enabled = yes
# Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves # Default curves, see https://wiki.hypr.land/Configuring/Animations/#curves
# NAME, X0, Y0, X1, Y1 # NAME, X0, Y0, X1, Y1
bezier = easeOutQuint, 0.23, 1, 0.32, 1 bezier = easeOutQuint, 0.23, 1, 0.32, 1
@@ -160,19 +159,7 @@ misc {
# https://wiki.hypr.land/Configuring/Variables/#input # https://wiki.hypr.land/Configuring/Variables/#input
input { input {
kb_layout = us kb_layout = us,dk
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
} }
# See https://wiki.hypr.land/Configuring/Gestures # See https://wiki.hypr.land/Configuring/Gestures
@@ -197,7 +184,7 @@ $mainMod = SUPER # Sets "Windows" key as main modifier
bind = $mainMod, return, exec, $terminal bind = $mainMod, return, exec, $terminal
bind = $mainMod, W, killactive, bind = $mainMod, W, killactive,
bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit bind = $mainMod, M, exec, command -v hyprshutdown >/dev/null 2>&1 && hyprshutdown || hyprctl dispatch exit
bind = $mainMod, R, exec, hyprctl reload & killall -SIGUSR2 waybar & hyprpaper bind = SUPER, R, exec, sh -c '~/.config/hypr/reload.sh'
bind = $mainMod, V, togglefloating, bind = $mainMod, V, togglefloating,
bind = $mainMod, space, exec, $menu bind = $mainMod, space, exec, $menu
bind = $mainMod, P, pseudo, # dwindle bind = $mainMod, P, pseudo, # dwindle
@@ -243,7 +230,7 @@ bind = SUPER ALT, left, movefocus, l
# Example special workspace (scratchpad) # Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic bind = $mainMod, S, exec, grim -g "$(slurp)" - | wl-copy
bind = $mainMod SHIFT, S, movetoworkspace, special:magic bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll # Scroll through existing workspaces with mainMod + scroll
@@ -274,6 +261,7 @@ bind = $mainMod CTRL, left, resizeactive, -50 0
bind = $mainMod CTRL, up, resizeactive, 0 -50 bind = $mainMod CTRL, up, resizeactive, 0 -50
bind = $mainMod CTRL, down, resizeactive, 0 50 bind = $mainMod CTRL, down, resizeactive, 0 50
bind = $mainMod CTRL, Space, exec, hyprctl switchxkblayout at-translated-set-2-keyboard next
############################## ##############################
### WINDOWS AND WORKSPACES ### ### WINDOWS AND WORKSPACES ###
############################## ##############################
@@ -314,26 +302,8 @@ windowrule {
float = yes float = yes
} }
exec-once = hyprpaper # env stuff
exec-once = waybar exec-once = waybar
exec-once = hyprpaper
# NEW 0.53 syntax exec-once = ~/.config/hypr/autostart.sh
windowrule = match:class ^(discord)$, workspace 4 silent exec-once = ~/.config/hypr/wallpaper-cycle.sh
windowrule = match:class ^(Spotify)$, workspace 6 silent
exec-once = discord
exec-once = spotify
exec-once = discord
exec-once = spotify
exec-once = [workspace 1 silent] firefox
exec-once = [workspace 2 silent] code
exec-once = [workspace 3 silent] kitty
exec-once = [workspace 5 silent] rmpc
exec-once = discord
exec-once = spotify
# Format: monitor=name,resolution@refreshrate,position,scale

View File

@@ -1,14 +1,5 @@
ipc = off # ~/.config/hypr/hyprpaper.conf
ipc = true
splash = false splash = false
wallpaper { preload = ~/.config/hypr/paper/day.jpg
monitor = DP-2 preload = ~/.config/hypr/paper/night.jpg
path = ~/.config/hypr/paper/harbor-sunset.jpg
fit_mode = cover
}
wallpaper {
monitor = HDMI-A-1
path = ~/.config/hypr/paper/harbor-sunset.jpg
fit_mode = cover
}

BIN
hypr/paper/day.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

BIN
hypr/paper/night.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

11
hypr/reload.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/usr/bin/env bash
killall -SIGUSR2 waybar 2>/dev/null
pkill hyprpaper 2>/dev/null
setsid hyprpaper &>/dev/null &
pkill -f wallpaper-cycle.sh 2>/dev/null
setsid ~/.config/hypr/wallpaper-cycle.sh &>/dev/null &
hyprctl reload

48
hypr/wallpaper-cycle.sh Executable file
View File

@@ -0,0 +1,48 @@
#!/usr/bin/env bash
DAY_HOUR=7
NIGHT_HOUR=20
DAY_WALL="$HOME/.config/hypr/paper/day.jpg"
NIGHT_WALL="$HOME/.config/hypr/paper/night.jpg"
apply_day() {
hyprctl hyprpaper wallpaper "DP-2,$DAY_WALL" &>/dev/null
hyprctl hyprpaper wallpaper "HDMI-A-1,$DAY_WALL" &>/dev/null
}
apply_night() {
hyprctl hyprpaper wallpaper "DP-2,$NIGHT_WALL" &>/dev/null
hyprctl hyprpaper wallpaper "HDMI-A-1,$NIGHT_WALL" &>/dev/null
}
apply_now() {
hour=$(date +%H)
if (( hour >= DAY_HOUR && hour < NIGHT_HOUR )); then
apply_night
echo "night"
else
apply_day
echo "day"
fi
}
# --- FAST START ---
current_mode=$(apply_now)
# If hyprpaper wasn't ready yet, retry once shortly after
sleep 0.5
current_mode=$(apply_now)
# --- MAIN LOOP ---
while true; do
hour=$(date +%H)
if (( hour >= DAY_HOUR && hour < NIGHT_HOUR )); then
[[ "$current_mode" != "day" ]] && current_mode=$(apply_now)
else
[[ "$current_mode" != "night" ]] && current_mode=$(apply_now)
fi
# sleep until next minute boundary (feels instant at change)
sleep $((60 - $(date +%S)))
done

View File

@@ -5,7 +5,7 @@
"position": "top", "position": "top",
"height": 24, "height": 24,
"spacing": 4, "spacing": 4,
"margin-top": 4, "margin-top": 8,
"margin-left": 10, "margin-left": 10,
"margin-right": 10, "margin-right": 10,
"modules-left": ["hyprland/workspaces", "hyprland/window"], "modules-left": ["hyprland/workspaces", "hyprland/window"],
@@ -21,7 +21,7 @@
}, },
"format-icons": { "format-icons": {
"1": "1", "2": "2", "3": "3", "4": "4", "5": "5", "1": "1", "2": "2", "3": "3", "4": "4", "5": "5",
"urgent": "", "active": "", "default": "" "urgent": "", "default": ""
} }
}, },
"hyprland/window": { "format": " {}", "max-length": 20, "separate-outputs": true }, "hyprland/window": { "format": " {}", "max-length": 20, "separate-outputs": true },
@@ -60,7 +60,7 @@
"position": "top", "position": "top",
"height": 24, "height": 24,
"spacing": 4, "spacing": 4,
"margin-top": 4, "margin-top": 8,
"margin-left": 10, "margin-left": 10,
"margin-right": 10, "margin-right": 10,
"modules-left": ["hyprland/workspaces", "hyprland/window"], "modules-left": ["hyprland/workspaces", "hyprland/window"],
@@ -76,7 +76,7 @@
}, },
"format-icons": { "format-icons": {
"6": "6", "7": "7", "8": "8", "9": "9", "10": "10", "6": "6", "7": "7", "8": "8", "9": "9", "10": "10",
"urgent": "", "active": "", "default": "" "urgent": "", "default": ""
} }
}, },
"hyprland/window": { "format": " {}", "max-length": 50, "separate-outputs": true }, "hyprland/window": { "format": " {}", "max-length": 50, "separate-outputs": true },

View File

@@ -32,13 +32,12 @@ window#waybar {
#workspaces button:hover { #workspaces button:hover {
background: rgba(137, 180, 250, 0.15); background: rgba(137, 180, 250, 0.15);
color: #89b4fa; color: #ffffff;
} }
#workspaces button.active { #workspaces button.active {
color: #89b4fa; background: rgb(167, 124, 215);
background: rgba(137, 180, 250, 0.20); color: #ffffff;
border-bottom: 2px solid #89b4fa;
} }
#workspaces button.urgent { #workspaces button.urgent {
@@ -47,7 +46,7 @@ window#waybar {
} }
#workspaces button.empty { #workspaces button.empty {
color: #313244; color: #6c7086;
} }
/* ── Window title ───────────────────────────────────── */ /* ── Window title ───────────────────────────────────── */