Все «скрипты» i3, которых нет в конфигурации, выполняются через i3-msg
i3-msg отправляет сообщения в оконный менеджер i3. В основном это строки конфигурации (или IPC, что немного сложнее).
Как открыть рабочее пространство из командной строки в i3
Как вы открываете его в своем конфиге?
bindsym Mod4+1 workspace $ws1
Что-то в этом роде, верно? Теперь, используя i3-msg для перехода в рабочую область 1:
i3-msg workspace 1
Простой, верно?
Остальная часть вашего вопроса довольно неясна, но я сделаю все возможное:
Я бы хотел написать скрипт для открытия рабочего пространства со "следующим" доступным номером "
Как вы начнете делать это (после выполнения man i3-msg
):
i3-msg -t get_workspaces
Это возвращает json (если вы сделали какое-либо кодирование, вам будет тепло внутри, а если нет, то вы будете напуганы выходом). Тогда я попрошу вас прочитать это:
https://i3wm.org/docs/ipc.html#_receiving_replies_from_i3
Используя jq
или что-то вроде json.sh
для анализа вывода с помощью bash, вы должны получить, какие рабочие пространства являются "активными", например:
[{"num":3,"name":"3","visible":true,"focused":false,"rect":{"x":0,"y":0,"width":1920,"height":1080},"output":"HDMI-1","urgent":false},{"num":2,"name":"2","visible":true,"focused":false,"rect":{"x":3520,"y":0,"width":1920,"height":1080},"output":"VGA-1","urgent":false},{"num":1,"name":"1","visible":true,"focused":true,"rect":{"x":1920,"y":32,"width":1600,"height":868},"output":"eDP-1","urgent":false},{"num":5,"name":"5","visible":false,"focused":false,"rect":{"x":1920,"y":32,"width":1600,"height":868},"output":"eDP-1","urgent":false}]
Читая веб-сайт, который я вам дал, вы можете видеть, что рабочие пространства 1, 2, 3 и 5 «активны», то есть с окнами в них. После анализа фактического json вы получите массив или что-то в этом роде. Если вы хотите появиться на 4 (настоящий «следующий» рабочий стол) или на 6 (он же самое большое число + 1), вам решать. Вы не упомянули, что вы хотите написать в сценарии, поэтому я оставлю это вам, чтобы разобраться.
возможно, два окна, каждое из которых уже направлено на определенный вид
Я не уверен, что вы имеете в виду. Вы, вероятно, хотите 2 окна X (мы будем использовать терминал в этом случае) в рабочей области, которую мы определили как «следующее»?
Давайте немного вернемся к i3-msg.
Представьте, что вы делаете все, что пытаетесь сделать вручную, в виде списка команд, которые вы запускаете для i3.
«Перейти в рабочую область X»: i3-msg workspace 4
«Создайте там программу под названием kitty»: kitty
«Разделить по вертикали и запустить другую программу»: i3-msg split v
«Инициируйте другое окно котенка»: kitty
После этого вы можете вернуться к своему текущему рабочему пространству (я предлагаю сохранить его в переменной и просто повторно использовать рабочее пространство i3-msg $ curr_workspace).
Как я уже сказал, вопрос был не о самом сценарии, поэтому я оставил это, чтобы выяснить это самостоятельно, но не стесняйтесь задавать конкретный вопрос под тегом bash. :). Надеюсь, я не совсем понял ваш вопрос.
Добро пожаловать в сообщество i3.