diff --git a/tasks/main.yaml b/tasks/main.yaml index 66d6603..382c4d0 100644 --- a/tasks/main.yaml +++ b/tasks/main.yaml @@ -45,6 +45,12 @@ dest: /usr/local/bin/screensaver-start mode: 0755 +- name: screensaver lock script + template: + src: screensaver-lock.sh.j2 + dest: /usr/local/bin/screensaver-lock + mode: 0755 + - import_role: name: dconf-lock vars: diff --git a/templates/screensaver-lock.sh.j2 b/templates/screensaver-lock.sh.j2 new file mode 100644 index 0000000..6db9872 --- /dev/null +++ b/templates/screensaver-lock.sh.j2 @@ -0,0 +1,48 @@ +#!/bin/bash + +# Example locker script -- demonstrates how to use the --transfer-sleep-lock +# option with a fixed delay to give simple lockers a little bit of time to lock +# the screen before the system goes the sleep. + +## CONFIGURATION ############################################################## + +# Command to start the locker (should not fork) +locker="mate-screensaver-command -l" + +# Delay in seconds. Note that by default systemd-logind allows a maximum sleep +# delay of 5 seconds. +sleep_delay=1 + +# Run before starting the locker +pre_lock() { + #mpc pause + return +} + +# Run after the locker exits +post_lock() { + return +} + +############################################################################### + +pre_lock + +# kill locker if we get killed +trap 'kill %%' TERM INT + +if [[ -e /dev/fd/${XSS_SLEEP_LOCK_FD:--1} ]]; then + # lock fd is open, make sure the locker does not inherit a copy + $locker {XSS_SLEEP_LOCK_FD}<&- & + + sleep $sleep_delay + + # now close our fd (only remaining copy) to indicate we're ready to sleep + exec {XSS_SLEEP_LOCK_FD}<&- +else + $locker & +fi + +wait # for locker to exit + +post_lock diff --git a/templates/screensaver-start.sh.j2 b/templates/screensaver-start.sh.j2 index f63b84d..b34a6f9 100644 --- a/templates/screensaver-start.sh.j2 +++ b/templates/screensaver-start.sh.j2 @@ -3,6 +3,6 @@ /usr/local/bin/screensaver-settings #exec xss-lock -- i3lock -c ff00ff -xss-lock -- mate-screensaver-command -l & +xss-lock -l -- /usr/local/bin/screensaver-lock & exec mate-screensaver