Skip to content

pane width resizing stucks when scroll history is long #4814

@xuancong84

Description

@xuancong84

tmux allows pane width resizing using mouse or hotkey. However, when the scroll history is long (e.g., >100000 lines), resizing will hang for quite a while. This is because tmux needs to recompute line wrapping for every new pane width it encompasses.

For example, when I hold the mouse button to drag the pane vertical boundary from width=80 to width=100, tmux will recompute line wrapping for width=81, 82, 83, ..., all the way to width=100. When the scroll history is large (e.g., >100k lines), this hangs the window for very long time.

It would be nice to compute the total number of scroll lines (or bytes) for all affected panes when the mouse button is down on a pane's vertical boundary, if this sum is > some threshold (e.g., 65536), then display a dotted new boundary position instead while dragging the mouse, and start compute new line wrapping after the mouse button is released. If the total pane content is not a lot, can fall back to existing handling mechanism.

In my practical industrial applications, I typically set scroll history to 1 million lines so that I can see errors in the log and there is no need to keep the log files when no error is encountered. Pane resizing is really a headache, the main issue is that when the window hangs, very often the pane gets resized to an intermediate width, and I need to continue resizing the pane width towards the intended width.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions