Вопрос или проблема
Я пытаюсь создать скрипт, который запускает 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-size
– 80x24
. До того, как была введена настраиваемая 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 пересчитывает размер панелей, основываясь на новых ширине и высоте терминала.
Исследование проблемы
-
Поведение tmux при разделении панелей:
tmux split-window -p 90
подразумевает, что вы хотите, чтобы новая панель занимала 90% от всей возможной высоты или ширины.- Однако, когда вы присоединяетесь к сессии (
attach
), tmux может изменить размеры панелей, чтобы приспособиться к новому размеру терминала, что может сохранить размер одной панели неизменным, а не пропорции.
-
Настройки по умолчанию 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
Объяснение решения
-
Команды
tput cols
иtput lines
: Эти команды возвращают текущую ширину и высоту терминала, что позволяет создать сессию tmux с размерами, соответствующими вашему текущему терминалу. -
Распределение панелей: Используя
-p 90
, когда размер сессии изначально соответствует размеру терминала, вероятность того, что размер панелей останется в заданной пропорции, значительно выше.
Заключение
Подводя итоги, для достижения необходимого разделения панелей в tmux важно изначально правильно задать размер сессии. Использование возможностей командной строки для определения текущих параметров терминала позволит точнее контролировать распределение пространства между панелями. Если проблема сохраняется, рекомендуется протестировать и согласовать настройки терминала и tmux для дальнейшей оптимизации процесса.