Вопрос или проблема
Я пытаюсь использовать iTerm2 как tmux, поэтому я начал с скрипта itermocil. Мне нужны две маленькие панели сверху и одна большая горизонтальная панель внизу, так что сначала я добавил эту компоновку
elif layout == 'main-horizontal-flipped':
self.applescript.append(create_pane(1, num_panes, "horizontal"))
for p in range(2, num_panes):
self.applescript.append(create_pane(p-1, p, "vertical"))
Это сработало, но высота панелей одинаковая. Как я могу настроить высоту нижней панели, чтобы она занимала 2/3 от полной высоты iTerm2?
Похоже, что все делается с помощью applescript, но я не смог найти справку на веб-сайте iTerm2.
def create_pane(parent, child, split="vertical"):
return (''' tell pane_{pp}
set pane_{cp} to (split {o}ly with same profile)
end tell
'''.format(pp=parent, cp=child, o=split))
Кто-нибудь знает, как это сделать?
Ответ или решение
Для достижения желаемой конфигурации с использованием iTerm2 и AppleScript важно не только создать необходимые панели, но и корректно настроить их размеры. Вы упомянули, что хотите, чтобы нижняя панель занимала 2/3 высоты терминала, а верхние — по 1/6. Давайте разберем, как это можно сделать.
Шаги для настройки размеров панелей с использованием AppleScript в iTerm2
-
Создание основного скрипта:
Начнем с основного AppleScript, который будет разделять панели и настраивать их размеры. Вам потребуется использовать команды AppleScript для управления размерами панелей. -
Создание панелей:
Убедитесь, что вы используете методcreate_pane
для создания вертикальных и горизонтальных панелей. В вашем случае вам нужно будет также изменить размеры нижней панели, чтобы она занимала 2/3 высоты. -
Настройка высоты панелей:
Хотя iTerm2 не предоставляет прямого API для изменения размеров после создания панелей, вы можете использовать командуset bounds of pane
для определения высоты и ширины панелей.
Пример кода для вашего сценария
Вот как может выглядеть настроенный AppleScript для вашего случая:
def create_pane(parent, child, split="vertical"):
# Функция для создания новой панели
return (''' tell pane_{pp}
set pane_{cp} to (split {o}ly with same profile)
if {o} = "horizontal" then
set bounds of pane_{cp} to {0, 0, width of pane_{pp}, height of pane_{pp} / 3}
else
set bounds of pane_{cp} to {0, height of pane_{pp} / 3, width of pane_{pp}, height of pane_{pp} * 2 / 3}
end if
end tell
'''.format(pp=parent, cp=child, o=split))
# Основная логика для создания нужной конфигурации
elif layout == 'main-horizontal-flipped':
self.applescript.append(create_pane(1, num_panes, "horizontal")) # Создает верхнюю горизонтальную панель
for p in range(2, num_panes):
self.applescript.append(create_pane(p-1, p, "vertical")) # Создает вертикальные панели
Объяснение кода
- Функция
create_pane
создает панели на основе их родительского элемента и в зависимости от типа разделения (vertical
илиhorizontal
). set bounds of pane_{cp}
позволяет установить размеры новой панели. В зависимости от направления, высота и ширина будут скорректированы так, чтобы нижняя панель занимала 2/3 высоты терминала.- Вы можете адаптировать этот код в зависимости от численности панелей и желаемого расположения.
Заключение
Хотя такие изменения могут показаться сложными, используя AppleScript, вы сможете добиться желаемого расположения панелей в iTerm2. Не забывайте, что любой запуск и внесение изменений требует внимательности — всегда сохраняйте резервные копии ваших сценариев. Мы надеемся, что это решение поможет вам в вашей работе с iTerm2.