Sway — тайлинговый оконный менеджер для Wayland, созданный как совместимая замена i3. Окна раскладываются сеткой, управляются с клавиатуры и описываются текстовым конфигом. Разберём установку, базовую настройку, рабочие схемы и типичные проблемы на Wayland.
Почему Sway, а не i3
Wayland безопаснее X11: приложения не могут читать экран друг друга, а композитинг встроен в менеджер. Для тех, кто привык к i3, Sway даёт почти тот же синтаксис конфигурации и жесты.
# установить
sudo apt install sway
# или в Fedora
sudo dnf install sway
# проверить, какие сессии доступны на экране входа
ls /usr/share/wayland-sessions/
Запускайте Sway из консоли или выбирайте сессию на экране входа. Для теста достаточно live-носителя или отдельного пользователя.
Первый запуск и конфигурация
При первом входе Sway предложит создать конфигурацию по умолчанию. Она рабочая, но минимальная: содержит базовые привязки и запуск терминала.
mkdir -p ~/.config/sway
cp /etc/sway/config ~/.config/sway/config
# запустить с отладочным выводом
sway 2>&1 | head -40 &
# отредактировать конфиг
$EDITOR ~/.config/sway/config
После правки конфигурации перезагрузите её без выхода: в Sway это reload, назначенный по умолчанию.
# внутри sway: Win+Shift+c — reload
# или из терминала
swaymsg reload
# проверить, что ошибок нет
journalctl --user -b | grep -i sway | tail -20
Базовые привязки клавиш
В конфигурации используются модификаторы $mod (по умолчанию Super) и модификатор ввода $term. Основные сценарии: запуск терминала, переключение окон, закрытие, выход.
# фрагмент конфигурации
# set $mod Mod4
# bindsym $mod+Return exec alacritty
# bindsym $mod+d exec wofi --show drun
# bindsym $mod+Shift+q kill
# bindsym $mod+Shift+c reload
# bindsym $mod+Shift+e exec swaynag -t warning -m 'Выйти?'
Для запуска приложений удобен wofi или fuzzel: они работают на Wayland без X-зависимостей.
Рабочие пространства и раскладка
Рабочие пространства работают как в i3: окна распределяются по номерам, переключение — с клавиатуры. Раскладка бывает горизонтальной, вертикальной и вкладками.
# перемещение окна на рабочий стол
swaymsg move container to workspace 2
# список рабочих пространств
swaymsg -t get_workspaces
# текущее состояние окон
swaymsg -t get_tree | head -40
Вывод get_tree полезен при написании скриптов: он показывает дерево окон и их идентификаторы.
Ввод, мониторы и разрешения
# список выходов
swaymsg -t get_outputs
# разрешение и масштаб
swaymsg output eDP-1 scale 1.25
# в конфиге
# output eDP-1 resolution 1920x1080 scale 1.25
# клавиатура: раскладка и задержка
swaymsg input type:keyboard xkb_layout us,ru
swaymsg input type:keyboard xkb_options grp:alt_shift_toggle
На HiDPI масштаб задавайте дробно: scale 1.5 уменьшает элементы и улучшает читаемость мелкого текста.
Темы, шрифты и оформление
Sway не рисует панели сам — для них есть waybar. Окна оформляются через swaybg и границы в конфиге.
# фон
exec swaybg -i ~/Pictures/wall.png -m fill
# границы окон
# default_border pixel 2
# default_floating_border normal 2
# проверить шрифты
fc-list | head -10
Типичные проблемы
- Приложение не запускается — возможно, оно требует X11: используйте
cageили XWayland. - Не работает захват экрана — нужны порталы
xdg-desktop-portal-wlr. - Не запускается после входа — проверьте
~/.config/sway/configна ошибки синтаксиса. - Мышь «улетает» за край — настройка
pointer_constraintи поведение в играх.
# порталы для захвата экрана
sudo apt install xdg-desktop-portal-wlr
systemctl --user status xdg-desktop-portal --no-pager | head
# журнал
journalctl --user -b | grep -iE "portal|sway" | tail -30
Автозапуск и рабочий процесс
# в конфиге
# exec waybar
# exec mako
# exec swaybg -i ~/Pictures/wall.png -m fill
# запуск команды на определённом рабочем столе
# workspace 2; exec alacritty
Сохраняйте конфигурацию в dotfiles: она полностью текстовая, а значит, воспроизводима на другой машине за минуту.
Совместимость с X-приложениями
Часть программ до сих пор написана под X11. Sway запускает их через XWayland, но есть нюансы: масштабирование, захват мыши и курсор.
# проверить, запущен ли XWayland
ps aux | grep -i xwayland | grep -v grep | head
# запуск X-приложения
DISPLAY=:0 xeyes 2>/dev/null &
# если приложение глючит — попробуйте nvidia/cage
which cage xwayland 2>/dev/null
Для приложений, которым нужен доступ к корневому окну (скриншоты, автоматизация), ищите Wayland-совместимые альтернативы: на Wayland такой доступ по умолчанию запрещён.
Скриншоты, буфер обмена и запись
В Wayland захват экрана выполняется через portal, а не напрямую. Установите grim и slurp для выделения области.
# установить инструменты
sudo apt install grim slurp wl-clipboard swappy
# весь экран
grim ~/Pictures/shot-$(date +%H%M%S).png
# область
grim -g "$(slurp)" ~/Pictures/area.png
# буфер обмена
wl-copy < ~/Pictures/area.png
# в конфиге — горячая клавиша
# bindsym Print exec grim -g "$(slurp)" ~/Pictures/shot.png
Для записи экрана подойдёт wf-recorder. Проверьте, что доступ к экрану выдаёт portal, иначе запись завершится пустым файлом.
Переезд конфигурации с i3
Синтаксис почти совпадает, но часть команд различается: в Sway нет X-утилит вроде xrandr и xset. Замените их на swaymsg и аналоги.
# что нужно заменить
# xrandr -> swaymsg -t get_outputs
# xset xsetkb -> swaymsg input type:keyboard ...
# i3-msg -> swaymsg
# проверить расхождения
grep -nE "xrandr|xset|feh|dunst" ~/.config/sway/config ~/.config/i3/config 2>/dev/null | head -20
Также проверьте автозапуск: панели и уведомления должны поддерживать Wayland, иначе они не запустятся.
Итог
Sway переносит рабочий процесс i3 на Wayland: текстовый конфиг, рабочие пространства, управление с клавиатуры и отсутствие X-привилегий. Начните с конфигурации по умолчанию, добавьте waybar и wofi, настройте масштаб и раскладку. Для захвата экрана установите portal, а конфигурацию держите в репозитории.