]> git.donarmstrong.com Git - bin.git/blob - screensaver
update screensaver
[bin.git] / screensaver
1 #!/bin/sh
2
3 cmd_exists () {
4     if which "$1" >/dev/null 2>&1; then
5         return 0;
6     else
7         return 1;
8     fi;
9 }
10
11 fork () {
12     ( "$@" >/dev/null 2>&1 & )
13 }
14
15 cmd_running () {
16     if pkill -0 -u "$(id -u)" "$1"; then
17         return 0;
18     else
19         return 1;
20     fi;
21 }
22
23 should_stop () {
24     if [ "x$1" = "xoff" ] || [ "x$1" = "xstop" ] ; then
25         return 0;
26     else
27         return 1;
28     fi;
29 }
30
31
32 if cmd_exists slock && cmd_exists xautolock; then
33     if cmd_running "xautolock"; then
34         if should_stop "$1"; then
35             xautolock -exit;
36         fi;
37     else
38         if ! should_stop "$1"; then
39             fork xautolock -notifier true -bell 0 -locker slock;
40         fi;
41     fi;
42 elif cmd_exists xscreensaver && [ -e ~/.xscreensaver ]; then
43     if cmd_running "xscreensaver"; then
44         if should_stop "$1"; then
45             xscreensaver-command -exit;
46         fi;
47     else
48         if ! should_stop "$1"; then
49             fork XENVIRONMENT=~/.xscreensaver /usr/bin/xscreensaver;
50         fi;
51     fi;
52 elif cmd_exists xautolock; then
53     if cmd_running "xautolock"; then
54         if should_stop "$1"; then
55             xautolock -exit;
56         fi;
57     else
58         if ! should_stop "$1"; then
59             fork xautolock -notifier true -bell 0;
60         fi;
61     fi;
62 fi;