50 lines
1.3 KiB
Python
Executable File
50 lines
1.3 KiB
Python
Executable File
#!/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())
|