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)
 | |
| 
 |