lock 745 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #!/usr/bin/env bash
  2. LOCK_SCREEN=/var/lock/i3lock-screen.png
  3. LOCK_PID_FILE="$HOME/.cache/autolock.pid"
  4. has?() {
  5. command -v "$1" > /dev/null 2>&1
  6. }
  7. needs() {
  8. missing="$1"
  9. exit 1
  10. }
  11. check_autolock() {
  12. local needs_start=0
  13. if [ -f "$LOCK_PID_FILE" ]; then
  14. ps -p $(cat "$LOCK_PID_FILE") &>/dev/null || needs_start=1
  15. else
  16. needs_start=1
  17. fi
  18. if (( needs_start == 1 )); then
  19. xautolock -time 10 -locker "$HOME/bin/lock" &
  20. LOCK_PID=$!
  21. printf "%d\n" "$LOCK_PID" > "$LOCK_PID_FILE"
  22. fi
  23. }
  24. main() {
  25. xwobf "$LOCK_SCREEN"
  26. i3lock -i "$LOCK_SCREEN"
  27. check_autolock
  28. }
  29. has? xautolock || needs "xautolock"
  30. has? xwobf || needs "xwobf"
  31. has? i3lock || needs "i3lock"
  32. main "$@"