ctx-tui 2.0.4

Manage repo-scoped work contexts: fresh checkouts wrapped in terminal multiplexer sessions
Documentation
�

"�jp���SSKrSSKrSSKrSSKrSSKrSSKrSSKJr SSKJ	r	 SSK
Jr SSKJ
r
JrJrJr SSKJrJr SSKJr SrS	\S-4S
jrS\S	\4SjrS
\S	\4SjrS\
S\	S\S	\4SjrS\
S\	S	\4Sjr"SS\5rg)�N)�Mapping)�Path)�Context)�Node�Pane�SplitDirection�resolve_layout)�Multiplexer�MultiplexerError)�	via_shell�g�returnc���[RS:wag[[R"55S[
R"53-S-n[[[U55-
S-
$)zDLongest session name whose zellij socket path still fits, if capped.�darwinNzzellij-�contract_version_1�)
�sys�platformr�tempfile�
gettempdir�os�getuid�_SOCKET_PATH_MAX�len�str)�sock_dirs �Q/Users/michael/dev/contexts/ctx/rewrite-it-in-rust/src/ctx/multiplexers/zellij.py�_session_name_budgetrsU��
�|�|�x����H�'�'�)�*�w�r�y�y�{�m�-D�D�G[�[�H��c�#�h�-�0�0�1�4�4��ctxc�L�URSUR3RSS5RSS5n[5nUb[	U5U::aU$[
R"UR55R5SSnUS[US-
S5SU3$)Nz--�.�-�:��r)
�repo�name�replacerr�hashlib�sha256�encode�	hexdigest�max)r r(�budget�digests    r�
_session_namer1s����h�h�Z�r�#�(�(��$�,�,�S�#�6�>�>�s�C�H�D�
!�
#�F�
�~��T��f�,���
�^�^�D�K�K�M�
*�
4�
4�
6�r��
:�F��'�S��!��Q�'�(�
)��6�(�3�3r�valuec�r�URSS5RSS5RSS5nSUS3$)N�\z\\�"z\"�
z\n)r))r2�escapeds  r�_kdl_stringr8)s:���m�m�D�&�)�1�1�#�u�=�E�E�d�E�R�G�
�w�i�q�>�r�node�cwd�indentc�^^�ST-n[U[5(a�UR(a [R"UR5O/nUS3nU(aUS[US53-
nUS[[
T553-
nUR(aUS-
n[U5S:�a*SRS	USS55nUS
USUSUS
3-
nU$UR=[R:Xa SnO[R:XaSnSRUU4SjUR55nUSWSUSUS
3$)Nz    �panez	 command=rz cwd=z focus=truer� c3�8# �UHn[U5v� M g7f�N)r8)�.0�args  r�	<genexpr>�_render_node.<locals>.<genexpr>9s���A���K��,�,��s�z {
z	    args r6�}�vertical�
horizontalc3�D># �UHn[UTTS-5v� M g7f)rN��_render_node)rAr=r:r;s  ��rrCrDCs!����T����d�C��!��<�<��s� zpane split_direction="z" {
)�
isinstancer�command�shlex�splitr8r�focusr�join�	directionr�ROW�COLUMN�panes)	r9r:r;�pad�argv�line�argsrQ�childrens	 ``      rrJrJ.s0���
�6�/�C��$����,0�L�L�u�{�{�4�<�<�(�b����d�|����i��D��G� 4�5�6�6�D��%��C��H�-�.�/�/���:�:��M�!�D��t�9�q�=��8�8�A��Q�R��A�A�D��e�C�5�	�$��r�#��b�9�9�D����.�.�
�^�
�
�"�I�
�
"�
"�$�I��y�y�T����T�T�H��U�(���6�(��2�c�U�"�M�Mr�layoutc�"�S[XS5S3$)Nalayout {
    default_tab_template {
        pane size=1 borderless=true {
            plugin location="zellij:tab-bar"
        }
        children
        pane size=2 borderless=true {
            plugin location="zellij:status-bar"
        }
    }
    tab {
�z	
    }
}
rI)rZr:s  r�_render_layoutr]Gs%��
	���Q�'�
(�)�
	�rc���\rSrSrS\SS4SjrS\4SjrS\S\4Sjr	S\S\4S	jr
SS\S
\\\4S-SS4Sjjr
SS\S
\\\4S-SS4SjjrS\S
\\\4S-S\4S
jrS\SS4SjrSrg)�ZellijMultiplexer�ZrZrNc��Xlgr@��_layout)�selfrZs  r�__init__�ZellijMultiplexer.__init__[s���rc�R�[[RRS55$)N�ZELLIJ)�boolr�environ�get)rds r�can_open_in_place�#ZellijMultiplexer.can_open_in_place^s���B�J�J�N�N�8�,�-�-rr c���[R"/SQ[R[RSS9nURS:wag[U5URR5;$)N)�zellijz
list-sessionsz--shortT)�stdout�stderr�textrF)�
subprocess�run�PIPE�DEVNULL�
returncoder1rp�
splitlines)rdr �results   r�exists�ZellijMultiplexer.existsbsV�����2��?�?��%�%��	
������!���S�!�V�]�]�%=�%=�%?�?�?rc�X�[RRS5[U5:H$)N�ZELLIJ_SESSION_NAME)rrjrkr1�rdr s  r�
is_current�ZellijMultiplexer.is_currentns ���z�z�~�~�3�4�
�c�8J�J�Jr�valuesc� �URU5(ag[U5nURX5n[RR5VVs0sHupVUR
S5(aMXV_M! nnn[R"SSUSSU/SSUS9nURS:wa^URR5=(d URR5n	S	US
3n
[U	(aU
SU	35eU
5egs snnf)Nrhro�--layout�attachz--create-backgroundT)�capture_outputrr�envrzzellij could not create '�'�: )rzr1�_write_layout_filerrj�items�
startswithrsrtrwrq�striprpr)rdr r��session�layout_file�k�vr�ry�detail�messages           r�create�ZellijMultiplexer.createqs����;�;�s������$���-�-�c�:��
!#�
�
� 0� 0� 2�Q� 2���!�,�,�x�:P�t�q�t� 2��Q����
�z�;��:O�QX�Y����	
������!��]�]�(�(�*�C�f�m�m�.A�.A�.C�F�1�'��!�<�G�"�V�g�Y�b���#9�Q�Q��Q�Q�"��Rs�D
�5D
c�p�[U5nURU5n[RR	S5(a�SSSU/nU(dUSURX5/-
n[R"USSS9nURS:wa^URR5=(d URR5nS	US
3n[U(aUSU35eU5egU(a[R"SSSU/5 URX5n	[R"SSS
USU	/5 g)Nrhro�actionzswitch-sessionr�T)r�rrrzzellij could not switch to 'r�r�r�z	--sessionz--new-session-with-layout)r1rzrrjrkr�rsrtrwrqr�rpr�execvp)
rdr r�r�rzrLryr�r�r�s
          r�open�ZellijMultiplexer.open�s����$�����S�!��
�:�:�>�>�(�#�#� ��+;�W�E�G���J��(?�(?��(L�M�M���^�^�G�D�t�L�F�� � �A�%����,�,�.�G�&�-�-�2E�2E�2G��8��	��C��&��'��"�V�H�'=�U�U�W�U�U����I�I�h��8�W� =�>��-�-�c�:��
�	�	��
�{�G�-H�+�V�	
rc���[R"SSS9up4[R"U5 [	[URU55n[U5R[XQR55 U$)Nzctx-z.kdl)�prefix�suffix)r�mkstempr�closerr	rcr�
write_textr]�path)rdr r��fdr�rZs      rr��$ZellijMultiplexer._write_layout_file�sX��"�*�*�&��H���
������>�$�,�,��?�@���[��$�$�^�F�H�H�%E�F��rc�f�[R"SSS[U5/S[RS9 g)Nrozdelete-sessionz--forceT)�checkrp)rsrtr1rvr~s  r�kill�ZellijMultiplexer.kill�s,�����
�'��M�#�4F�G���%�%�	
rrbr@)�__name__�
__module__�__qualname__�__firstlineno__rrerirlrrzrrrr�r�r�r��__static_attributes__�rrr_r_Zs����t����.�4�.�
@�'�
@�d�
@�K�g�K�$�K�R�'�R�7�3��8�+<�t�+C�R�t�R�*
��
���c��):�T�)A�
�T�
�0�g��w�s�C�x�7H�4�7O��TW��
��
�D�
rr_)r*rrMrsrr�collections.abcr�pathlibr�ctx.contextsr�
ctx.layoutrrrr	�ctx.multiplexerr
r�ctx.shellrunrr�intrrr1r8rJr]r_r�rr�<module>r�s����	���
��#�� �A�A�9�"���5�c�D�j�5�4�w�4�3�4��s��s��
N�t�N�$�N��N��N�2�4��d��s��&P
��P
r