コード例 #1
0
ファイル: tools.py プロジェクト: testacc/screen-session
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)
コード例 #2
0
        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()
コード例 #3
0
ファイル: manager.py プロジェクト: testacc/screen-session
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')