forked from patriciogonzalezvivo/glslViewer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathglslScreenSaver.py
executable file
·78 lines (60 loc) · 2.27 KB
/
glslScreenSaver.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import sys
import time
import yaml
import random
import subprocess
CONFIG_FOLDER = "/usr/share/glslViewer/"
if not os.path.exists( CONFIG_FOLDER ):
CONFIG_FOLDER = "/usr/local/share/glslViewer/"
CONFIG_FILE = os.path.join(CONFIG_FOLDER, "glslScreenSaver.yaml")
USER_CONFIG_FILE = os.path.join(os.path.expanduser("~"),".glslScreenSaver.yaml")
if os.path.exists( USER_CONFIG_FILE ):
CONFIG_FILE = USER_CONFIG_FILE;
OPTION = "run"
TMP_IMAGE = "/tmp/glslScreenSaver.png"
# CMD_SCREENSHOT = "gnome-screenshot -f"
CMD_SCREENSHOT = "xwd -silent -root | convert xwd:- "
def screenshot():
cmd = CMD_SCREENSHOT + " " + TMP_IMAGE
subprocess.call(cmd, shell=True)
def getIdle():
output = subprocess.Popen(["xprintidle"],stdout=subprocess.PIPE)
response = output.communicate()
return float(response[0]) * 0.001
if __name__ == '__main__':
if len(sys.argv) > 1:
if sys.argv[1]:
OPTION = sys.argv[1]
with open( CONFIG_FILE ) as f:
config = yaml.load(f, Loader=yaml.FullLoader)
cmd = "glslViewer"
if (OPTION == "daemon"):
wait = int(config["wait"])
while True:
time.sleep(wait*0.5);
idle = getIdle()
if (idle > wait):
cmd = "glslScreenSaver run"
subprocess.call(cmd, shell=True)
elif (OPTION == "dev"):
cmd += " -l" # always on top
elif (OPTION == "run"):
cmd += " -e cursor,off" # hide cursor
cmd += " -ss" # turn on screensaver mode
cmd += " " + TMP_IMAGE
choise = config["screensaver"]
if (isinstance(choise, list)):
choise = random.choice(choise)
cmd += " " + config["shaders"][choise]["fragment"]
if "vertex" in config["shaders"][choise]:
cmd += " " + config["shaders"][choise]["vertex"]
if "geometry" in config["shaders"][choise]:
cmd += " " + config["shaders"][choise]["geometry"]
if "extra" in config["shaders"][choise]:
cmd += " " + config["shaders"][choise]["extra"]
print(cmd)
screenshot()
subprocess.call(cmd, cwd=CONFIG_FOLDER, shell=True)