tmux не разделяет панели с нужным процентным размером

Вопрос или проблема

Я пытаюсь создать скрипт, который запускает tmux с определенной раскладкой и размером панелей. Я следую руководству по следующей ссылке:
https://leanpub.com/the-tao-of-tmux/read#pane-resizing

Однако, когда я пытаюсь использовать tmux split-window -p 75, это скорее похоже на разделение 40%/60%. Я также пробовал tmux split-window -p 90, чтобы увидеть, смогу ли я получить большее и более очевидное различие в размерах между двумя панелями, но это мало что меняет.

Вот код, который я использую:

#!/bin/sh
tmux new -s abc -d
tmux split-window -p 90
tmux attach -t abc

Я знаю, как создать нужную раскладку, но моя проблема заключается в получении размеров панелей, которые мне нужны.

new-session
[…] С -d начальный размер берется из глобальной опции default-size; -x и -y могут использоваться для задания другого размера.

(источник)

Значение по умолчанию для default-size80x24. До того, как была введена настраиваемая default-size, new-session вел себя так, как будто это 80x24.

Что происходит, так это то, что split-window работает нормально. Затем вы attach, и раскладка пересчитывается в соответствии с новой шириной и высотой. Мое наблюдение состоит в том, что tmux склонен сохранять размер некоторых панелей при изменении размера, он не сохраняет относительные пропорции. Я не думаю, что вы можете легко изменить это поведение.

Укажите new-session использовать размер вашего терминала:

#!/bin/sh
tmux new-session -s abc -d -x "$(tput cols)" -y "$(tput lines)"
tmux split-window -p 90
tmux attach -t abc

Ответ или решение

Конечно, давайте разберем вашу проблему с разделением панелей в tmux на заданный процентный размер.

Формулирование проблемы

Вы описали проблему, связанную с тем, что при использовании команды tmux split-window -p 75, пропорции разделения панелей не соответствуют ожиданиям и составляют около 40/60%, даже при изменении команды на -p 90. Основная проблема заключается в том, что после команды attach, при которой происходит присоединение к сессии, tmux пересчитывает размер панелей, основываясь на новых ширине и высоте терминала.

Исследование проблемы

  1. Поведение tmux при разделении панелей:

    • tmux split-window -p 90 подразумевает, что вы хотите, чтобы новая панель занимала 90% от всей возможной высоты или ширины.
    • Однако, когда вы присоединяетесь к сессии (attach), tmux может изменить размеры панелей, чтобы приспособиться к новому размеру терминала, что может сохранить размер одной панели неизменным, а не пропорции.
  2. Настройки по умолчанию session:

    • По умолчанию, new-session создает сессию размером 80×24, если явно не задан другой размер через опции -x и -y.
    • При первоначальном создании сессии tmux может не учитывать размер вашего текущего терминала, если не указать соответствующие параметры.

Решение

Решение заключается в том, чтобы изначально создать tmux-сессию, учитывая размеры вашего терминала, используя команды tput для определения текущей ширины и высоты терминала, как показано ниже:

#!/bin/sh
tmux new-session -s abc -d -x "$(tput cols)" -y "$(tput lines)"
tmux split-window -p 90
tmux attach -t abc

Объяснение решения

  1. Команды tput cols и tput lines: Эти команды возвращают текущую ширину и высоту терминала, что позволяет создать сессию tmux с размерами, соответствующими вашему текущему терминалу.

  2. Распределение панелей: Используя -p 90, когда размер сессии изначально соответствует размеру терминала, вероятность того, что размер панелей останется в заданной пропорции, значительно выше.

Заключение

Подводя итоги, для достижения необходимого разделения панелей в tmux важно изначально правильно задать размер сессии. Использование возможностей командной строки для определения текущих параметров терминала позволит точнее контролировать распределение пространства между панелями. Если проблема сохраняется, рекомендуется протестировать и согласовать настройки терминала и tmux для дальнейшей оптимизации процесса.

Оцените материал
Добавить комментарий

Капча загружается...