
    f)                        d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d Z
	 d dlZd dl dZ ej                  d      Z ej                  d      Z ej                  d	ed
z         Z ej                  dedz         Z ej                  dd      Z ej                  dd      Z ej                  dd      Zedz   ez   Zedz   ez   Zej0                  j3                  e      sedz   ez   Zej0                  j3                  e      sedz   ez   Zej0                  j3                  e      sedz   ez   ZdZdZdez  ZdZ ee      ej>                  e<   eej>                   ee      <    ej@                  eedz           ejB                  e       ej                  Z"d Z#d Z$d Z%d Z&d  e"d       d!f e"d"      d#efffd$Z'd% Z(d& Z)d' Z*d( Z+d) Z,d* Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3e4d1k(  r e3        yy# e$ r  e
d       Y w xY w)2    )print_functionNc                 J    t        d| z         t        j                  d       y )Nz	ERROR: %s   )printsysexit)msgs     /usr/lib/byobu/include/config.pyerrorr   %   s    {S!    )*z(Could not import the python snack modulebyobuHOMEUSERBYOBU_CONFIG_DIRz/.byobuBYOBU_RUN_DIRz/.cache/byobuBYOBU_BACKENDtmux	SOCKETDIRz/var/run/screenBYOBU_PREFIXz/usrz/share/z/share/doc//z/share/doc/packages/AzIf you are using the default set of keybindings, press
<F5> or <ctrl-a-R> to activate these changes.

Otherwise, exit this session and start a new one.z%s/reload-requiredz/poc                     	 dd l }dd l}dd l}dd l}|j	                  d|j                  | |j                  d            }|S # t        $ r Y y w xY w)Nr   hh1234)fcntltermiosstructosunpackioctl
TIOCGWINSZ	Exception)fdr   r   r   r    crs         r
   ioctl_GWINSZr'   L   sQ    }}T5;;r7+=+=vFG" 	 	 	s   =A 	AAc            	      >   	 t         j                  j                  t              st        j                  t        d       t        t        d      } | j                          t        dk(  r't        j                  t        dddddt        z  g       y y # t        $ r Y y w xY w)	Ni  wscreenz-Xat0sourcez
%s/profile)r    pathexistsr   makedirsopenRELOAD_FLAGcloser   
subprocesscallr$   )fs    r
   reload_requiredr7   Y   s|    
	(	) ;;%
;!'')h??M4sHlM]>]^_  s   BB 	BBc                     t        d      xs t        d      xs t        d      } | sW	 t        j                  t        j                         t        j                        }t        |      } t        j
                  |       | s	 t        d   t        d   f} t        | d   dz
        t        | d   dz
        fS # t        $ r Y Bw xY w# t        $ r d} Y >w xY w)Nr   r      LINESCOLUMNS)   P      )	r'   r    r1   ctermidO_RDONLYr3   r$   envint)r&   r%   s     r
   terminal_sizerC   g   s    1o;a;LO



bkk*2R288B< 		Ws9~&2 	BqEAIBqEAI&& 
  
 2s$   AB6 C 6	CCCCc                 *   |rt        d      }nt        d      }t        ddd      }|j                  t        d      d       |j                  t        d      d	       |j                  t        d
      d       |j                  |d       t        | ddt        ffd      }t        | t        d      dd	      }|j                  |ddd       |j                  |ddd       |j                  |j                               dk(  ry|j                         S )Nz.Byobu currently launches at login (toggle off)z4Byobu currently does not launch at login (toggle on)   <   r   )heightwidth
returnExitzHelp -- Quick Start GuideToggle status notificationsr9   Change escape sequence      Exitr   compactz Byobu Configuration Menur   )rM   r9   rM   r9   paddingr   r   r   r   )
_Listboxappend	ButtonBarESCGridFormaddbuttonPressedrunOncecurrent)snackScreensizeisInstalledinstalltextlibbgs          r
   menure   }   s    BC+HI+QbQ/1()1-1*+Q/1%&*;vvs35qAk1891a@r1a&r1a&QYY[!V+	
	r   OkayokayCancelcancelc                     t        ||||      }t        | |d      }t        | |dd      }	|	j                  |ddd       |	j                  |ddd       |j	                  |	j                               S )	Nscrollr   rO   r9   r   )r   r   r   r   rQ   rS   )TextboxrW   rY   rZ   r[   r\   )
r^   rH   rG   titletextrl   buttonstrc   rd   s
             r
   
messageboxrr      so    UFD0Wa0k5!Q'q!Q%r1a&
%%r   c                    t        t        dz   t        z   dz         }|j                         }|j	                          |j                  dt               d      }t        dd|dd      }t        | t        d      d	t        ffd
      }t        | t        d      dd      }|j                  |dd       |j                  |ddd       |j                  |j                               }y)Nz/help.z.txtz<esckey>r   C      )rl   wrapMenure   rO   z
Byobu Helpr9   rM   r   rS   rQ   d   )r1   DOCr   readr3   replace	getesckeyrm   rW   rT   rX   rY   rZ   r[   r\   )r^   r_   r6   ro   rq   rc   rd   buttons           r
   helpr~      s    	#.=
(6
12	Za0RT!!,qy&#68!Dk1\?Aq1q!Qr1a&


199;
'r   c            	         i } i }i }t         dz   t        dz   fD ]  }t        j                  j	                  |      s#	 t        t        |      j                         ||       t        dk(  r|d   d|d   }n|d   d|d	   d|d
   d|d   }|j                         D ]0  }|j                  d      r|j                  dd      }d| |<   ,d| |<   2  g }t        | j                               }t!        |      D ]#  }t#        | |         |g}|j%                  |       % |S # t        $ r t        d|z         Y w xY w)N/status/status/statuszInvalid configuration [%s]r   	tmux_left 
tmux_rightscreen_upper_leftscreen_upper_rightscreen_lower_leftscreen_lower_right# r,   1)SHAREr   r    r.   r/   execr1   rz   r$   r   r   split
startswithr{   listkeyssortedrB   rV   )	statusglolocr6   itemsirb   r   windows	            r
   
readstatusr      s^   
		##%5	%A
B QWW^^A,ac" v;'\):;E !45s;O7PRUViRjlo  qE  mF  GEKKM q||C	
3	QVAYVAY  	V[[]
, Qq	NA&))F 	#  ,	
&
*+,s   $D$$D>=D>c                    d}i }i }t        t        t        dz         j                         ||       ||    j	                         D ]>  }|j                  d      r|j                  dd      }||   dk(  r	|d|z   z  }7|d|z   z  }@ |S )Nr   r   r   r   r   z #)r   r1   r   rz   r   r   r{   )sr   newr   r   r   s         r
   genstatusstringr      s    			d5##$))+S#6
a&,,. Q\\#yyb1AY!^#'>3$(?3 	r   c                    i }t         dz   }| D ]  }|d   ||d   <    dD ]  }|j                  t              s	 t        |d      }|j                         }|j                          	 t        |d      }|D ]K  }|j                  d	|z        r$t        ||      }|j                  |d
|d       ;|j                  |       M |j                    y # t        $ r t        t
        dz   d      }Y w xY w# t        $ r t        |d      }Y w xY w)Nr   r   r   )r   r   r   r   r   r   rr   r)   za+z%s=z="z"
)
r   r   r   r1   r$   r   	readlinesr3   r   write)	r   r   r.   r   keyr6   lineslvals	            r
   writestatusr      s   
9$
 Q1&1,} S^^M",T3A ;;=5779T3A  q||ECK 3'SWWc3'(WWQZ 77%  ,U%%s+A,  T4As#   C'C4C10C14DDc                 r   t               }t        d      }t        dd      }d}|D ])  }|d   dk7  r|j                  |d   ||d          |dz   }+ t	        | t        d      d	ft        d
      dt        ffd      }t        | t        d      dd      }|j                  |ddddd       |j                  |dd       |j                  |ddd       |j                  |j                               dk7  rBd}|D ]&  }|d   dk7  r|j                  |      d   |d<   |dz   }( t        |       t                y)Nr      r   rk   r   )selectedApplyapplyrh   ri   rO   rJ   r9   rM   )rM   r   r   r   )
anchorLeft	anchorToprR   )rM   r   r   r   rQ   rx   )r   LabelCheckboxTreerV   rW   rT   rX   rY   rZ   r[   r\   getEntryValuer   r7   )	r^   r_   itemlistrlr   countitemrc   rd   s	            r
   togglestatusr      sF   LBi"Q	
 T	!W]88DGUT!W8-
!)% qz73ak8S5QR\]^k1:;QBr1aALAq!Qr1a&QYY[!X-
% d
1gmooe$Q'DG195 hr   c           
         d}|rIt        j                  dg      dk(  rt        d      }t        | ddt        d      |t        d      f	      }y
t        j                  dg      dk(  rt        d      }t        | ddd|t        d      f	      }y)Nr   zbyobu-launcher-uninstallr   z/Byobu will not be launched next time you login.rF   r9   Messagerw   )rp   e   zbyobu-launcher-installz9Byobu will be launched automatically next time you login.rx   )r4   r5   rT   rr   )r^   r_   r`   outr}   s        r
   installr     s    	__012a7	
<	=3k2q!I,qymU&	__./0A5	
F	G3k2q)SAfI=R&	r   c                     t        | d      }	 |j                  |       |j                          y # t        $ r |j                          Y y w xY w)Na)r1   r   IOErrorr3   )pr   r6   s      r
   appendtofiler     sH    	!S\	''!* 	 	 	'')	s   0 AAc                     d} t         dk(  rSt        dz   }t        j                  j	                  |      r%t        |      D ]  }|j                  d      s|}  nYt        S t        dz   }t        j                  j	                  |      r%t        |      D ]  }|j                  d      s|}  nt        S | dk(  rt        S | | j                  d      dz      }|d	k(  rd
}|S )Nr   r   z/keybindings.tmuxzset -g prefix z/keybindingszescape ^r   `r   )	r   r   r    r.   r/   r1   r   DEF_ESCfind)liner.   r   escs       r
   r|   r|     s    
V	/	/$WW^^DJ q||$%T >	N	*$WW^^DJ q||IT >BJ	.DIIcNQ3J#r   c                     | j                         rEt        t        j                  d      }t	        j
                  dd| g|       |j                          y y )Nr)   zbyobu-ctrl-ar*   )stdout)isalphar1   r    devnullr4   r5   r3   )r   nullfs     r
   	setesckeyr   9  s>    KKM
rzz3
%//>8S1%@++-	 r   c                 x   t        dt               d      }t        t        d            }t	        | t        d      dft        d      dt
        ffd	      }t        | t        d
      dd      }|j                  |dddd       |j                  |ddd       |j                  |dd       |j                  d       d}|r|j                         }|dk(  r|j                         }t        |      dkD  r|j                  |d          |dk(  s|dk(  r|j                  t               	 t        |j                               }	|j                  t               nd}|r| j!                          |j#                        }
|
dk7  r)t%        |j                                t'                |
dk(  ryy# t        $ r d}	Y `w xY w)Nr9   r   )ro   rI   zEscape key: ctrl-r   r   rh   ri   rO   rK   rM   r   )r   r   r   r   )r   rR   )r   rx   TIMERr   \foor   )Entryr|   r   rT   rW   rX   rY   rZ   setTimerrunvaluelensetr   rB   r$   	popWindowr[   r   r7   )r^   r_   r   esclrc   rd   loopwhichr   dummyr}   s              r
   chgescr   A  s   QY[Q/a#$%qz73ak8S5QR\]^k1561=tQa6sAqQr1aC	
%%'%
g	3	#hlGGCFO	SjC4KGGG		EGGG
 4# $ 


5
!
hCIIKv
  Es   '.F+ +F98F9c                      t         j                  j                  t        dz         ry	 t	        dt
        z        D ]  } d| v s y 	 t         j                  j                  dt        z        ryy# t        $ r Y yw xY w)Nz/disable-autolaunchr   z%s/.profilezbyobu-launchr   z/etc/profile.d/Z97-%s.sh)r    r.   r/   r   r1   r   r$   PKG)r   s    r
   
autolaunchr   g  sw    GGNN#&;;<	
=4'( d
 GGNN-34	
		 	 	
s   A/ A/ A/ /	A;:A;c                     t               } t               }|j                  ddt        d             |j	                  t        d             t               }d}|dkD  ret        || |      }|dk(  rt        ||       }n@|dk(  rt        ||       }n.|dk(  rt        ||       }n|dk(  rt        || |      }t               }|dkD  re|j                          t        j                  d       y	)
z$This is the main loop of our utilityr   r   zByobu Configuration Menuz6<Tab> between elements | <Enter> selects | <Esc> exitsrx   r9   rL   rM   N)rC   SnackScreendrawRootTextrT   pushHelpLiner   re   r~   r   r   r   finishr   r   )r_   r^   r`   tags       r
   mainr   u  s    }!Q"< =>!TUV|

Qw[$,#AX	k4	 3
ax	k4	(3
ax	T	"3
ax	dK	03; Qw !r   __main__)5
__future__r   r   r    os.pathtimestringr4   gettextglobr   snackr$   r   getenvr   r   r   r   r   BYOBU_SOCKETDIRr   r   ry   r.   r/   r   RELOADr2   rX   ordhotkeysbindtextdomain
textdomainrT   r'   r7   rC   re   rr   r~   r   r   r   r   r   r   r|   r   r   r   r   __name__ r   r
   <module>r      sX  4 & 
 	      
3
 ryyryy299/	1AB 		/4/+AB		/62"))K):;ryy0y 3&]"S(	ww~~e	C	%	'	ww~~c,,s2	ww~~c##
 
f"m4	Xc c#h    sEEM *   3 OO
',( @AAfIW]K^abckalnvx{`|J} &8424#L
. z 
  3123s   	G8 8H	H	