Гид по технологиям

Полное руководство по bspwm — установка, настройка и отладка

9 min read Linux Обновлено 04 Dec 2025
Руководство: установка и настройка bspwm
Руководство: установка и настройка bspwm

Содержание

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

Обложка: bspwm на рабочем столе

Binary Space Partitioning — что это и как работает

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

Схема корневых узлов и листьев рабочего стола

Почему это важно:

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

Пример разбиения окон в bspwm

Понятия в одну строку:

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

Ещё один пример вложенных разбиений и схем

Клавиши и статус-бары: почему это отдельные проекты

bspwm управляет только расположением окон. Всё, что не связано непосредственно с размещением и скрытием/показом окон, вынесено наружу:

  • Управление горячими клавишами — sxhkd.
  • Статус-бар — внешний проект (polybar, lemonbar, i3bar и т.д.).

Это сознательный дизайн: маленькие однозадачные утилиты, которые легко заменять.

Важно: если у вас не работают горячие клавиши — сначала проверьте, запущен ли sxhkd.

Установка bspwm и sxhkd

Оба пакета доступны в большинстве репозиториев. Команды для популярных дистрибутивов:

Debian / Ubuntu:

sudo apt update
sudo apt install bspwm sxhkd

Arch Linux:

sudo pacman -Syu bspwm sxhkd

Fedora:

sudo dnf install bspwm sxhkd

Void 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 в редакторе

Важно: 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

Что делает 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

Список файлов конфигурации sxhkd

Синтаксис и примеры

Форма записи:

  • Сначала строка с комбинацией клавиш (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) обязательно при объявлении команд.

Пример конфигурации sxhkd в редакторе

Советы по написанию keymap

  • Разделяйте модификаторы: используйте Super для окон, Alt для приложений и Ctrl для TTY.
  • Документируйте пары клавиш прямо в sxhkdrc комментариями.
  • Для сложных сценариев вызывайте скрипты, а не длинные однострочные команды.

Завершение установки: запуск bspwm

Есть два основных пути:

  1. .xinitrc — для пользователей startx / minimal setups.
  2. Дисплей-менеджер (GDM, LightDM и т.д.) — выбрать bspwm в меню сессий.

Запуск через .xinitrc

Добавьте в конец ~/.xinitrc:

exec bspwm

Если вы используете другие программы, поместите exec bspwm последней. Если exec выполняется как фоновой процесс (например, с &), Xorg завершит сессию.

Настройка .xinitrc для автозапуска bspwm

Запуск через дисплей-менеджер

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

Выбор сессии bspwm на экране входа Ubuntu

Практические шаблоны, чек-листы и методика настройки

Ниже — набор практических материалов, которые ускорят настройку и помогут при отладке.

Мини-методология: как собрать рабочую среду bspwm за 60–90 минут

  1. Установите bspwm и sxhkd через пакетный менеджер.
  2. Создайте базовые конфигурации в ~/.config/{bspwm,sxhkd} и сделайте файлы исполняемыми.
  3. Скопируйте минимальный bspwmrc и sxhkdrc из этого руководства и запустите startx или выберите комнату в дисплей-менеджере.
  4. Отлаживайте по шагам: сначала убедитесь, что bspwm стартует, затем sxhkd. Наблюдайте выводы ошибок в ~/.xsession-errors или journalctl.
  5. Настройте правила bspc для часто используемых приложений (терминалы, браузер, редактор).
  6. Подключите статус-бар (polybar/lemonbar) и запустите автозапуск (в bspwmrc).
  7. Документируйте горячие клавиши и создайте резервную копию конфигураций.

Роль‑ориентированные чек-листы

Новичок:

  • Установлен bspwm и sxhkd
  • Есть копия минимальных bspwmrc и sxhkdrc
  • Запуск через .xinitrc или выбор сессии в DM
  • Проверены ключи открытия терминала, переключения рабочих столов и закрытия окон

Продвинутый пользователь (power user):

  • Настроены правила bspc для ключевых приложений
  • Подключён статус-бар (polybar/lemonbar)
  • Настроены скрипты автозапуска (compositor, сеть, менеджер буфера обмена)
  • Создано резервное хранилище конфигов (dotfiles)

Системный администратор:

  • Определены политики безопасности для запуска X сеансов
  • Документированы зависимости и инструкция по восстановлению
  • Настроены системные службы для автоматического старта при необходимости

Playbook: быстрый план восстановления при проблемах после изменения конфигурации

  1. Не грузится сессия (чёрный экран): переключитесь на TTY (Ctrl+Alt+F2). Войдите и временно переименуйте конфиг: mv ~/.config/bspwm/bspwmrc{,.bak}
  2. Вернитесь в графику (Ctrl+Alt+F1) и попробуйте перезапустить сессию.
  3. Если ключи не работают — убедитесь, что sxhkd запущен: pgrep -a sxhkd.
  4. Логи: journalctl –user -b, ~/.xsession-errors.
  5. Для отката используйте резервную копию конфигов в 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

Шаги восстановления:

  1. Переключиться на терминал (Ctrl+Alt+F2).
  2. Переименовать bspwmrc и sxhkdrc, запустить startx.
  3. Проверить логи: 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.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Потеря пакетов в Smite: как исправить
Игры

Потеря пакетов в Smite: как исправить

Как добавить фото в историю Instagram
Социальные сети

Как добавить фото в историю Instagram

AI‑портреты в исторических эпохах
AI Portraits

AI‑портреты в исторических эпохах

Фото-мозаика в Linux с Polyfoto
Linux

Фото-мозаика в Linux с Polyfoto

Исправить ошибку ChromeOS на Chromebook
Руководства

Исправить ошибку ChromeOS на Chromebook

Экспорт и импорт закладок в Google Chrome
Браузеры

Экспорт и импорт закладок в Google Chrome