From 22502c8b0af525c45e226c9c29cb957bc47473a1 Mon Sep 17 00:00:00 2001 From: Markus Katharina Brechtel Date: Fri, 19 Jun 2020 17:29:45 +0200 Subject: [PATCH] multiple screensaver options --- defaults/main.yaml | 2 +- tasks/main.yaml | 27 ++++++++-- tasks/screensavers/i3lock.yaml | 6 +++ tasks/screensavers/mate-screensaver.yaml | 18 ------- templates/screensaver-lock/i3lock.sh.j2 | 51 +++++++++++++++++++ .../mate-screensaver.sh.j2} | 0 templates/screensaver-start.sh.j2 | 8 --- templates/screensaver-start/i3lock.sh.j2 | 5 ++ .../screensaver-start/mate-screensaver.sh.j2 | 5 ++ 9 files changed, 92 insertions(+), 30 deletions(-) create mode 100644 tasks/screensavers/i3lock.yaml create mode 100644 templates/screensaver-lock/i3lock.sh.j2 rename templates/{screensaver-lock.sh.j2 => screensaver-lock/mate-screensaver.sh.j2} (100%) delete mode 100644 templates/screensaver-start.sh.j2 create mode 100644 templates/screensaver-start/i3lock.sh.j2 create mode 100644 templates/screensaver-start/mate-screensaver.sh.j2 diff --git a/defaults/main.yaml b/defaults/main.yaml index be0fe02..cd9a187 100644 --- a/defaults/main.yaml +++ b/defaults/main.yaml @@ -1,5 +1,5 @@ --- -screensaver_package: mate-screensaver +screensaver: mate-screensaver screensaver_locktime: 10 screensaver_theme: screensavers-popsquares screensaver_sleeptime: "{{screensaver_locktime}}" diff --git a/tasks/main.yaml b/tasks/main.yaml index 55ba0b6..1ff56e0 100644 --- a/tasks/main.yaml +++ b/tasks/main.yaml @@ -3,7 +3,28 @@ - import_tasks: packages.yaml - import_tasks: none.yaml - when: screensaver_package == "none" + when: screensaver == 'none' -- import_tasks: screensavers/mate-screensaver.yaml - when: screensaver_package == "mate-screensaver" +- include_tasks: screensavers/{{screensaver}}.yaml + when: screensaver != 'none' + +- name: screensaver settings script + template: + src: screensaver-settings.sh.j2 + dest: /usr/local/bin/screensaver-settings + mode: 0755 + when: screensaver != 'none' + +- name: screensaver start script + template: + src: screensaver-start/{{screensaver}}.sh.j2 + dest: /usr/local/bin/screensaver-start + mode: 0755 + when: screensaver != 'none' + +- name: screensaver lock script + template: + src: screensaver-lock/{{screensaver}}.sh.j2 + dest: /usr/local/bin/screensaver-lock + mode: 0755 + when: screensaver != 'none' diff --git a/tasks/screensavers/i3lock.yaml b/tasks/screensavers/i3lock.yaml new file mode 100644 index 0000000..92f1809 --- /dev/null +++ b/tasks/screensavers/i3lock.yaml @@ -0,0 +1,6 @@ +--- + +- name: debian packages for i3lock + apt: + pkg: + - i3lock diff --git a/tasks/screensavers/mate-screensaver.yaml b/tasks/screensavers/mate-screensaver.yaml index 382c4d0..296cd84 100644 --- a/tasks/screensavers/mate-screensaver.yaml +++ b/tasks/screensavers/mate-screensaver.yaml @@ -33,24 +33,6 @@ dest: /usr/local/bin/mate-screensaver-helper-inhibition mode: 0755 -- name: screensaver settings script - template: - src: screensaver-settings.sh.j2 - dest: /usr/local/bin/screensaver-settings - mode: 0755 - -- name: screensaver start script - template: - src: screensaver-start.sh.j2 - 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/i3lock.sh.j2 b/templates/screensaver-lock/i3lock.sh.j2 new file mode 100644 index 0000000..d9042e0 --- /dev/null +++ b/templates/screensaver-lock/i3lock.sh.j2 @@ -0,0 +1,51 @@ +#!/bin/bash + +# Example locker script -- demonstrates how to use the --transfer-sleep-lock +# option with i3lock's forking mode to delay sleep until the screen is locked. + +## CONFIGURATION ############################################################## + +# Options to pass to i3lock +i3lock_options="-d -c 000000" + +# Run before starting the locker +pre_lock() { + #mpc pause + return +} + +# Run after the locker exits +post_lock() { + return +} + +############################################################################### + +pre_lock + +# We set a trap to kill the locker if we get killed, then start the locker and +# wait for it to exit. The waiting is not that straightforward when the locker +# forks, so we use this polling only if we have a sleep lock to deal with. +if [[ -e /dev/fd/${XSS_SLEEP_LOCK_FD:--1} ]]; then + kill_i3lock() { + pkill -xu $EUID "$@" i3lock + } + + trap kill_i3lock TERM INT + + # we have to make sure the locker does not inherit a copy of the lock fd + i3lock $i3lock_options {XSS_SLEEP_LOCK_FD}<&- + + # now close our fd (only remaining copy) to indicate we're ready to sleep + exec {XSS_SLEEP_LOCK_FD}<&- + + while kill_i3lock -0; do + sleep 0.5 + done +else + trap 'kill %%' TERM INT + i3lock -n $i3lock_options & + wait +fi + +post_lock diff --git a/templates/screensaver-lock.sh.j2 b/templates/screensaver-lock/mate-screensaver.sh.j2 similarity index 100% rename from templates/screensaver-lock.sh.j2 rename to templates/screensaver-lock/mate-screensaver.sh.j2 diff --git a/templates/screensaver-start.sh.j2 b/templates/screensaver-start.sh.j2 deleted file mode 100644 index b480e0f..0000000 --- a/templates/screensaver-start.sh.j2 +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh - -/usr/local/bin/screensaver-settings - -#exec xss-lock -- i3lock -c ff00ff -#xss-lock -l -- /usr/local/bin/screensaver-lock & - -exec mate-screensaver diff --git a/templates/screensaver-start/i3lock.sh.j2 b/templates/screensaver-start/i3lock.sh.j2 new file mode 100644 index 0000000..7ed2f13 --- /dev/null +++ b/templates/screensaver-start/i3lock.sh.j2 @@ -0,0 +1,5 @@ +#!/bin/sh + +/usr/local/bin/screensaver-settings + +xss-lock -l -- /usr/local/bin/screensaver-lock & diff --git a/templates/screensaver-start/mate-screensaver.sh.j2 b/templates/screensaver-start/mate-screensaver.sh.j2 new file mode 100644 index 0000000..5638e4f --- /dev/null +++ b/templates/screensaver-start/mate-screensaver.sh.j2 @@ -0,0 +1,5 @@ +#!/bin/sh + +/usr/local/bin/screensaver-settings + +exec mate-screensaver