В современном мире многозадачность и продуктивность становятся ключевыми факторами эффективного использования компьютера. Особенно это актуально для пользователей оконных менеджеров, таких как i3 и Sway, которые отличаются гибкостью и минималистичностью. Однако управление большим количеством окон и рабочих пространств может стать непростым и зачастую запутанным процессом. Здесь на помощь приходит Spatial Shell — мощный демон с уникальной пространственной моделью, призванный изменить подход к организации окон и рабочих пространств. Spatial Shell представляет собой программное решение, вдохновлённое концепцией Material Shell, разработанное с целью облегчить перемещение и управление окнами внутри рабочих пространств, организованных в виде сетки.
В отличии от традиционных способов, где рабочие пространства и окна располагаются в линейном или иерархическом порядке, Spatial Shell предлагает двумерную сетку, в которой строки соответствуют рабочим пространствам, а столбцы — окнам внутри них. Такой подход обеспечивает интуитивное и наглядное управление окнами, позволяя быстро перемещать фокус между ними и переносить окна между пространствами без лишних усилий. В основе функционала Spatial Shell лежит возможность перемещения фокуса и окон как в пределах одного рабочего пространства, так и между соседними пространствами по вертикали. Пользователь может перемещать фокус влево или вправо внутри текущего рабочего пространства, удерживая его в рамках одной строки сетки. Одновременно с этим, перемещая фокус вверх или вниз, пользователь переключается на окна в вышележащем или нижележащем рабочем пространстве, что делает навигацию по большому количеству открытых рабочих поверхностей максимально естественной и быстрой.
Управление окнами также выходит на новый уровень гибкости. Перемещая ничего не меняющее положение окна влево или вправо внутри строки, пользователь меняет местами два соседних окна, что позволяет быстро организовывать пространство под свои нужды. Перемещение окна вверх или вниз переносит его в соседнее рабочее пространство, при этом окно вставляется справа от ранее сфокусированного окна, поддерживая логику и порядок расположения. Spatial Shell предоставляет возможность конфигурировать максимальное количество окон, отображаемых одновременно в одном рабочем пространстве при использовании колонного режима. Это особенно важно для тех, кто предпочитает компактное и удобное расположение контейнеров и хочет избежать визуального перегруза.
Помимо этого, Spatial Shell позволяет переключаться между двумя режимами отображения рабочих пространств — колонным и максимизированным. Колонный режим разбивает пространство на несколько окон, расположенных в столбцах, а максимизированный режим позволяет сосредоточиться на одном окне, используя весь экран. Такой выбор дает возможность адаптировать рабочее пространство под текущие задачи и повысить удобство работы. Одной из ключевых особенностей Spatial Shell является простота установки и настройки, что делает данное решение доступным для широкой аудитории. Простые способы сборки из исходников с помощью утилиты opam и make позволяют быстро приступить к использованию.
Для пользователей Arch Linux доступен пакет в Arch User Repository, что упрощает установку через yay — популярный менеджер пакетов. Разработчики также предоставляют готовые бинарные сборки для Linux с официального GitHub, подписанные публичным ключом для обеспечения безопасности. Важную роль в работе Spatial Shell играют исполняемые файлы spatial, spatialmsg и spatialblock, которые вместе обеспечивают всю необходимую функциональность. Демон spatial отвечает за управление окнами и обмен информацией, а spatialmsg выступает клиентской утилитой для отправки команд. Spatialblock же предназначен для интеграции с статус-барами, позволяя отображать актуальное состояние сетки и расположения окон с минимальной задержкой.
Конфигурация Spatial Shell производится посредством текстового файла, расположенного по умолчанию в директории $XDG_CONFIG_HOME/spatial/config, либо, при отсутствии переменной, в $HOME/.config/spatial/config. Файл конфигурации состоит из списка команд, которые Spatial Shell считывает при запуске, что дает возможность тонко настраивать поведение и взаимодействие с оконным менеджером. Для интеграции Spatial Shell с любимым оконным менеджером достаточно добавить вызов демона spatial в конфигурационный файл и назначить удобные клавишные сочетания для взаимодействия через spatialmsg. Это обеспечивает простой и эффективный способ управления окнами с клавиатуры, что особенно ценят пользователи минималистичных окружений.
Для повышения визуальной информативности Spatial Shell может посылать сигналы статус-бару, например Waybar, при изменениях в конфигурации сетки и расположении окон. Такая функциональность дает мгновенную обратную связь и помогает лучше ориентироваться в состоянии рабочего пространства. В комплекте с Spatial Shell поставляются полезные примеры настроек для популярных статус-баров в директории contrib, а также минимальный конфигурационный файл, который позволяет быстро приступить к использованию. Особого внимания заслуживает вдохновение, которое проект получил от sway — одного из ведущих Wayland оконных менеджеров. Многие архитектурные решения и даже формулировки в документации Spatial Shell во многом позаимствованы у sway, что гарантирует не просто совместимость, но и преемственность лучших практик.