You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.3 KiB

#!/usr/bin/env python3
import codecs
import glob
import os
import os.path
import sys
def main():
screenlayout_dir = os.path.expanduser('~/.screenlayout')
if not os.path.isdir(screenlayout_dir):
os.makedirs(screenlayout_dir)
profiles = [
os.path.basename(f)
for f in glob.glob(os.path.join(screenlayout_dir, '*.sh'))
]
if len(profiles) == 0:
return 0
cur_profile = profiles[0]
cur_profile_path = os.path.join(screenlayout_dir, '.current')
if os.path.isfile(cur_profile_path):
with codecs.open(cur_profile_path, encoding='utf-8') as infile:
cur_profile = infile.read().strip()
if cur_profile not in profiles:
print('ERROR:{}: current profile {} not found'.format(progname,
cur_profile), file=sys.stderr)
cur_profile = profiles[0]
cur_idx = profiles.index(cur_profile)
next_idx = cur_idx + 1
if next_idx >= (len(profiles) - 1):
next_idx = abs(next_idx - len(profiles))
next_profile = profiles[next_idx]
with codecs.open(cur_profile_path, 'w', encoding='utf-8') as outfile:
outfile.write(next_profile)
os.execl(os.path.join(screenlayout_dir, next_profile), '--')
return 0
if __name__ == '__main__':
sys.exit(main())