Как принудительно задать заданный размер окна tmux?

Как принудительно задать заданный размер окна tmux?

Я хочу принудительно задать определенный размер окон в моем tmuxсеансе, независимо от размера моего терминала. Как это сделать?

Контекст

Я пытаюсь записать tmux в asciinema, как описано здесьhttps://github.com/asciinema/asciinema/wiki/Запись-tmux-session(запустить asciinema по tmux attachкоманде). Однако дисплей слишком большой, я хочу принудительно задать размер tmux window.

Что я пробовал

У меня есть успешный способ обойти эту проблему, используя второе представление сеанса tmux для mate-terminal -e 70x20принудительного изменения размера окна... но это похоже на хак.

Попытка принудительно изменить размер сеанса с помощью -x

tmux new-session -x $X -y $Y -d

Эти параметры, похоже, игнорируются (я пробовал играть с агрессивной настройкой изменения размера)

решение1

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

tmux new-session \; split-window -h \; split-window -v \; resize-pane -x 70 -y 20

решение2

Это должно сделать то, что вам нужно:

tmux new-session \; setw force-width 80 \; setw force-height 24 \; attach

или с $Xи $Y, конечно.

решение3

Это ошибка в tmux, и она была исправлена ​​в версии разработки. Последняя выпущенная версия на данный момент — 3.2a, в которой исправления нет.

Похоже, он игнорирует только параметры -x и -y для нового отсоединенного сеанса. В документации говорится, что эти значения переопределят параметры размера по умолчанию для новых окон, что предполагает создание нового сеанса, установку размера по умолчанию, запуск нового окна и последующее закрытие исходного окна. Это работает. Однако вы можете использовать параметры -x и -y для переопределения параметра размера по умолчанию, чтобы избежать необходимости его настройки, но вам все равно придется создать новое окно. Проблема в том, что параметры -x и -y изменяют размер по умолчанию для сеанса после того, как исходное окно уже создано.

tmux new-session -d -x $X -y $Y \; new-window ${MY_COMMAND} \; kill-window -t 0

Итак, это создаст новый сеанс с нужным вам размером по умолчанию, затем создаст новое окно с нужным размером, запустив ${MY_COMMAND}, и, наконец, убьет другое окно. Это должно работать для запуска команды в виртуальном терминале любых требуемых размеров.

Связанный контент