Измените размер панели с помощью iTerm2 и AppleScript

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

Я пытаюсь использовать 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

  1. Создание основного скрипта:
    Начнем с основного AppleScript, который будет разделять панели и настраивать их размеры. Вам потребуется использовать команды AppleScript для управления размерами панелей.

  2. Создание панелей:
    Убедитесь, что вы используете метод create_pane для создания вертикальных и горизонтальных панелей. В вашем случае вам нужно будет также изменить размеры нижней панели, чтобы она занимала 2/3 высоты.

  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.

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

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