-
-
Notifications
You must be signed in to change notification settings - Fork 102
Add sync support to gsettings background path #337
Copy link
Copy link
Open
Description
I have made this shell code that syncs hyprland background with gsettings background path.
-> paper.sh
#!/bin/bash
BACKEND="Hyprpaper" # ofcourse :)
# $BACKGROUND must be bound in Hyprpaper!
BACKGROUND="$HOME/.background"
DIR="$HOME/.config/hypr/scripts/paper"
uri() {
if gsettings get org.gnome.desktop.interface color-scheme | grep -q "dark"; then
echo "picture-uri-dark"
else
echo "picture-uri"
fi
}
reload() {
file=$(gsettings get org.gnome.desktop.background "$(uri)" | sed -E "s/^'file:\/\/|'\$//g")
cp "$file" "$BACKGROUND"
hyprctl hyprpaper wallpaper ",$BACKGROUND" > /dev/null 2>&1 &
}
daemon() {
if [[ -n $(pgrep -f "paper-monitor") ]]; then
echo "[LOG] Daemon already running!"
else
setsid "$DIR/paper --monitor" "$(uri)" &
setsid "$DIR/paper --monitor-scheme" &
fi
}
usage() {
cat <<EOF
[LOG] Welcome to paper!
Usage: paper [arg [...]].
Arguments:
--help |-? |help -| Show this help message
--reload |-r |reload -| Reload $BACKEND
--uri |-uri |uri -| Get currently monitoring picture uri (light/dark) as color-scheme
--backend |-b |backend -| Get the paper/background backend name
EOF
}
case "$1" in
--reload|-r|reload)
reload
;;
--uri|-uri|uri)
uri
;;
--backend|-b|backend)
echo "$BACKEND"
;;
"")
daemon
;;
*)
usage
;;
esac
-> paper --monitor.sh
#!/bin/bash
DIR="$HOME/.config/hypr/scripts/paper"
monitor() {
local current="$1"
gsettings monitor org.gnome.desktop.background "$current" | while read -r; do
"$DIR/paper" --reload
done
}
monitor "$1"
-> paper --monitor-scheme.sh
#!/bin/bash
DIR="$HOME/.config/hypr/scripts/paper"
monitorScheme() {
gsettings monitor org.gnome.desktop.interface color-scheme | while read -r; do
"$DIR/paper" --reload
(
pgid=$(ps -o pgid= -p "$(pgrep -fo "paper --monitor picture-uri")" | tr -d ' ')
if [[ -n "$pgid" ]]; then
kill -- -"$pgid"
fi
setsid "$DIR/paper --monitor" "$("$DIR/paper" --uri)" &
) &
done
}
monitorScheme
Can anyone convert this to a C program and create a pull request? I dont know how to code C tbh.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels