o
    &ŸJ^×)  ã                   @   sL  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d„ Z
z
d dlZd dlT W n eyA   e
dƒ Y nw dZe d¡Ze d	¡Ze d
ed ¡Ze ded ¡Ze dd¡Ze dd¡Ze dd¡Zed e Zed e Zej e¡sˆed e Zej e¡s”ed e Zej e¡s ed e ZdZdZde ZdZeeƒeje< eejeeƒ< e  eed ¡ e !e¡ ejZ"dd„ Z#dd „ Z$d!d"„ Z%d#d$„ Z&d e"d%ƒd&fe"d'ƒd(efffd)d*„Z'd+d,„ Z(d-d.„ Z)d/d0„ Z*d1d2„ Z+d3d4„ Z,d5d6„ Z-d7d8„ Z.d9d:„ Z/d;d<„ Z0d=d>„ Z1d?d@„ Z2dAdB„ Z3e4dCkr$e3ƒ  dS dS )Dé    )Úprint_functionNc                 C   s   t d|  ƒ t d¡ d S )Nz	ERROR: %sé   )ÚprintÚsysÚexit)Úmsg© r   ú /usr/lib/byobu/include/config.pyÚerror%   s   r
   )Ú*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/ÚAz—If 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                 C   sT   zdd l }dd l}dd l}dd l}| d| | |jd¡¡}W |S  ty)   Y d S w )Nr   ÚhhÚ1234)ÚfcntlÚtermiosÚstructÚosÚunpackÚioctlÚ
TIOCGWINSZÚ	Exception)Úfdr   r   r   r   Úcrr   r   r	   Úioctl_GWINSZL   s   þÿr$   c               	   C   sn   z,t j t¡st  td¡ ttdƒ} |  ¡  tdkr*t	 
tdddddt g¡ W d S W d S  ty6   Y d S w )	Nií  ÚwÚscreenz-XÚatÚ0Úsourcez
%s/profile)r   ÚpathÚexistsr   ÚmakedirsÚopenÚRELOAD_FLAGÚcloser   Ú
subprocessÚcallr!   )Úfr   r   r	   Úreload_requiredY   s   
 ÿÿr3   c                  C   s¨   t dƒpt dƒpt dƒ} | s,zt t ¡ tj¡}t |ƒ} t |¡ W n	 ty+   Y nw | sDz
td td f} W n tyC   d} Y nw t| d d ƒt| d d ƒfS )Nr   r   é   ÚLINESÚCOLUMNS)é   éP   é   )	r$   r   r-   ÚctermidÚO_RDONLYr/   r!   ÚenvÚint)r#   r"   r   r   r	   Úterminal_sizeg   s    ÿÿ r>   c                 C   sÊ   |rt dƒ}nt dƒ}tdddd}| t dƒd¡ | t dƒd	¡ | t d
ƒd¡ | |d¡ t| ddtffdd}t| t dƒdd	ƒ}|j|dddd |j|dddd | | ¡ ¡dkradS | 	¡ 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 notificationsr4   úChange escape sequenceé   é   ÚExitr   ©Úcompactz Byobu Configuration Menur   )rG   r4   rG   r4   ©Úpadding©r   r   r   r   )
Ú_ÚListboxÚappendÚ	ButtonBarÚESCÚGridFormÚaddÚbuttonPressedÚrunOnceÚcurrent)ÚsnackScreenÚsizeÚisInstalledÚinstalltextÚliÚbbÚgr   r   r	   Úmenu}   s   
r_   ÚOkayÚokayÚCancelÚcancelc           
      C   s^   t ||||d}t| |dd}t| |ddƒ}	|	j|dddd |	j|dddd | |	 ¡ ¡S )	N©Úscrollr   rI   r4   r   )r   r   r   r   rK   rM   )ÚTextboxrQ   rS   rT   rU   rV   )
rX   rB   rA   ÚtitleÚtextre   ÚbuttonsÚtr]   r^   r   r   r	   Ú
messagebox‘   s   rk   c                 C   s¤   t td t d ƒ}| ¡ }| ¡  | dtƒ d¡}tdd|ddd}t| t	dƒd	t
ffdd
}t| t	dƒddƒ}| |dd¡ |j|dddd | | ¡ ¡}dS )Nz/help.z.txtz<esckey>r   éC   é   )re   ÚwrapÚMenur_   rI   z
Byobu Helpr4   rG   r   rM   rK   éd   )r-   ÚDOCr   Úreadr/   ÚreplaceÚ	getesckeyrf   rQ   rN   rR   rS   rT   rU   rV   )rX   rY   r2   rh   rj   r]   r^   Úbuttonr   r   r	   Úhelpš   s   rv   c            	   	   C   s  i } i }i }t d td fD ]^}tj |¡rlztt|ƒ ¡ ||ƒ W n ty1   t	d| ƒ Y nw t
dkrAd|d |d f }nd|d	 |d
 |d |d f }| ¡ D ]}| d¡rg| dd¡}d| |< qUd| |< qUqg }t|  ¡ ƒ}t|ƒD ]}t| | ƒ|g}| |¡ qy|S )Nú/status/statusú/statuszInvalid configuration [%s]r   z%s %sÚ	tmux_leftÚ
tmux_rightz%s %s %s %sÚscreen_upper_leftÚscreen_upper_rightÚscreen_lower_leftÚscreen_lower_rightú#Ú r(   Ú1)ÚSHAREr   r   r*   r+   Úexecr-   rr   r!   r
   r   ÚsplitÚ
startswithrs   ÚlistÚkeysÚsortedr=   rP   )	ÚstatusÚgloÚlocr2   ÚitemsÚir\   r‡   Úwindowr   r   r	   Ú
readstatus¨   s2   ÿ 


€r   c                 C   sv   d}i }i }t ttd ƒ ¡ ||ƒ ||   ¡ D ] }| d¡r%| dd¡}|| dkr2|d| 7 }q|d| 7 }q|S )Nr€   rw   r   r   ú z #)rƒ   r-   r‚   rr   r„   r…   rs   )Úsr‰   ÚnewrŠ   r‹   r   r   r   r	   ÚgenstatusstringÄ   s   
r“   c           	   	   C   sð   i }t d }| D ]
}|d ||d < qdD ]`}| t¡ruzt|dƒ}W n ty3   ttd dƒ}Y nw | ¡ }| ¡  zt|dƒ}W n tyQ   t|dƒ}Y nw |D ]}| d	| ¡rlt||ƒ}| 	d
||f ¡ qT| 	|¡ qT|j qd S )Nrx   r   r   )ry   rz   r{   r|   r}   r~   Úrrw   r%   za+z%s=z%s="%s"
)
r   r…   r   r-   r!   r‚   Ú	readlinesr/   r“   Úwrite)	rŒ   r‰   r*   r   Úkeyr2   ÚlinesÚlÚvalr   r   r	   ÚwritestatusÓ   s4   
ÿÿ
€îr›   c           	      C   s  t ƒ }tdƒ}tddd}d}|D ]}|d dkr%|j|d ||d d |d }qt| tdƒd	ftd
ƒdtffdd}t| tdƒddƒ}|j|dddddd | |dd¡ |j|dddd | 	| 
¡ ¡dkrŠd}|D ]}|d dkr~| |¡d |d< |d }qmt|ƒ tƒ  dS )Nr€   é   r   rd   r   éÿÿÿÿ)ÚselectedÚApplyÚapplyrb   rc   rI   rD   r4   rG   )rG   r   r   r   )Ú
anchorLeftÚ	anchorToprL   )rG   r   r   r   rK   rp   )r   ÚLabelÚCheckboxTreerP   rQ   rN   rR   rS   rT   rU   rV   ÚgetEntryValuer›   r3   )	rX   rY   ÚitemlistÚrlr”   ÚcountÚitemr]   r^   r   r   r	   Útogglestatusí   s,   
$
rª   c                 C   sx   d}|r!t  dg¡dkrtdƒ}t| ddtdƒ|tdƒfd	}d
S t  dg¡dkr-tdƒ}t| ddd|tdƒfd	}dS )Nr€   zbyobu-launcher-uninstallr   z/Byobu will not be launched next time you login.r@   r4   ÚMessagero   )ri   ée   zbyobu-launcher-installz9Byobu will be launched automatically next time you login.rp   )r0   r1   rN   rk   )rX   rY   rZ   Úoutru   r   r   r	   Úinstall  s   r®   c                 C   sB   t | dƒ}z| |¡ W n ty   | ¡  Y d S w | ¡  d S )NÚa)r-   r–   ÚIOErrorr/   )Úpr‘   r2   r   r   r	   Úappendtofile  s   
þr²   c                  C   s¦   d} t dkr!td }tj |¡rt|ƒD ]	}| d¡r|} qntS td }tj |¡r:t|ƒD ]	}| d¡r8|} q/ntS | dkrBtS | |  d¡d  }|d	krQd
}|S )Nr€   r   z/keybindings.tmuxzset -g prefix z/keybindingszescape ú^r   ú`r   )	r   r   r   r*   r+   r-   r…   ÚDEF_ESCÚfind)Úliner*   r™   Úescr   r   r	   rt     s0   
€þ
€þrt   c                 C   s8   |   ¡ rttjdƒ}tjdd| g|d | ¡  d S d S )Nr%   zbyobu-ctrl-ar&   )Ústdout)Úisalphar-   r   Údevnullr0   r1   r/   )r—   Únullfr   r   r	   Ú	setesckey9  s
   ür½   c                 C   sZ  t dtƒ dd}ttdƒƒ}t| tdƒdftdƒdtffdd	}t| td
ƒddƒ}|j|ddddd |j|dddd | |dd¡ | d¡ d}|r| 	¡ }|dkr‹| 
¡ }t|ƒdkre| |d ¡ |dksm|dkrr| t¡ zt| 
¡ ƒ}	| t¡ W n tyŠ   d}	Y nw d}|sL|  ¡  | |¡}
|
dkr«t| 
¡ ƒ tƒ  |
dkr«dS dS )Nr4   r   )rh   rC   zEscape key: ctrl-rŸ   r    rb   rc   rI   rE   rG   r   )r   r   r   r   )r¡   rL   )r¡   rp   ÚTIMERr   ú\Úfoor   )ÚEntryrt   r£   rN   rQ   rR   rS   rT   ÚsetTimerÚrunÚvalueÚlenÚsetrµ   r=   r!   Ú	popWindowrU   r½   r3   )rX   rY   r¸   Úesclr]   r^   ÚloopÚwhichrš   Údummyru   r   r   r	   ÚchgescA  sB   $

þï
rÌ   c                  C   sh   t j td ¡r
dS ztdt ƒD ]
} d| v r W dS qW n
 ty'   Y dS w t j dt ¡r2dS dS )Nz/disable-autolaunchr   z%s/.profilezbyobu-launchr   z/etc/profile.d/Z97-%s.sh)r   r*   r+   r   r-   r   r!   ÚPKG)r·   r   r   r	   Ú
autolaunchg  s   ÿÿÿrÎ   c                  C   s¾   t ƒ } tƒ }| ddtdƒ¡ | tdƒ¡ tƒ }d}|dkrTt|| |ƒ}|dkr/t|| ƒ}n!|dkr9t|| ƒ}n|dkrCt	|| ƒ}n|dkrPt
|| |ƒ}tƒ }|dks| ¡  t d¡ d	S )
z$This is the main loop of our utilityr   r   zByobu Configuration Menuz6<Tab> between elements | <Enter> selects | <Esc> exitsrp   r4   rF   rG   N)r>   ÚSnackScreenÚdrawRootTextrN   ÚpushHelpLinerÎ   r_   rv   rª   rÌ   r®   Úfinishr   r   )rY   rX   rZ   Útagr   r   r	   Úmainu  s(   örÔ   Ú__main__)5Ú
__future__r   r   r   Úos.pathÚtimeÚstringr0   ÚgettextÚglobr
   Úsnackr!   rÍ   Úgetenvr   r   r   r   r   ÚBYOBU_SOCKETDIRr   r‚   rq   r*   r+   rµ   ÚRELOADr.   rR   ÚordÚhotkeysÚbindtextdomainÚ
textdomainrN   r$   r3   r>   r_   rk   rv   r   r“   r›   rª   r®   r²   rt   r½   rÌ   rÎ   rÔ   Ú__name__r   r   r   r	   Ú<module>   sz   ÿ


$	&

ÿ