Created
April 29, 2025 20:33
-
-
Save NeySlim/26edce911dc1630999aa35ee5799df68 to your computer and use it in GitHub Desktop.
Sunshine monitor and wake up on incoming connection for multiple DEs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Define paths | |
SCRIPT_DIR="$HOME/.local/bin" | |
SERVICE_DIR="$HOME/.config/systemd/user" | |
SCRIPT_PATH="$SCRIPT_DIR/monitor-wakeup.sh" | |
SERVICE_PATH="$SERVICE_DIR/monitor-wakeup.service" | |
# Create directories | |
mkdir -p "$SCRIPT_DIR" | |
mkdir -p "$SERVICE_DIR" | |
# Create the monitoring script | |
cat <<EOF > "$SCRIPT_PATH" | |
#!/bin/bash | |
# Detect the desktop environment | |
DE=$(echo \$XDG_CURRENT_DESKTOP | tr '[:upper:]' '[:lower:]') | |
# Function to wake up the monitor | |
wake_monitor() { | |
case "\$DE" in | |
kde) | |
qdbus org.kde.Solid.PowerManagement /org/kde/Solid/PowerManagement org.kde.Solid.PowerManagement.wakeup | |
echo "Monitor awakened via KDE Power Management." | |
;; | |
gnome) | |
gdbus call --session --dest org.gnome.SettingsDaemon.Power --object-path /org/gnome/SettingsDaemon/Power --method org.gnome.SettingsDaemon.Power.ScreenSaver.SetActive false | |
echo "Monitor awakened via GNOME Power Management." | |
;; | |
xfce) | |
xset dpms force on | |
echo "Monitor awakened via XFCE Power Management." | |
;; | |
cinnamon) | |
gdbus call --session --dest org.cinnamon.ScreenSaver --object-path /org/cinnamon/ScreenSaver --method org.cinnamon.ScreenSaver.SetActive false | |
echo "Monitor awakened via Cinnamon Power Management." | |
;; | |
mate) | |
gdbus call --session --dest org.mate.ScreenSaver --object-path /org/mate/ScreenSaver --method org.mate.ScreenSaver.SetActive false | |
echo "Monitor awakened via MATE Power Management." | |
;; | |
sway) | |
swaymsg output '*' dpms on | |
echo "Monitor awakened via Sway." | |
;; | |
*) | |
echo "Unsupported desktop environment: \$DE" | |
;; | |
esac | |
} | |
# Monitor system logs | |
journalctl -f | while read line; do | |
if [[ "\$line" == *"Error: Couldn't find monitor [0]"* ]]; then | |
wake_monitor | |
fi | |
done | |
EOF | |
# Set execution permissions | |
chmod +x "$SCRIPT_PATH" | |
# Create the systemd service file | |
cat <<EOF > "$SERVICE_PATH" | |
[Unit] | |
Description=Monitor Wakeup Service (User) | |
After=graphical.target | |
[Service] | |
ExecStart=%h/.local/bin/monitor-wakeup.sh | |
Restart=always | |
[Install] | |
WantedBy=default.target | |
EOF | |
# Reload systemd and enable the service | |
systemctl --user daemon-reload | |
systemctl --user enable monitor-wakeup.service | |
systemctl --user start monitor-wakeup.service | |
echo "✅ Installation complete! The service is now running and supports KDE, GNOME, XFCE, Cinnamon, Mate, and Sway." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Installation Instructions:
Save this script as install-monitor-service.sh.
Make it executable:
Run it: