Skip to content

WorkspaceBuilder creates "main-horizontal" layout with a very thin main pane #667

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
cblegare opened this issue Feb 19, 2021 · 22 comments
Labels
bug Something isn't working contribution welcome

Comments

@cblegare
Copy link

Step 1: Provide a summary of your problem

I am trying to use tmuxp.workspacebuilder.WorkspaceBuilder with a simple main-horizontal 3-panes scenario and the created result has the main pane of 1 line high.

  • When invoked from command line with a yaml config file, the issue is not reproduced.
  • When configrued with an explicit layout, the issue is not reproduced (see configurations below)

Step 2: Provide tmuxp details

➜ tmuxp debug-info
-------------------------
environment:
        dist: Linux-5.4.0-65-generic-x86_64-with-glibc2.29
        arch: x86_64
        uname: Linux; exfo7255; 5.4.0-65-generic
        version: #73-Ubuntu SMP Mon Jan 18 17:25:17 UTC 2021
-------------------------
python version: 3.8.7 (default, Feb  2 2021, 16:09:27)  [GCC 9.3.0]
system PATH: <REDACTED>/.venv/bin:<REDACTED>
tmux version: 3.0
libtmux version: 0.8.5
tmuxp version: 1.7.2
tmux path: /usr/bin/tmux
tmuxp path:<REDACTED>/.venv/lib/python3.8/site-packages/tmuxp/__init__.py
shell: /usr/bin/zsh
-------------------------
tmux sessions:
        myproject: 1 windows (created Thu Feb 18 20:48:37 2021) (attached)

tmux windows:
        0: mainwindow* (3 panes) [189x53] [layout 0ecd,189x53,0,0[189x1,0,0,81,189x51,0,2{93x51,0,2,82,95x51,94,2,83}]] @37 (active)

tmux panes:
        0: [189x1] [history 14/2000, 9178 bytes] %81
        1: [93x51] [history 13/2000, 6476 bytes] %82 (active)
        2: [95x51] [history 14/2000, 6613 bytes] %83

tmux global options:
        activity-action other
        assume-paste-time 1
        base-index 0
        bell-action none
        default-command
        default-shell /usr/bin/zsh
        default-size 80x24
        destroy-unattached off
        detach-on-destroy on
        display-panes-active-colour red
        display-panes-colour blue
        display-panes-time 1000
        display-time 750
        history-limit 2000
        key-table root
        lock-after-time 0
        lock-command "lock -np"
        message-command-style fg=yellow,bg=black
        message-style fg=black,bg=yellow
        mouse on
        prefix C-a
        prefix2 None
        renumber-windows off
        repeat-time 500
        set-titles off
        set-titles-string "#S:#I:#W - \"#T\" #{session_alerts}"
        silence-action other
        status on
        status-bg green
        status-fg black
        status-format[0] "#[align=left range=left #{status-left-style}]#{T;=/#{status-left-length}:status-left}#[norange default]#[list=on align=#{status-justify}]#[list=left-marker]<#[list=right-marker]>#[list=on]#{W:#[range=window|#{window_index} #{window-status-style}#{?#{&&:#{window_last_flag},#{!=:#{window-status-last-style},default}}, #{window-status-last-style},}#{?#{&&:#{window_bell_flag},#{!=:#{window-status-bell-style},default}}, #{window-status-bell-style},#{?#{&&:#{||:#{window_activity_flag},#{window_silence_flag}},#{!=:#{window-status-activity-style},default}}, #{window-status-activity-style},}}]#{T:window-status-format}#[norange default]#{?window_end_flag,,#{window-status-separator}},#[range=window|#{window_index} list=focus #{?#{!=:#{window-status-current-style},default},#{window-status-current-style},#{window-status-style}}#{?#{&&:#{window_last_flag},#{!=:#{window-status-last-style},default}}, #{window-status-last-style},}#{?#{&&:#{window_bell_flag},#{!=:#{window-status-bell-style},default}}, #{window-status-bell-style},#{?#{&&:#{||:#{window_activity_flag},#{window_silence_flag}},#{!=:#{window-status-activity-style},default}}, #{window-status-activity-style},}}]#{T:window-status-current-format}#[norange list=on default]#{?window_end_flag,,#{window-status-separator}}}#[nolist align=right range=right #{status-right-style}]#{T;=/#{status-right-length}:status-right}#[norange default]"
        status-format[1] "#[align=centre]#{P:#{?pane_active,#[reverse],}#{pane_index}[#{pane_width}x#{pane_height}]#[default] }"
        status-interval 15
        status-justify left
        status-keys vi
        status-left "[#S] "
        status-left-length 10
        status-left-style default
        status-position bottom
        status-right "#{?window_bigger,[#{window_offset_x}#,#{window_offset_y}] ,}\"#{=21:pane_title}\" %H:%M %d-%b-%y"
        status-right-length 40
        status-right-style default
        status-style fg=black,bg=green
        update-environment[0] DISPLAY
        update-environment[1] KRB5CCNAME
        update-environment[2] SSH_ASKPASS
        update-environment[3] SSH_AUTH_SOCK
        update-environment[4] SSH_AGENT_PID
        update-environment[5] SSH_CONNECTION
        update-environment[6] WINDOWID
        update-environment[7] XAUTHORITY
        visual-activity off
        visual-bell off
        visual-silence off
        word-separators " "

tmux window options:
        aggressive-resize off
        allow-rename off
        alternate-screen on
        automatic-rename on
        automatic-rename-format "#{?pane_in_mode,[tmux],#{pane_current_command}}#{?pane_dead,[dead],}"
        clock-mode-colour blue
        clock-mode-style 24
        main-pane-height 24
        main-pane-width 80
        mode-keys vi
        mode-style fg=black,bg=yellow
        monitor-activity off
        monitor-bell on
        monitor-silence 0
        other-pane-height 0
        other-pane-width 0
        pane-active-border-style fg=green
        pane-base-index 0
        pane-border-format "#{?pane_active,#[reverse],}#{pane_index}#[default] \"#{pane_title}\""
        pane-border-status off
        pane-border-style default
        remain-on-exit off
        synchronize-panes off
        window-active-style default
        window-size smallest
        window-style default
        window-status-activity-style reverse
        window-status-bell-style reverse
        window-status-current-format "#I:#W#{?window_flags,#{window_flags}, }"
        window-status-current-style default
        window-status-format "#I:#W#{?window_flags,#{window_flags}, }"
        window-status-last-style default
        window-status-separator " "
        window-status-style default
        wrap-search on
        xterm-keys on

Step 3: Describe the problem:

Steps to reproduce:

Run the following script

import tmuxp.workspacebuilder
import tmuxp.config
import libtmux.server
import libtmux.exc

tmuxp_config = {}  # see below

builder = tmuxp.workspacebuilder.WorkspaceBuilder(
    tmuxp.config.trickle(
        tmuxp.config.expand(tmuxp_config, ".")
    ),
    server=libtmux.server.Server()
)
try:
    builder.build()
except libtmux.exc.TmuxSessionExists:
    builder.build(builder.session)
builder.session.attach_session()
for plugin in builder.plugins:
    plugin.before_script(builder.session)

Observed Results:

Three panes are nicely, but the main (top) one has only one line of heigth

Expected Results:

Panes created with configured size.

Relevant Code:

tmuxp_config = {
    "session_name": "myproject",
    "start_directory": ".",
    "shell_command_before": [],
    "windows": [
        {
            "window_name": "mainwindow",
            "focus": True,
            ### this "abstract" layout reproduces the issue
            "layout": "main-horizontal",
            ### This "specific" layout does not reproduces the issue
            # "layout": "3951,189x53,0,0[189x35,0,0,51,189x17,0,36{94x17,0,36,52,94x17,95,36,53}]"
            "options": {
                "main-pane-height": 35
            },
            "panes": [
                "pane",
                "pane",
                "pane"
            ]
        }
    ]
}
@illarionvk
Copy link

I experience the same issue when tmuxp is invoked in the CLI with the YAML config file.

YAML config file contents

session_name: primary
start_directory: ~/dev/
windows:
  - window_name: window_one
    focus: true
    layout: main-horizontal
    options:
      main-pane-height: 42
    panes:
      - 'pane'
      - 'pane'
      - 'pane'
  - window_name: window_two
    layout: main-horizontal
    options:
      main-pane-height: 42
    panes:
      - 'pane'
      - 'pane'
      - 'pane'
  - window_name: window_three
    layout: main-horizontal
    options:
      main-pane-height: 42
    panes:
      - 'pane'
      - 'pane'
      - 'pane'

tmuxp debug info

-------------------------
environment:
	dist: macOS-10.15.7-x86_64-i386-64bit
	arch: x86_64
	uname: [REDACTED]
	version: Darwin Kernel Version 19.6.0: Mon Apr 12 20:57:45 PDT 2021; root:xnu-6153.141.28.1~1/RELEASE_X86_64
-------------------------
python version: 3.9.5 (default, May  4 2021, 03:33:11)  [Clang 12.0.0 (clang-1200.0.32.29)]
system PATH: [REDACTED]
tmux version: 3.2
libtmux version: 0.8.5
tmuxp version: 1.7.2
tmux path: /usr/local/bin/tmux
tmuxp path: /usr/local/lib/python3.9/site-packages/tmuxp/__init__.py
shell: /bin/zsh

@categulario
Copy link
Contributor

I'm experiencing the same issue with this config

-------------------------
environment:
	dist: Linux-5.10.70-1-MANJARO-x86_64-with-glibc2.33
	arch: x86_64
	uname: [redacted]
	version: #1 SMP PREEMPT Thu Sep 30 15:29:01 UTC 2021
-------------------------
python version: 3.9.7 (default, Aug 31 2021, 13:28:12)  [GCC 11.1.0]
system PATH: [redacted]
tmux version: 3.2
libtmux version: 0.10.1
tmuxp version: 1.9.2
tmux path: /usr/bin/tmux
tmuxp path: /usr/lib/python3.9/site-packages/tmuxp/__init__.py
shell: /bin/bash
-------------------------

and this yaml:

session_name: some
start_directory: ./
windows:
  - focus: 'true'
    layout: main-horizontal
    options:
      main-pane-height: 35
    panes:
    - pane
    - pane
    - pane
    window_name: foo

@varac
Copy link

varac commented May 18, 2022

Same here, any fix expected soon ?

@tony tony added bug Something isn't working contribution welcome labels May 18, 2022
@tony
Copy link
Member

tony commented May 18, 2022

@varac I added labels to this and noted PRs are welcome. Any contributions with tests that makes tmuxp more robust is always something we're open to

In future releases we will radically improve layouts as well.

@tony
Copy link
Member

tony commented May 18, 2022

I updated from Focal (20.04), with tmux 3.0a to Jammy (22.04) with tmux 3.2a and now im getting this behavior on certain config.

I did not get this on tmux 3.0a on focal

On another system, it works fine: Ubuntu 21.10 (impish), tmux 3.1c

@tony
Copy link
Member

tony commented May 18, 2022

It's most likely related to set_layout_hook()

Some more info on the window layout behavior before attaching: tmuxinator/tmuxinator#651 (comment)

nvasilas added a commit to nvasilas/tmuxp that referenced this issue Aug 7, 2022
…on#704

Use tmux default session size 80x24 when creating a new session
tony pushed a commit to nvasilas/tmuxp that referenced this issue Aug 14, 2022
…on#704

Use tmux default session size 80x24 when creating a new session
tony pushed a commit to nvasilas/tmuxp that referenced this issue Aug 21, 2022
…on#704

Use tmux default session size 80x24 when creating a new session
tony added a commit that referenced this issue Aug 21, 2022
@tony
Copy link
Member

tony commented Aug 21, 2022

@varac @illarionvk @cblegare @categulario @mikedfunk

v1.13.1 is live with a fix, via @nvasilas from #793

PyPI, GitHub Tag

pip install tmuxp==1.13.1

Any better now?

P.S. You may need to kill your tmux server or try on a fresh one by passing something like tmuxp ./workspacefile.yaml -L OtherTmuxServer

@categulario
Copy link
Contributor

It works! the panes now are of a decent size. Although in my case they are not of the expected size. They're definitely useful, but short in size for some reason.

Captura desde 2022-08-22 12-49-57

@nvasilas
Copy link
Contributor

@categulario What's your config file? Did you select the main-horizontal layout. If that's the case then it looks ok to me.

@categulario
Copy link
Contributor

categulario commented Aug 22, 2022 via email

tony added a commit that referenced this issue Sep 10, 2022
This may negate the fix from #737 (for #667 and #704)
that helped certain layouts.

If a client hasn't yet been attached, 80x24 isn't enough 
to handle workspace building splitting the panes out.
@tony
Copy link
Member

tony commented Sep 10, 2022

My next change at v1.13.2 will probably bring this issue back, if so ping me.

It works! the panes now are of a decent size. Although in my case they are not of the expected size. They're definitely useful, but short in size for some reason.

I think we will need to rewind for a real fix to this. I will think of something.

tony added a commit that referenced this issue Sep 10, 2022
tony added a commit that referenced this issue Sep 10, 2022
@rr326
Copy link

rr326 commented Sep 21, 2022

@tony FYI think this issue is live again ("if so, ping me.)

tmuxp 1.15.0, litmus 0.15.3
macOS 12.5.1

Also, mine is layout: main-vertical but same idea of a too small pane.

Question - is there a workaround? Manually, after the window loads, I can do tmux select-layout and it snaps to the correct position. It there a way I can add that to my tmuxp.yaml so it happens automatically?

@tony
Copy link
Member

tony commented Sep 21, 2022

@rr326

I don't have a workaround - yet, sorry - but do ask for assistance from community in helping with that.

#815 is an issue to follow where I intend on devising a robust solution for workspaces that work at scale and is tested

P.S. And of course, if I devise a workaround in the mean time I will add it here and notify you and the thread

@rr326
Copy link

rr326 commented Sep 21, 2022

@tony I'll download the source and see if I can contribute. I'm solid at python but I suspect there is a lot of os / shell magic here that will baffle me. I'll take a look and see if I can contribute.

@tony
Copy link
Member

tony commented Sep 21, 2022

@rr326 The codebase of tmuxp and libtmux will improve over the coming months. If it seems like too big of task today it will be better later

@rr326
Copy link

rr326 commented Sep 21, 2022

@tony I guess I should wait then - no need to do a bunch of hard work when easy is on the way. I'll try to remember to check back.

@theutz
Copy link

theutz commented May 17, 2023

FWIW, I had some success setting the main-pane-width to a percentage in order to workaround this issue for the main-vertical layout.

session_name: meh
windows:
  - layout: main-vertical
    options:
      main-pane-width: '40%'
    panes:
      - pane
      - pane

@tony
Copy link
Member

tony commented Apr 7, 2024

@theutz @PedroSena @fbnfgc @rr326 @categulario @nvasilas @varac @illarionvk @cblegare @mikedfunk

There is a PR at #926 testing a fix for this longstanding issue. I am in need of testers for this and would be very grateful for your time 🙏.

If you try these instructions pip install --user --pre --no-cache 'tmuxp>=1.46.0a0' (with 1.46.0a0+), does this help?

tony added a commit that referenced this issue Apr 7, 2024
@tony
Copy link
Member

tony commented Apr 13, 2024

If you try v1.46.0 (docs, changes, release, PyPI), is anything better?

Instructions:

pip install --user --upgrade tmuxp

tmuxp -V should show at least 1.46.0.

@categulario
Copy link
Contributor

hey @tony! I just tested 1.36 (broken behavior) and then upgraded to 1.46 and it was fixed! with the very same config I put in the comments before.

Thanks for the amazing work

@tony
Copy link
Member

tony commented Apr 13, 2024

Yes! Thank you for checking, glad this seems to be working!

@categulario
Copy link
Contributor

this will simplify my configs so much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working contribution welcome
Projects
None yet
Development

No branches or pull requests

8 participants