Lid-Power-Manger/lid-power-manager.sh

44 lines
1.3 KiB
Bash

#!/bin/sh
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)
# 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