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:
parent
d1135eee21
commit
7e84b7accc
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue