#!/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