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