o &J^@s>ddlZddlZddlZddlZzddlmZWn ey!YnwdZeddZ edZ ede dZ ed d Z d Z gZgZejd e Zgd ZddZddZddZddZeZejde Zeedksreredede edede eedkr?ejddZedkr>dZeD]Zejdeefed7ZqzNz ededZ Wn eydZ Ynwe re dkrdZ Wnjze!e Z Wneye!e"e Z Ynwe dkre ekrWnJed7Zd Z ej#d Wn8e$yejd!e%dYn$ey9e dks'e d kr+dZ Yned7Zd Z ej#d Ynwedksn eedkrHdZ e dkree ddkrne d kree&ddd"e gn"e&dde gnee ddkre&e e gneee de d kre&d d gdSe&d#d#d$gdS)%N)inputbyobuSHELLz /bin/bashHOMEBYOBU_CONFIG_DIRz/.byobu BYOBU_BACKENDtmuxz%s/.reuse-session)DISPLAYDBUS_SESSION_BUS_ADDRESSSESSION_MANAGERGPG_AGENT_INFOXDG_SESSION_COOKIEXDG_SESSION_PATHGNOME_KEYRING_CONTROLGNOME_KEYRING_PIDr SSH_ASKPASS SSH_AUTH_SOCK SSH_AGENT_PIDWINDOWID UPSTART_JOBUPSTART_EVENTSUPSTART_SESSIONUPSTART_INSTANCEc Csg}d}d}tdkrztjddgtjdd}Wntjy6}z|jdkr)|j}WYd}~nd}~wwtj j durC| d}n| tj j }|r| D]E}t dd |}|r|d kr|d dkrt|dkr|d dkr|d dkrtd ||d }|d |d|d7}qPtdkrtjddgtjdd}tj j dur| d}n| tj j }|r| D])}|r|ds|ddkrtd||d|dd|d7}q|S)NrFscreenz-lsstdoutUTF-8z\s+ z..z._z screen: %sz screen____%sr list-sessions_-r ztmux: %sz tmux____%s:)r subprocessPopenPIPE communicateCalledProcessError returncodeoutputsysrencodingdecode splitlinesresubfindlencounttextappendstripsplit startswith)sessionsir*cpesitemsr>(/usr/lib/byobu/include/select-session.py get_sessions0sJ     B    r@c Cstdkr[tjddgtjdd}tjjdur|d}n|tjj}|s)dSd|}t ||t j }|s9dSd|| df}t ||t j D]}tdd d |d dgqJdSdS) Nrr rrrz^%s:.+\((group [^\)]+)\).*$z^_%s-\d+:.+\(%s\)$rz kill-session-tr#)rr$r%r&r'r+rr,r-r/search MULTILINEgroupfindallr7) session_namer*patternmasterr<r>r>r? cull_zombiesZs   rIcCsn|dd\}}tD]*}t|}|r4|dkr ddd|||g}n dd|dd||g}tj|ttjd d q dS) N____rsetenvrArz-Sz-Xwr)r7BYOBU_UPDATE_ENVVARSosgetenvr$callopendevnull)sessionbackendrFvarvaluecmdr>r>r?update_environmentus rYc Cs|t||dd\}}t||dkr3tr&tddddd|ddd gdStdddd d|gdStd d d |gdS) NrJrKrz-u new-sessionrA;z set-optionzdestroy-unattachedattachr-AOxRR)rYr7rIreuse_sessionsrOexecvp)rTrUrFr>r>r?attach_sessions r`z%s/.always-selectrNEWzCreate a new Byobu session (%s)zRun a shell without Byobu (%s)z Byobu sessions... z %d. %s z Choose 1-%d [1]: z ERROR: Invalid input  rZrr])'rOr/r+r$builtinsr ExceptionPKGrPrrrrchoicer9r4pathexistsr^rNr@rIrYr` show_shellr2r5rwritetriesr:r< user_inputintevalstderrKeyboardInterruptexitr_r>r>r>r?s    *           !