39 lines
971 B
Bash
Executable File
39 lines
971 B
Bash
Executable File
#!/bin/bash
|
|
# Lock on suspend script
|
|
# Save as /usr/local/bin/lock-on-suspend
|
|
|
|
# Get the user who is logged in to X
|
|
USER=$(who | grep '(:0)' | awk '{print $1}' | head -n1)
|
|
|
|
# If no user found, try alternative method
|
|
if [[ -z "$USER" ]]; then
|
|
USER=$(ps aux | grep -E "(xinit|startx)" | grep -v grep | awk '{print $1}' | head -n1)
|
|
fi
|
|
|
|
# Exit if no user found
|
|
if [[ -z "$USER" ]]; then
|
|
echo "No X user found"
|
|
exit 0
|
|
fi
|
|
|
|
# Get user's home directory
|
|
USER_HOME=$(getent passwd "$USER" | cut -d: -f6)
|
|
|
|
# Set environment variables for the user's X session
|
|
export DISPLAY=:0
|
|
export XAUTHORITY="$USER_HOME/.Xauthority"
|
|
|
|
# Path to your lock script (adjust this to your actual lock script path)
|
|
LOCK_SCRIPT="$USER_HOME/.local/bin/i3lock-main"
|
|
|
|
# Lock as the user
|
|
if [[ -f "$LOCK_SCRIPT" ]]; then
|
|
sudo -u "$USER" "$LOCK_SCRIPT" &
|
|
else
|
|
# Fallback to basic i3lock
|
|
sudo -u "$USER" i3lock --color=1a1a1a --clock --indicator &
|
|
fi
|
|
|
|
# Give lock time to start
|
|
sleep 1
|