[~] Refactor
This commit is contained in:
parent
a979b64261
commit
c542fbcd79
@ -114,6 +114,109 @@ def resilient_vlc(stream=None):
|
||||
pass
|
||||
time.sleep(1.0)
|
||||
|
||||
def eternal_firefox(
|
||||
tabs=None,
|
||||
profile=None,
|
||||
group_name=None,
|
||||
window_position=None,
|
||||
debug=None,
|
||||
):
|
||||
import os
|
||||
import datetime
|
||||
import pprint
|
||||
import subprocess
|
||||
import time
|
||||
if debug is None:
|
||||
debug = False
|
||||
if tabs is None:
|
||||
raise RuntimeError('no tabs provided')
|
||||
if profile is None:
|
||||
raise RuntimeError('no profile provided')
|
||||
if group_name is None:
|
||||
raise RuntimeError('no group provided')
|
||||
if window_position is None:
|
||||
#window_position = '1,600,0,600,540'
|
||||
raise RuntimeError('no window-position provided')
|
||||
while True:
|
||||
os.system(r'''date''')
|
||||
with subprocess.Popen([
|
||||
'firefox',
|
||||
'-P', profile,
|
||||
*tabs,
|
||||
]) as p:
|
||||
try:
|
||||
if debug:
|
||||
assert subprocess.check_call(['notify-send', '%s:Starting' % group_name]) == 0
|
||||
|
||||
#t3 = ''
|
||||
for k in range(300):
|
||||
t1 = subprocess.check_output(r'''
|
||||
swaymsg -t get_tree | jq -r '..|try select(.pid== %d)'
|
||||
''' % p.pid, shell=True).decode('utf-8')
|
||||
if len(t1) > 10:
|
||||
break
|
||||
#time.sleep(0.1)
|
||||
#t1 = subprocess.check_output(['wmctrl', '-p', '-l']).decode('utf-8')
|
||||
#t4 = [o for o in t1.splitlines() if str(p.pid) in o]
|
||||
#if len(t4) == 1:
|
||||
# t3 = t4[0]
|
||||
# break
|
||||
|
||||
#if t3 == '':
|
||||
# raise RuntimeError
|
||||
|
||||
#t2 = t3.split()[0]
|
||||
#assert os.system('wmctrl -i -r %s -e %s' % (t2, window_position)) == 0
|
||||
assert os.system(r'''
|
||||
swaymsg '[pid="{{PID}}"] move absolute position {{X}}px {{Y}}px'
|
||||
'''.replace('{{PID}}', str(p.pid)) \
|
||||
.replace('{{X}}', str(window_position[1])) \
|
||||
.replace('{{Y}}', str(window_position[2]))) == 0
|
||||
|
||||
#assert os.system('wmctrl -i -r %s -b add,below' % t2) == 0
|
||||
|
||||
if False:
|
||||
for tab in tabs[1:]:
|
||||
time.sleep(10)
|
||||
assert subprocess.check_call([
|
||||
'firefox',
|
||||
'-P', profile,
|
||||
'--new-tab',
|
||||
tab,
|
||||
]) == 0
|
||||
|
||||
|
||||
if debug:
|
||||
assert subprocess.check_call(['notify-send', '%s:Started' % group_name]) == 0
|
||||
|
||||
start = datetime.datetime.now()
|
||||
is_to_restart = lambda : (datetime.datetime.now() - start).total_seconds() >= 900 * 4
|
||||
while not is_to_restart():
|
||||
if not p.poll() is None:
|
||||
break
|
||||
time.sleep(10)
|
||||
|
||||
if debug:
|
||||
assert subprocess.check_call(['notify-send', '%s:Closing' % group_name]) == 0
|
||||
|
||||
#assert os.system('wmctrl -i -c %s' % t2) == 0
|
||||
assert os.system(r'''
|
||||
swaymsg '[pid="%d"] kill'
|
||||
''' % (p.pid,)) == 0
|
||||
|
||||
except:
|
||||
import traceback
|
||||
import pprint
|
||||
pprint.pprint(traceback.format_exc())
|
||||
finally:
|
||||
try:
|
||||
p.wait(20)
|
||||
except subprocess.TimeoutExpired:
|
||||
pprint.pprint([p.pid, '20 seconds timeout', 'kill'])
|
||||
p.kill()
|
||||
if debug:
|
||||
assert subprocess.check_call(['notify-send', '%s:Closed' % group_name]) == 0
|
||||
|
||||
def status():
|
||||
return ' | '.join([
|
||||
subprocess.check_output(o, shell=True).decode('utf-8').strip()
|
||||
@ -196,6 +299,14 @@ try:
|
||||
eternal_oom()
|
||||
elif sys.argv[1] == 'resilient-vlc':
|
||||
resilient_vlc(sys.argv[2:])
|
||||
elif sys.argv[1] == 'eternal-firefox':
|
||||
eternal_firefox(
|
||||
profile=sys.argv[2],
|
||||
group_name=sys.argv[3],
|
||||
window_position=json.loads(sys.argv[4]),
|
||||
debug=bool(sys.argv[5]),
|
||||
tabs=sys.argv[6:],
|
||||
)
|
||||
else:
|
||||
raise NotImplementedError
|
||||
except:
|
||||
|
Loading…
Reference in New Issue
Block a user