o &J^)@sLddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddZ z ddl Z ddl TWn e yAe dYnwdZ edZed Zed ed Zed ed ZeddZeddZeddZede Zede ZejesedeZejesede ZejesedeZdZdZdeZdZeee je<ee jee<e e ede!e ejZ"ddZ#dd Z$d!d"Z%d#d$Z&de"d%d&fe"d'd(efffd)d*Z'd+d,Z(d-d.Z)d/d0Z*d1d2Z+d3d4Z,d5d6Z-d7d8Z.d9d:Z/d;d<Z0d=d>Z1d?d@Z2dAdBZ3e4dCkr$e3dSdS)D)print_functionNcCstd|tddS)Nz ERROR: %s)printsysexit)msgr /usr/lib/byobu/include/config.pyerror%s r )*z(Could not import the python snack modulebyobuHOMEUSERBYOBU_CONFIG_DIRz/.byobu BYOBU_RUN_DIRz /.cache/byobu BYOBU_BACKENDtmux 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 or to activate these changes. Otherwise, exit this session and start a new one.z%s/reload-requiredz/pocCsTzddl}ddl}ddl}ddl}|d|||jd}W|Sty)YdSw)Nrhh1234)fcntltermiosstructosunpackioctl TIOCGWINSZ Exception)fdrrrrcrrrr ioctl_GWINSZLs r$c Csnz,tjts ttdttd}|tdkr*t tdddddtgWdSWdSt y6YdSw) Niwscreenz-Xat0sourcez %s/profile) rpathexistsrmakedirsopen RELOAD_FLAGcloser subprocesscallr!)frrr reload_requiredYs     r3cCstdp tdp td}|s,ztttj}t|}t|Wn ty+Ynw|sDz tdtdf}Wn tyCd}Ynwt|ddt|ddfS)NrrLINESCOLUMNS)P) r$rr-ctermidO_RDONLYr/r!envint)r#r"rrr terminal_sizegs    r>cCs|rtd}ntd}tdddd}|tdd|tdd |td d ||d t|d dtffdd}t|tddd }|j|dddd|j|dddd||dkradS| S)Nz.Byobu currently launches at login (toggle off)z4Byobu currently does not launch at login (toggle on)<r)heightwidth returnExitzHelp -- Quick Start GuideToggle status notificationsr4Change escape sequenceExitrcompactz Byobu Configuration Menur)rGr4rGr4paddingrrrr) _Listboxappend ButtonBarESCGridFormadd buttonPressedrunOncecurrent) snackScreensize isInstalled installtextlibbgrrr menu}s  r_OkayokayCancelcancelc Cs^t||||d}t||dd}t||dd} | j|dddd| j|dddd|| S) NscrollrrIr4r)rrrrrKrM)TextboxrQrSrTrUrV) rXrBrAtitletextrebuttonstr]r^rrr messageboxs rkcCsttdtd}|}||dtd}tdd|ddd}t|t dd t ffdd }t |t d d d }| |dd|j |dddd| |}dS)Nz/help.z.txtzrC)rewrapMenur_rIz Byobu Helpr4rGrrMrKd)r-DOCrreadr/replace getesckeyrfrQrNrRrSrTrUrV)rXrYr2rhrjr]r^buttonrrr helpsrvc Csi}i}i}tdtdfD]^}tj|rlz tt|||Wnty1t d|Ynwt dkrAd|d|df}nd|d |d |d |d f}| D]}| d rg| d d}d||<qUd||<qUqg}t|}t|D]}t|||g}||qy|S)N/status/status/statuszInvalid configuration [%s]rz%s %s tmux_left tmux_rightz %s %s %s %sscreen_upper_leftscreen_upper_rightscreen_lower_leftscreen_lower_right#r(1)SHARErrr*r+execr-rrr!r rsplit startswithrslistkeyssortedr=rP) statusglolocr2itemsir\rwindowrrr readstatuss2           rcCsvd}i}i}tttd||||D] }|dr%|dd}||dkr2|d|7}q|d|7}q|S)Nrrwrr z #)rr-rrrrrrs)srnewrrrrrr genstatusstrings   rc Csi}td}|D] }|d||d<qdD]`}|truzt|d}Wnty3ttdd}Ynw|}|zt|d}WntyQt|d}Ynw|D]}|d |rlt||}| d ||fqT| |qT|jqdS) Nrxrr)ryrzr{r|r}r~rrwr%za+z%s=z%s="%s" ) rrrr-r!r readlinesr/rwrite) rrr*rkeyr2lineslvalrrr writestatuss4     rc Cst}td}tddd}d}|D]}|ddkr%|j|d||dd|d}qt|tdd ftd d tffdd }t|td dd}|j|dddddd||dd|j|dddd| | d krd}|D]}|ddkr~| |d|d<|d}qmt |t dS)Nr rrdr)selectedApplyapplyrbrcrIrDr4rG)rGrrr) anchorLeft anchorToprL)rGrrrrKrp)rLabel CheckboxTreerPrQrNrRrSrTrUrV getEntryValuerr3) rXrYitemlistrlrcountitemr]r^rrr togglestatuss,   $  rcCsxd}|r!tdgdkrtd}t|ddtd|tdfd }d Std gdkr-td }t|ddd|tdfd }d S)Nrzbyobu-launcher-uninstallrz/Byobu will not be launched next time you login.r@r4Messagero)riezbyobu-launcher-installz9Byobu will be launched automatically next time you login.rp)r0r1rNrk)rXrYrZoutrurrr installsrcCsBt|d}z||Wnty|YdSw|dS)Na)r-rIOErrorr/)prr2rrr appendtofiles  rcCsd}tdkr!td}tj|rt|D] }|dr|}qntStd}tj|r:t|D] }|dr8|}q/ntS|dkrBtS||dd}|d krQd }|S) Nrrz/keybindings.tmuxzset -g prefix z /keybindingszescape ^r`r) rrrr*r+r-rDEF_ESCfind)liner*rescrrr rts0      rtcCs8|rttjd}tjdd|g|d|dSdS)Nr%z byobu-ctrl-ar&)stdout)isalphar-rdevnullr0r1r/)rnullfrrr setesckey9s   rc CsZtdtdd}ttd}t|tddftddtffdd }t|td dd }|j|d d dd d|j|dd dd||dd|dd}|r| }|dkr| }t |dkre| |d|dksm|dkrr| t z t| } | t Wn tyd} Ynwd }|sL|||} | dkrt| t| dkrd SdS)Nr4r)rhrCzEscape key: ctrl-rrrbrcrIrErGr)rrrr)rrL)rrpTIMERr\foor)EntryrtrrNrQrRrSrTsetTimerrunvaluelensetrr=r! popWindowrUrr3) rXrYresclr]r^loopwhichrdummyrurrr chgescAsB $       rcCshtjtdr dSztdtD] }d|vrWdSqWn ty'YdSwtjdtr2dSdS)Nz/disable-autolaunchrz %s/.profilez byobu-launchrz/etc/profile.d/Z97-%s.sh)rr*r+rr-r r!PKG)rrrr autolaunchgs rcCst}t}|ddtd|tdt}d}|dkrTt|||}|dkr/t||}n!|dkr9t||}n|dkrCt ||}n |dkrPt |||}t}|dks| t dd S) z$This is the main loop of our utilityrrzByobu Configuration Menuz6 between elements | selects | exitsrpr4rFrGN)r> SnackScreen drawRootTextrN pushHelpLinerr_rvrrrfinishrr)rYrXrZtagrrr mainus(      r__main__)5 __future__rrros.pathtimestringr0gettextglobr snackr!rgetenvr rrrrBYOBU_SOCKETDIRrrrqr*r+rRELOADr.rRordhotkeysbindtextdomain textdomainrNr$r3r>r_rkrvrrrrrrrtrrrr__name__rrrr sz                   $  &