Полное руководство по bspwm — установка, настройка и отладка
Содержание
- Binary Space Partitioning — что это и как работает
- Клавиши и статус-бары: разделение ответственности
- Установка bspwm и sxhkd по дистрибутивам
- bspc — контроллер bspwm: конфигурация и правила
- sxhkd — что это и синтаксис конфигов
- Завершение установки: .xinitrc и дисплей-менеджер
- Практические советы: шаблоны, чек-листы и отладка
- Частые вопросы и решения
- Краткий глоссарий

Binary Space Partitioning — что это и как работает
Binary Space Partitioning (BSP) — идея представления окон как листьев в полном бинарном дереве. Простыми словами: когда вы открываете окно на пустом рабочем столе, bspwm создаёт узел (leaf). При появлении второго окна этот узел превращается в родительский узел (root), а для каждого окна создаётся свой лист. Последующие окна прикрепляются к имеющимся листьям, и при необходимости листья тоже превращаются в новые корни.

Почему это важно:
- Иерархия даёт однозначное представление о расположении окон.
- Проще реализовать правила для отдельных приложений или групп окон.
- Позволяет гибко переключать схемы разбиения (split): горизонтальная, вертикальная, спираль и т.д.

Понятия в одну строку:
- Узел (node): элемент дерева, который может быть внутренним (root) или листом (leaf).
- Leaf: конечный контейнер для окна.
- Split: операция, которая делит одну область на две.

Клавиши и статус-бары: почему это отдельные проекты
bspwm управляет только расположением окон. Всё, что не связано непосредственно с размещением и скрытием/показом окон, вынесено наружу:
- Управление горячими клавишами — sxhkd.
- Статус-бар — внешний проект (polybar, lemonbar, i3bar и т.д.).
Это сознательный дизайн: маленькие однозадачные утилиты, которые легко заменять.
Важно: если у вас не работают горячие клавиши — сначала проверьте, запущен ли sxhkd.
Установка bspwm и sxhkd
Оба пакета доступны в большинстве репозиториев. Команды для популярных дистрибутивов:
Debian / Ubuntu:
sudo apt update
sudo apt install bspwm sxhkdArch Linux:
sudo pacman -Syu bspwm sxhkdFedora:
sudo dnf install bspwm sxhkdVoid Linux:
sudo xbps-install -S bspwm sxhkdПосле установки лучше ознакомиться с man-страницами: man bspwm, man sxhkd, а также просмотреть репозитории проектов на GitHub для примеров конфигураций.

bspc — универсальный контроллер для bspwm
bspc — это утилита для управления состоянием bspwm. Все манипуляции с окнами выполняются через bspc (из конфиг-файла или вручную в терминале).
Подготовка конфигурации для bspwm
bspwm ищет исполняемый файл-конфигурацию по пути: ~/.config/bspwm/bspwmrc
Создаём директорию и файл:
mkdir -p /home/$USER/.config/bspwm && touch /home/$USER/.config/bspwm/bspwmrcСделаем файл исполняемым:
chmod +x /home/$USER/.config/bspwm/bspwmrcОткроем его в редакторе (пример vim):
vim /home/$USER/.config/bspwm/bspwmrc
Важно: bspwmrc — это обычный исполняемый скрипт. Его можно писать на Bash, sh, Python и т.д., но он должен запускать bspc-команды и запускать вспомогательные программы (например, sxhkd).
Пример базовой конфигурации 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 # клавиша-модификатор для изменения размера мышью
# Автоматическая схема разбиения (spiral, bsp, monocle и т.д.)
bspc config automatic_scheme spiral
# Правила для приложений
bspc rule -a Chromium desktop='^2' # Chromium на рабочем столе 2
bspc rule -a Gimp desktop='^8' state=floating follow=on # GIMP на 8-ом, в плавающем режимеОбратите внимание:
- Разделяем визуальные параметры и поведение.
- Правила — мощный инструмент: можно назначать рабочие столы, режимы (floating, tiled), менять фокус и т.д.
- Полный список опций — в документации bspwm (man bspc, репозиторий проекта).

Что делает bspc config и bspc rule
- bspc config — глобальные и per-monitor/per-desktop настройки.
- bspc rule — сопоставляет поведение приложениям по имени класса/вещанию (WM_CLASS).
Несколько практических замечаний:
- Чтобы узнать класс окна, запустите xprop и кликните по окну; смотрите WM_CLASS.
- Для отладки правил используйте bspc subscribe node_add node_remove node_history – это показывает события в дереве.
sxhkd — демон горячих клавиш
sxhkd слушает события клавиатуры и выполняет команды. Конфигурация простая, но требует аккуратных отступов ( TAB ) для командной части.
Подготовка конфигурации sxhkd
Создаём файл:
mkdir -p /home/$USER/.config/sxhkd && touch /home/$USER/.config/sxhkd/sxhkdrc
chmod +x /home/$USER/.config/sxhkd/sxhkdrc
vim /home/$USER/.config/sxhkd/sxhkdrc
Синтаксис и примеры
Форма записи:
- Сначала строка с комбинацией клавиш (modifier + key).
- Затем нажмите Enter и TAB перед строкой с командой — это важно: отступы определяют командную часть.
Примеры и объяснения:
# Перезагрузить конфигурацию sxhkd
alt + Escape
pkill -USR1 -x sxhkd
# выход и перезапуск bspwm
alt + shift + {q,r}
bspc {quit, wm -r}
# создать терминал или переключиться на самый большой
alt + {_,shift + }Return
{st, bspc node -s biggest.local}
# закрыть или убить окно
alt + {_,shift + }c
bspc node -{k,c}
# смена состояния окна (tiled, floating, fullscreen и т. п.)
alt + {t,ctrl + t,l,f}
bspc node -t{tiled,pseudo_tiled,floating,fullscreen}
# изменить размер блока (уменьшение/увеличение по сторонам)
super + alt + {h,j,k,l}
bspc node -z{left -200,bottom 0 -20,top 0 -20,right 200}
# фокус/перемещение по рабочим столам
alt + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{{1-9,10}}'Пояснения к синтаксису:
- Фигурные скобки {a,b} раскрываются по парам: сопоставление происходит по позиции.
- Символ _ в фигурных скобках обозначает “пустой” (pass-through) — то есть дефолтное сочетание.
- Indentation (TAB) обязательно при объявлении команд.

Советы по написанию keymap
- Разделяйте модификаторы: используйте Super для окон, Alt для приложений и Ctrl для TTY.
- Документируйте пары клавиш прямо в sxhkdrc комментариями.
- Для сложных сценариев вызывайте скрипты, а не длинные однострочные команды.
Завершение установки: запуск bspwm
Есть два основных пути:
- .xinitrc — для пользователей startx / minimal setups.
- Дисплей-менеджер (GDM, LightDM и т.д.) — выбрать bspwm в меню сессий.
Запуск через .xinitrc
Добавьте в конец ~/.xinitrc:
exec bspwmЕсли вы используете другие программы, поместите exec bspwm последней. Если exec выполняется как фоновой процесс (например, с &), Xorg завершит сессию.

Запуск через дисплей-менеджер
При использовании графического менеджера логина выберите сессию bspwm (иногда нужно нажать значок “шестерёнки” или “меню сессии”).

Практические шаблоны, чек-листы и методика настройки
Ниже — набор практических материалов, которые ускорят настройку и помогут при отладке.
Мини-методология: как собрать рабочую среду bspwm за 60–90 минут
- Установите bspwm и sxhkd через пакетный менеджер.
- Создайте базовые конфигурации в ~/.config/{bspwm,sxhkd} и сделайте файлы исполняемыми.
- Скопируйте минимальный bspwmrc и sxhkdrc из этого руководства и запустите startx или выберите комнату в дисплей-менеджере.
- Отлаживайте по шагам: сначала убедитесь, что bspwm стартует, затем sxhkd. Наблюдайте выводы ошибок в ~/.xsession-errors или journalctl.
- Настройте правила bspc для часто используемых приложений (терминалы, браузер, редактор).
- Подключите статус-бар (polybar/lemonbar) и запустите автозапуск (в bspwmrc).
- Документируйте горячие клавиши и создайте резервную копию конфигураций.
Роль‑ориентированные чек-листы
Новичок:
- Установлен bspwm и sxhkd
- Есть копия минимальных bspwmrc и sxhkdrc
- Запуск через .xinitrc или выбор сессии в DM
- Проверены ключи открытия терминала, переключения рабочих столов и закрытия окон
Продвинутый пользователь (power user):
- Настроены правила bspc для ключевых приложений
- Подключён статус-бар (polybar/lemonbar)
- Настроены скрипты автозапуска (compositor, сеть, менеджер буфера обмена)
- Создано резервное хранилище конфигов (dotfiles)
Системный администратор:
- Определены политики безопасности для запуска X сеансов
- Документированы зависимости и инструкция по восстановлению
- Настроены системные службы для автоматического старта при необходимости
Playbook: быстрый план восстановления при проблемах после изменения конфигурации
- Не грузится сессия (чёрный экран): переключитесь на TTY (Ctrl+Alt+F2). Войдите и временно переименуйте конфиг: mv ~/.config/bspwm/bspwmrc{,.bak}
- Вернитесь в графику (Ctrl+Alt+F1) и попробуйте перезапустить сессию.
- Если ключи не работают — убедитесь, что sxhkd запущен: pgrep -a sxhkd.
- Логи: journalctl –user -b, ~/.xsession-errors.
- Для отката используйте резервную копию конфигов в dotfiles.
Критерии приёмки (как понять, что всё настроено правильно)
- BSPWM стартует из .xinitrc или sессии DM без ошибок.
- sxhkd запускается автоматически и горячие клавиши работают.
- Минимальные правила bspc действуют: браузер открывается на рабочем столе 2, GIMP — в плавающем режиме.
- Статус-бар отображает информацию о рабочих столах и запущенных приложениях.
Отладка — пошаговые сценарии и распространённые ошибки
Черный экран при входе
Причины и шаги:
- Вы забыли сделать bspwmrc исполняемым. Проверьте: ls -l ~/.config/bspwm/bspwmrc
- .xinitrc запускает bspwm в фоне (with &). Убедитесь, что в .xinitrc последняя строка — exec bspwm.
- Ошибка в bspwmrc: запустите X в TTY и посмотрите вывод: startx &> ~/xorg.log
Шаги восстановления:
- Переключиться на терминал (Ctrl+Alt+F2).
- Переименовать bspwmrc и sxhkdrc, запустить startx.
- Проверить логи: cat ~/xorg.log, journalctl –user.
Горячие клавиши не работают
Проверки:
- sxhkd запущен? pgrep sxhkd или ps aux | grep sxhkd.
- Правильный синтаксис и отступы (TAB) в sxhkdrc.
- Не конфликтуют ли системные сочетания клавиш (DM/DE)?.
bspwm завершает сессию сразу после логина
Частая причина — .xinitrc запускает bspwm в фоне (через &) или выполняет незавершаемую команду после exec. Убедитесь, что последняя строка .xinitrc — exec bspwm и ничего не добавлено после неё.
Полезные сниппеты и шаблоны
Динамическое переключение между схемами разбиения в bspwm:
# переключить автоматическую схему
bspc config automatic_scheme bsp # bsp, spiral, monocle и т.д.Простой автозапуск в bspwmrc:
# в начале bspwmrc
# запустить compositor и ползунок громкости
picom &
nm-applet &
# запустить polybar, если установлен
polybar mybar &Команда для получения WM_CLASS окна (для правил bspc):
xprop WM_CLASS
# клик по окну покажет класс и имяБезопасность и совместимость
- sxhkd и bspwm работают над X11; при использовании Wayland потребуется совместимые решения (sway — аналог i3 для Wayland).
- Демоны, слушающие ввод (sxhkd), имеют привилегии пользователя, но не запускаются как root — минимизируйте права для скриптов, которые они выполняют.
- Храните чувствительные скрипты с правильными правами доступа (chmod 700).
Часто задаваемые вопросы
1. Почему у меня чёрный экран при первом входе?
Обычно потому, что не задан фон рабочего стола и/или в bspwmrc не запущен compositor/менеджер фонового изображения (feh). Запустите feh –bg-scale /path/to/image в bspwmrc или временно удалите проблемный исполняемый блок из bspwmrc.
2. Почему не работают мои горячие клавиши?
Чаще всего из-за:
- sxhkd не запущен;
- синтаксической ошибки в sxhkdrc (отступы TAB обязательны);
- конфликтов с менеджером входа или системными горячими клавишами.
3. При входе меня возвращает на системную консоль. В чём дело?
Это значит, что Xorg завершил сессию. Обычно причина — неправильная .xinitrc (bspwm запускается в фоне) или ошибка в bspwmrc, которая приводит к аварийному завершению. Посмотрите логи Xorg и journalctl.
Краткий глоссарий (1 строка на термин)
- bspwm: тайлинговый менеджер окон, управляемый через bspc.
- bspc: утилита управления bspwm (бинарный контроллер).
- sxhkd: демон горячих клавиш для Xorg.
- leaf/node: лист/узел бинарного дерева разбиения.
- split_ratio: коэффициент деления области при разбиении.
Решение для продвинутых пользователей: миграция, кастомизация и dotfiles
- Храните конфиги: ~/.config/bspwm/bspwmrc, ~/.config/sxhkd/sxhkdrc в git-репозитории (dotfiles).
- Используйте скрипты для создания рабочих окружений (autostart scripts) на разных машинах.
- Для интеграции с системными сервисами используйте user systemd units, если требуется автостарт при входе.
Заключение
bspwm даёт предсказуемую и мощную модель управления окнами через простую идею бинарных разбиений. Комбинация bspwm + sxhkd — это гибкая и лёгкая платформа для тех, кто хочет полностью контролировать рабочее пространство. Следуйте чек-листу, используйте шаблоны в этой статье и документируйте свои изменения.
Краткие выводы
- Настройка состоит из трёх частей: bspwmrc, sxhkdrc и автозапуска (xinitrc/DM).
- Внимайте отступам в sxhkdrc и правам на исполнение у bspwmrc.
- Для отладки используйте логи, xprop и команды bspc.
Дополнительные ресурсы: репозитории проектов bspwm и sxhkd на GitHub, man-страницы и сообщества в Reddit/IRC для примеров конфигураций и обмена dotfiles.