def kill_group(session,win): print ('killing group %s'%win) ss=ScreenSaver(session,'/dev/null','/dev/null') tty=ss.tty(win) if tty!="telnet": print('This window is not a group. Aborting.') return ss.select(win) wins=sc.parse_windows(sc.get_windows(session))[0] print wins for w in wins: print('killing %s'%w)
except: ret=0 traceback.print_exc(file=sys.stdout) out('session loading totally failed') os.system('screen -S %s -X echo "screen-session TOTALLY FAILED"'%scs.pid) doexit(1,waitfor) if not ret: out('session loading failed') os.system('screen -S %s -X echo "screen-session FAILED"'%scs.pid) else: if scs.bKill: #scs.kill_old_windows() pass import tools print 'homewindow:'+scs.homewindow print 'select:'+str(scs.win_none_g) scs.select(scs.win_none_g) print 'group:'+scs.get_group() tools.kill_current_group(scs,False,[scs.wrap_group_id],scs.homewindow) os.system('screen -S %s -X echo "screen-session finished loading"'%scs.pid) else: out('No mode specified --load or --save') doexit(ret,waitfor) if __name__=='__main__': main()
def eval_command(scs,command,last_session,psession): command=command.split(' ',1) mode=command[0] if len(command)>1: args=[] for arg in command[1].split(' '): args.append(arg) else: args=[''] #print2ui('command: %s args: %s'%(command,str(args))) if mode.startswith('a'): # attach return tui_attach_session(scs,args[0],psession) if mode.startswith('d'): # deselect print2ui('LOGIC: deselecting' ) scs.focus('bottom') scs.select('-') scs.focus('top') return None,'\0' elif mode=='kill': if last_session: print2ui('LOGIC: killing session \"%s\"'%last_session) scs=ScreenSaver(last_session,'/dev/null','/dev/null') scs.quit() elif mode.startswith('q'): # quit print2ui('LOGIC: quiting...' ) return 'quit',None elif mode.startswith('h'): # help usage() elif mode.startswith('e'): # enter return 'enter',None elif mode=='restart': # restart print2ui('LOGIC: restarting') return 'restart',None elif mode.startswith('r'): # refresh print2ui('LOGIC: refreshing') elif mode.startswith('l'): # layout global tui print2ui('LOGIC: toggling layout') scs.focus('bottom') cnum=scs.get_number_and_title()[0] scs.focus('top') if tui!=maxtui: tui+=1 else: tui=1 reset_tui(scs) if int(cnum)>1: scs.focus('bottom') scs.select(cnum) scs.focus('top') elif mode.startswith('w'): # wipe print2ui('LOGIC: wiping out dead sessions') scs.wipe() elif mode.startswith('save'): # save if args[0]: arg_out='%s'%args[0] else: arg_out='%s'%last_session print2ui('LOGIC: saving session as %s'%arg_out) os.popen('screen-session save --force --log /dev/null --in \"%s\" --out \"%s\"'%(last_session,arg_out)) elif mode.startswith('s'): # screen if args and len(args[0])>0: arg=" ".join(["%s"%v for v in args]) else: arg=' ' cmd='screen -d -m %s'%arg print2ui('LOGIC: creating new session: [%s]'%(cmd.strip())) l1=sc.get_session_list() os.popen(cmd) l2=sc.get_session_list() newsession=sc.find_new_session(l1,l2) return tui_attach_session(scs,newsession,psession) elif mode.startswith('n'): # name if last_session: print2ui('LOGIC: renaming session to \"%s\"'%args[0]) if scs.sessionname() == last_session: scs_target=scs else: scs_target=ScreenSaver(last_session,'/dev/null','/dev/null') nsessionname=scs_target.sessionname(args[0]) print2ui('LOGIC: new sessionname is now [%s]'%nsessionname) scs.focus('bottom') cnum=scs.get_number_and_title()[0] if (psession and psession==last_session): psession=nsessionname print2ui('LOGIC: parent session is now [%s]'%nsessionname) elif nsessionname==scs.sessionname(): print2ui('LOGIC: THIS is session [%s]'%nsessionname) else: scs.screen('screen -x \"%s\"'%nsessionname) scs.title(nsessionname) if int(cnum)>1: #print2ui('LOGIC: killing window \"%s\"'%cnum) scs.kill(cnum) scs.focus('top') return None,nsessionname,psession else: print2ui('LOGIC: no such command')