Диспетчер окон с разделением двоичного пространства (bspwm) — мощный минималистичный оконный менеджер для Linux. Он обладает широкими возможностями настройки и предлагает инновационный подход к управлению окнами. Bspwm написан на C и его можно настроить на любом языке. Bspwm — это воплощение пользовательской настройки в оконных менеджерах. Это делает его привлекательным для опытных пользователей и мастеров, которые заинтересованы в том, чтобы научиться создавать свой собственный уникальный рабочий процесс.
Разделение двоичного пространства, объяснение
Двоичное разделение пространства — это идея, согласно которой окна на рабочем столе могут быть представлены как листья полного двоичного дерева. Полное двоичное дерево представляет собой структуру упорядочивания информации с использованием иерархических узлов. Любая информация в этом дереве сортируется по два, причем корневой узел всегда содержит два узла.<
Contents
Разделение двоичного пространства, объяснение
u/wp-content/uploads/2024/05/bspwm-01-root-nodes.png" alt="Bspwm 01 Корневые узлы">Bspwm работает с узлами. На практике, когда вы создаете окно на пустом рабочем столе, bspwm создает один узел для размещения этого окна. Этот узел можно рассматривать как листовой узел. Но когда вы создадите дополнительное окно на этом рабочем столе, этот листовой узел станет корневым узлом, и bspwm создаст два новых конечных узла, прикрепленных к нему. Затем он помещает текущее окно и вновь созданное в эти конечные узлы.
Любое новое окно, которое будет создано после этого, теперь будет связано с одним из этих конечных узлов, превращая их в соответствующие корневые узлы.
Подобное расположение окон создает четкую иерархию на рабочем столе. Понятно, какие листовые узлы были созданы первыми, а какие принадлежат определенной группе корневых узлов. Это полезно при создании пользовательских правил поведения для определенных окон и макетов окон.
Сочетания клавиш и строки состояния
Важно отметить, что bspwm управляет только окнами. Это означает, что любые другие функции, не связанные с управлением окнами, не включены в пакет bspwm. Сюда входит возможность привязывать клавиши к функциям, а также возможность отображать строку состояния.
Чтобы использовать привязки клавиш в bspwm, разработчики создали отдельную программу под названием Simple X Hotkey Daemon (sxhkd), которая управляет только привязками клавиш. Однако для строки состояния пользователь может использовать устанавливать различные сторонние приложения , например полибар и лимонбар.
Читайте также: 10 лучших доков для запуска Linux
Установка bspwm и sxhkd
Установка bspwm и sxhkd относительно проста. Обе программы также доступны в большинстве репозиториев Linux. Например, чтобы установить их в Debian и Ubuntu, вы можете сделать это, используя apt
:
sudo apt install bspwm sxhkd
В Arch Linux вы можете использовать pacman
:
sudo pacman -Syu bspwm sxhkd
В Fedora вы можете использовать dnf
:
sudo dnf install bspwm sxhkd
Для Void Linux вы можете использовать xbps
:
sudo xbps-install bspwm sxhkd
В моем случае я установлю его в свою систему Void Linux, поэтому буду использовать XBPS.
bspc: универсальный контроллер для bspwm
Чтобы использовать bspwm, на
Сочетания клавиш и строки состояния
граммой: bspc. Это мощная утилита, которая позволяет контролировать и настраивать поведение bspwm. Фактически, все команды, которые мы будем использовать для управления окнами и настройки их поведения, являются всего лишь командами bspc.Подготовка файла конфигурации для bspwm
Чтобы начать настройку bspwm, нам нужно сначала создать файл конфигурации. Здесь bspwm будет искать команды bspc, которые он выполнит при первом запуске. По умолчанию bspwm будет искать файл «/home/$USER/.config/bspwm/bspwmrc». Чтобы создать этот файл, вы можете ввести:
mkdir -p /home/$USER/.config/bspwm && touch /home/$USER/.config/bspwm/bspwmrc
Эта команда создаст папку bspwm в «/home/$USER/.config/», а также создаст файл bspwmrc в этой папке.
Теперь файл bspwmrc можно написать на любом языке, если он является исполняемым. Это означает, что нам сначала нужно будет установить такие свойства файла. Мы можем сделать это, набрав следующее:
sudo chmod 774 /home/$USERУстановка bspwm и sxhkd
wm/bspwmrc
Это позволит нам и любому участнику нашей группы пользователей выполнить этот файл.
После этого мы можем открыть файл bspwmrc. В моем случае я буду использовать vim для редактирования файла конфигурации. Для этого я наберу следующее:
vim /home/$USER/.config/bspwm/bspwmrc
Откроется пустой файл, и теперь мы можем начать писать нашу конфигурацию.
Настройка bspwm
Базовая конфигурация bspwm выглядит примерно так:
#!/bin/bash xsetroot -cursor_name left_ptr sxhkd & bspc config border_width 2 bspc config window_gap 0 bspc config split_ratio 0.62 bspc config focus_follows_pointer true bspc config pointer_modifier mod1 bspc config automatic_scheme spiral bspc rule -a Chromium desktop='^2' bspc rule -a Gimp debspc: универсальный контроллер для bspwm
=floating follow=on
Как указано в первой строке, эта конфигурация написана на Bash. Первые несколько команд — это программы, которые я хотел запустить перед настройкой каких-либо конфигураций bspwm.
Первый, xsetroot, заменяет курсор X по умолчанию на более знакомый левый указатель. Второй инициализирует наш демон горячих клавиш в фоновом режиме.
Конфигурация bspc и правило bspc
Следующие команды в конфигурации относятся к bspc. bspc config
посвящен общей настройке оконного менеджера. Он включает в себя
Подготовка файла конфигурации для bspwm
.- border_width определяет толщину (в пикселях) границы окон.
- window_gap определяет количество промежутков в пикселях вокруг окон.
- split_ratio определяет соотношение между двумя конечными узлами при разделении.
- focus_follows_pointer определяет, может ли указатель мыши контролировать, какое окно получает фокус.
- pointer_modifier определяет клавишу клавиатуры для изменения размера окон с помощью мыши.
- automatic_scheme определяет расположение окон при разделении в автоматическом режиме.
Правило bspc, с другой стороны, касается поведения программ при открытии в bspwm.
- Первое правило в нашем примере конфигурации заставляет Chromium запускаться на втором рабочем столе.
- Второе правило в нашем примере заставляет Gimp запускаться на восьмом рабочем столе. Это также заставляет Gimp работать в плавающем состоянии, а не в плиточном состоянии по умолчанию. Наконец, при загрузке окна фокусируется на Gimp.
Теперь у нас есть базовая конфигурация bspwm. Однако важно отметить, что параметры bspc config
и bpsc rule
обширны. Если вы хотите узнать больше о точной настройке вашего bspwmrc, вы можете посетить Github Документация на Гитхабе , чтобы получить полный список всех возможных настроек.
sxhkd: Утилита привязки клавиш для bspwm
sxhkd — простая программа. Он прослушивает события ввода с клавиатуры и выполняет команды в зависимости от нажатых вами клавиш. Он может обрабатывать ввод несколькими клавишами посредством аккордов и имеет интуитивно понятный файл конфигурации, который прост и понятен.
Подготовка файла конфигурации для sxhkd
Подготовка файла конфигурации для sxhkd аналогична настройке файла bspwmrc. Сначала нам нужно создать папку конфигурации и файл для sxhkd. Мы можем сделать это, введя следующую команду:
mkdir -p /home/$USER/.config/sxhkd/ && touch /home/$USER<Настройка bspwm
fig/sxhkd/sxhkdrc
Тогда нам нужно сделать файл sxhkdrc исполняемым:
sudo chmod 774 /home/$USER/.config/sxhkd/sxhkdrc
После этого у нас есть файл конфигурации sxhkd для вставки всех наших сочетаний клавиш.
Настройка sxhkd
sxhkd распознает сочетания клавиш по определенному шаблону. Сначала он запрашивает ключ-модификатор. Это может быть Alt, Супер, Гиперили Control. После этого вам необходимо предоставить обычный ключ в дополнение к ключу-модификатору. Затем его можно объединить в привязку клавиш, добавив знак «+» между этими двумя клавишами.
Поэтому общая форма привязки клавиш sxhkd выглядит следующим образом:
modifier key + normal key (+ {_, additional, keys})
После этого вам нужно нажать Enterи Tab, чтобы создать линию с отступом под привязкой клавиш. После этого вам нужно указать коман
Конфигурация bspc и правило bspc
ии сочетания клавиш.Пример файла конфигурации для sxhkd выглядит примерно так:
# make sxhkd reload its configuration files alt + Escape pkill -USR1 -x sxhkd # quit or restart bspwm alt + shift + {q,r} bspc {quit,wm -r} # create a new terminal window or swap the current one to the biggest one in the screen alt + {_,shift + }Return {st, bspc node -s biggest.local} # close or kill a window alt + {_,shift + }c bspc node -{k,c} # change the window state alt + {t,ctrl + t,l,f} bspc node -t {tiled,pseudo_tiled,floating,fullscreen} # expand a window by moving one of its side outward super + alt + {h,j,k,l} bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} # focus or send a window to the given desktop alt + {_,shift + }{1-9,0} bspc {desktop -f,node -d} '^{1-9,10}'
Объяснение синтаксиса привязки клавиш
Как мы уже говорили выше, синтаксис привязки клавиш для sxhkd относительно прост. Кроме того, sxhkd может группировать сочетания клавиш и выполнять команды ветвления с помощью сочетания клавиш.
Например, ряд команд в этой конфигурации используют фигурные скобки. Это позволяет нам назначать несколько функций одинаковым сочетаниям клавиш. Учитывайте эту команду в конфигурации:
alt + shift + {q,r} bspc {quit, wm -r}
Эта команда предназначена для закрытия и перезапуска bspwm. Фигурные скобки в привязке клавиш соответствуют фигурным скобкам в командной строке. Поэтому, когда мы нажимаем Alt+ Shift+ Qна клавиатуре, команда: bspc quit
выполняется. Однако нажатие Alt+ Shift+ Rприведет к выполнению bspc wm -r
.
Мы также можем обойти необходимость предоставления дополнительных ключей при ветвлении. Рассмотрим этот пример:
alt + {_,shift + }Return {st, bspc node -s biggest.local}
Эта команда занимается
sxhkd: Утилита привязки клавиш для bspwm
на рабочем столе. Я могу выполнить первую команду, нажав Alt+ Enter, а вторую команду — нажав Alt+ Shift+ Ввод.Это связано с тем, что символ подчеркивания действует как пропуск для комбинаций клавиш. Это позволяет нам использовать привязку клавиш по умолчанию для команды, а также иметь «модифицированную» привязку клавиш для других команд.
Наконец, sxhkd не ограничивается одним ветвлением. Рассмотрим этот пример: