From 7e84b7acccfaa44ffa5a1a5fa015f638479fbf34 Mon Sep 17 00:00:00 2001 From: G34RZ Date: Fri, 18 Apr 2025 08:03:18 -0700 Subject: [PATCH] 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. --- lid-power-manager.sh | 67 ++++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/lid-power-manager.sh b/lid-power-manager.sh index 82321f8..dd046e5 100644 --- a/lid-power-manager.sh +++ b/lid-power-manager.sh @@ -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