Я хочу принудительно задать определенный размер окон в моем 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}, и, наконец, убьет другое окно. Это должно работать для запуска команды в виртуальном терминале любых требуемых размеров.