
    f                     :   d dl Z d dlZd dlZd dlZ	 d dlmZ dZ e j                  dd      Z	 e j                  d      Z
 e j                  de
dz         Z e j                  d	d
      ZdZg Zg Ze j                   j#                  dez        Zg dZd Zd Zd Zd Z e       Ze j                   j#                  dez        Z ee      dkD  serJej5                  d       ej5                  dez         ej5                  d       ej5                  de	z          ee      dkD  rej6                  j9                  d       d Zedk  rdZeD ]'  Zej6                  j9                  deefz         edz  Z) 	 	  ededz
  z        Z e re dk(  rdZnK	  e!e       Zedk\  reek  rn7edz  ZdZejF                  j9                  d       	 edk  rn ee      dk(  rdZedk\  rkeedz
     dk(  r2ed
k(  r e jL                  ddde	g       nD e jL                  dde	g       n.eedz
     dk(  r e jL                  e	e	g       n eeedz
            ed
k(  r e jL                  d
d
g       y e jL                  ddd g       y# e$ r Y hw xY w# e$ r dZ Y w xY w# e$ r  e! e"e             ZY w xY w# e$$ r1 ej6                  j9                  d        ejJ                  d        Y e$ r5 edk(  sedk(  rdZY edz  ZdZejF                  j9                  d       Y Uw xY w)!    N)inputbyobuSHELLz	/bin/bashHOMEBYOBU_CONFIG_DIRz/.byobuBYOBU_BACKENDtmuxz%s/.reuse-session)DISPLAYDBUS_SESSION_BUS_ADDRESSSESSION_MANAGERGPG_AGENT_INFOXDG_SESSION_COOKIEXDG_SESSION_PATHGNOME_KEYRING_CONTROLGNOME_KEYRING_PIDr   SSH_ASKPASSSSH_AUTH_SOCKSSH_AGENT_PIDWINDOWIDUPSTART_JOBUPSTART_EVENTSUPSTART_SESSIONUPSTART_INSTANCEc                     g } d}d}t         dk(  rf	 t        j                  ddgt        j                        j	                         d   }t        j                  j                  |j                  d      }n)|j                  t        j                  j                        }|r|j                         D ]  }t        j                  dd	|      }|s|d	k7  s#|j                  d	      dk(  s8t!        |      dkD  sG|j#                  d
      dk(  s\|j#                  d      dk(  sqt$        j'                  d|j)                         z         |j+                  d	      }| j'                  d|d   z         |dz  } t         dk(  rt        j                  ddgt        j                        j	                         d   }t        j                  j                  |j                  d      }n)|j                  t        j                  j                        }|r|j                         D ]}  }|s|j-                  d      r|j                  d      dk(  s-t$        j'                  d|j)                         z         | j'                  d|j+                  d      d   z         |dz  } | S # t        j
                  $ r'}|j                  dk7  r |j                  }Y d }~d }~ww xY w)Nr   Fscreenz-lsstdout   UTF-8z\s+ z..z._z
screen: %szscreen____%sr	   list-sessions_-r
   ztmux: %sz
tmux____%s:)r   
subprocessPopenPIPEcommunicateCalledProcessError
returncodeoutputsysr   encodingdecode
splitlinesresubfindlencounttextappendstripsplit
startswith)sessionsir,   cpesitemss         (/usr/lib/byobu/include/select-session.pyget_sessionsrA   0   sM   
Xh.zGSSUVWX6 	ZZ MM'"6MM#**--.6 q
vsAAQ#X166#;!+A
qwwt}PQ?QVWV]V]^bVcghVh	[[	)*WWS\U__^eAh./!VQ VV_5jooNZZ\]^_&ZZ MM'"6MM#**--.6 qc"qvvc{b'8	[[aggi'(__\AGGCLO34!VQ 	A 
	&	& 	nn	ZZFs   8J" "K5KKc           	      n   t         dk(  r+t        j                  ddgt        j                        j	                         d   }t
        j                  j                  |j                  d      }n)|j                  t
        j                  j                        }|sy d| z  }t        j                  ||t        j                        }|sy d| d|j                  d	      d
}t        j                  ||t        j                        D ]-  }t        j                  ddd|j                  d      d   g       / y y )Nr	   r"   r   r   r    z^%s:.+\((group [^\)]+)\).*$z^_z	-\d+:.+\(r   z\)$zkill-session-tr%   )r   r&   r'   r(   r)   r-   r   r.   r/   r1   search	MULTILINEgroupfindallr9   )session_namer,   patternmasterr>   s        r@   cull_zombiesrK   Z   s     VV_5jooNZZ\]^_&ZZ MM'"6MM#**--.6		
 -|;'99Wfbll3&		 
 (4V\\!_E'::gvr||4 EaV^T1773<?CDE'     c                     | j                  dd      \  }}t        D ]`  }t        j                  |      }|s|dk(  r	ddd|||g}n	dd|dd||g}t	        j
                  |t        t        j                  d	      
       b y )N____   r	   setenvrC   r   z-Sz-Xwr   )r9   BYOBU_UPDATE_ENVVARSosgetenvr&   callopendevnull)sessionbackendrH   varvaluecmds         r@   update_environmentr]   u   s}     vq1,  6S
))C.%
8T<e
<CT<xe
DC??3tBJJ456rL   c                    t        |        | j                  dd      \  }}t        |       |dk(  rAt        rt	        j
                  ddddd|g       y t	        j
                  ddddd|dd	d
g       y t	        j
                  ddd|g       y )NrN   rO   r	   z-uattachrC   new-session;z
set-optionzdestroy-unattachedr   -AOxRR)r]   r9   rK   reuse_sessionsrS   execvp)rX   rY   rH   s      r@   attach_sessionre      s    G vq1,lv99VfdHdLAB99VfdM4sLZnop))Hx<89rL   z%s/.always-selectr   NEWzCreate a new Byobu session (%s)zRun a shell without Byobu (%s)z
Byobu sessions...

   z	  %d. %s
z
Choose 1-%d [1]:  z
ERROR: Invalid input

r`   r   rb   )'rS   r1   r-   r&   builtinsr   	ExceptionPKGrT   r   r   r   r   choicer;   r6   pathexistsrc   rR   rA   rK   r]   re   
show_shellr4   r7   r   writetriesr<   r>   
user_inputintevalstderrKeyboardInterruptexitrd    rL   r@   <module>rz      s  . 
 	 
  		';'ryy299/	1AB 		/62		 37G HI S 'TE6	6: >WW^^/3CDE
x=1
	.>?	-56x=1+,	
qy! 
a::LAq6)*61
0,A67J 
b(F	#_F kfqj		QJEFJJ/0- qyB 	]a
	Q;VaZE!f299Wwu56299Ww&'vzg%"))EE7 &1*%& F
6F8
8h)*g  J  J  #j!"F# 
 ::D388A;	 0lflF	A:56::./0sw   I8 5J 	J, J 
J, !"J, 8J JJJ, JJ, J)%J, (J))J, ,2L!L4"LL