69 lines
1.3 KiB
Python
Executable File
69 lines
1.3 KiB
Python
Executable File
#!/usr/bin/python3
|
|
|
|
import yaml
|
|
import sys
|
|
import os
|
|
|
|
config_files = [
|
|
'/etc/sway/idle.yml',
|
|
os.path.expanduser('~/.config/sway/idle.yml'),
|
|
]
|
|
|
|
env_config = os.environ.get('SWAYIDLE_CONFIG')
|
|
if env_config is not None:
|
|
config_files += env_config
|
|
|
|
options = {
|
|
'debug': '-d',
|
|
'wait': '-w',
|
|
}
|
|
|
|
config = {}
|
|
|
|
found = False
|
|
for f in config_files:
|
|
if not os.path.isfile(f):
|
|
continue
|
|
found = True
|
|
try:
|
|
with open(f) as conf:
|
|
newconf = yaml.load(conf, yaml.SafeLoader)
|
|
config.update(newconf)
|
|
except Exception as e:
|
|
sys.stderr('{}: Could not load {} ({})'.format(sys.argv[0], f, e))
|
|
sys.stderr.flush()
|
|
|
|
if not found:
|
|
sys.stderr('{}: WARNING: No config file found'.format(sys.argv[0]))
|
|
sys.stderr.flush()
|
|
|
|
args = ['swayidle']
|
|
|
|
for k in config:
|
|
c = config[k]
|
|
if c is None or c is False or c is []:
|
|
continue
|
|
|
|
if k == 'timeouts':
|
|
for t in c:
|
|
args.append('timeout')
|
|
args.append(str(t['timeout']))
|
|
args.append(t['command'])
|
|
if 'resume' in t:
|
|
args.append('resume')
|
|
args.append(t['resume'])
|
|
|
|
continue
|
|
|
|
if k in options and c:
|
|
args.append(options[k])
|
|
continue
|
|
|
|
args.append(k)
|
|
args.append(c)
|
|
|
|
args.extend(sys.argv[1:])
|
|
|
|
os.execvp('swayidle', args)
|
|
|