Update lid-power-manager.sh

Removed the ridiculous sudo crap and user specific parts since hyprland is ran as the user and there is no need for root. Inporvments right Also no need for the notify send nagging.
This commit is contained in:
G34RZ 2025-04-18 08:03:18 -07:00
parent d1135eee21
commit 7e84b7accc
1 changed files with 37 additions and 30 deletions

View File

@ -1,36 +1,43 @@
#!/bin/bash #!/bin/sh
EVENT=$1
USER_NAME="your_user_name_here"
USER_ID=$(id -u "$USER_NAME")
USER_ENV_DIR="/run/user/$USER_ID"
LOG="/tmp/lid-handler.log" LOG="/tmp/lid-handler.log"
SAVED_BRIGHTNESS_FILE="/tmp/keyboard_backlight_saved" SAVED_BRIGHTNESS_FILE="/tmp/keyboard_backlight_saved"
BACKLIGHT_NAME="system76_acpi::kbd_backlight" BACKLIGHT_NAME="system76_acpi::kbd_backlight"
LID_PATH=$(find /proc/acpi/button/lid/ -name state | head -n1)
export XDG_RUNTIME_DIR="$USER_ENV_DIR" # Check if the lid path exists
export DBUS_SESSION_BUS_ADDRESS="unix:path=$USER_ENV_DIR/bus" if [[ -z "$LID_PATH" ]] || [[ ! -f "$LID_PATH" ]]; then
echo "$(date): ERROR - Lid state file not found." >> "$LOG"
exit 1
fi
run_user_cmd() { # Watch for lid events
sudo -u "$USER_NAME" XDG_RUNTIME_DIR="$XDG_RUNTIME_DIR" DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" "$@" last_state="unknown"
}
echo "$(date): Lid $EVENT" >>"$LOG" while true; do
# Wait for lid state to change
inotifywait -e modify "$LID_PATH" >/dev/null 2>&1
if [[ "$EVENT" == "close" ]]; then state=$(grep -o 'open\|closed' "$LID_PATH")
# Save current backlight level
brightnessctl --device="$BACKLIGHT_NAME" get >"$SAVED_BRIGHTNESS_FILE" # Log only when lid is opened or closed
# Set backlight to 0 if [[ "$state" != "$last_state" ]]; then
if [[ "$state" == "closed" ]]; then
# Save brightness and suspend when lid is closed
brightnessctl --device="$BACKLIGHT_NAME" get > "$SAVED_BRIGHTNESS_FILE"
brightnessctl --device="$BACKLIGHT_NAME" set 0 brightnessctl --device="$BACKLIGHT_NAME" set 0
echo "$(date): Lid closed. Backlight saved and system suspending..." >> "$LOG"
systemctl suspend systemctl suspend
elif [[ "$EVENT" == "open" ]]; then elif [[ "$state" == "open" ]]; then
# Restore backlight level if saved # Restore brightness when lid is opened
if [[ -f "$SAVED_BRIGHTNESS_FILE" ]]; then if [[ -f "$SAVED_BRIGHTNESS_FILE" ]]; then
BRIGHTNESS=$(cat "$SAVED_BRIGHTNESS_FILE") BRIGHTNESS=$(cat "$SAVED_BRIGHTNESS_FILE")
brightnessctl --device="$BACKLIGHT_NAME" set "$BRIGHTNESS" brightnessctl --device="$BACKLIGHT_NAME" set "$BRIGHTNESS"
echo "$(date): Lid opened. Backlight restored." >> "$LOG"
fi
fi fi
run_user_cmd notify-send "Welcome back!" last_state="$state"
fi fi
done