Exwm: превратите Emacs в тайлинговое графическое окружение

Почему выбрать Exwm как оконный менеджер
Exwm (Emacs X Window Manager) превращает ваш Emacs в оконный менеджер с тайлингом. Главное преимущество — единство концепций: окна GUI программ становятся фреймами и буферами Emacs. Это значит, что знакомые команды Emacs, буферы и макросы начинают работать с окнами и приложениями — и вы экономите время на переключениях между разными инструментами.
- Меньше отдельных конфигурационных файлов. Файл .emacs может быть и конфигом редактора, и конфигом менеджера окон.
- Глубокая кастомизация через Lisp: любое поведение легко изменить скриптом.
- Низкие системные требования и быстрая загрузка.

Важно: Exwm хорош, когда вы активно используете Emacs и хотите интегрировать большую часть рабочего процесса в один интерфейс. Если вы предпочитаете отдельные десктоп-окружения с визуальными настройками «на лету», Exwm может показаться слишком минималистичным.

Основные термины
- Exwm — оконный менеджер, основанный на Emacs и X11. Коротко: оконный менеджер = программа, которая управляет позициями окон, их фокусом и взаимодействием с пользователем.
Перед началом: что нужно знать
- Этот гайд ориентирован на Ubuntu 24.10, но общие шаги применимы к большинству дистрибутивов на базе Debian/Ubuntu.
- Вы должны иметь локальную учётную запись с правами sudo.
- Сохраните резервные копии ваших существующих конфигов (.emacs, .xsession) перед изменениями.
Important: Всегда тестируйте новую сессию в отдельном графическом сеансе прежде, чем заменять рабочий стол на рабочей машине.
Установка Exwm в Emacs
- Установите Emacs и зависимости через apt. В терминале выполните:
sudo apt install emacs dbus gnome-settings-daemonОткройте Emacs. Нажмите Alt+X, затем введите «package-install» и установите пакет exwm.
Откройте файл конфигурации Emacs:
- Нажмите Ctrl+X, затем Ctrl+F.
- Введите ~/.emacs и нажмите Enter.
- Вставьте базовую конфигурацию Exwm. Ниже — минимальная модификация, которая работает как отправная точка. Сохраняйте изменения после вставки.
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(fringe-mode 1)
(setq display-time-default-load-average nil)
(display-time-mode t)
(icomplete-vertical-mode 1)
(exwm-systemtray-mode 1)
(require 'exwm)
(setq exwm-workspace-number 5)
(setq exwm-input-global-keys
`(
([?\s-r]. exwm-reset)
([?\s-w]. exwm-workspace-switch)
([?\s-&].(lambda(command)
(interactive (list(read-shell-command "$ ")))
(start-process-shell-command command nil command)))
,@(mapcar(lambda(i)
`(,(kbd (format "s-%d" i)).
(lambda()
(interactive)
(exwm-workspace-switch-create ,i))))
(number-sequence 0 9))))
(exwm-enable)Примечание: если вы добавляете Exwm в существующий конфиг, убедитесь, что (exwm-enable) вызывается после всех связанных с Exwm настроек.
- Создайте файл .xsession (или отредактируйте существующий) для запуска Emacs как сессии:
Откройте или создайте ~/.xsession и вставьте:
xhost +SI:localuser:$USER
gnome-settings-daemon &
xsetroot -cursor_name left_ptr
xset r rate 200 60
exec dbus-launch --exit-with-session emacsСделайте файл исполняемым, если требуется:
chmod +x ~/.xsession- Создайте десктоп-файл для входа в сессию (требуются права root):
sudo nano /usr/share/xsessions/emacs.desktopИ вставьте:
[Desktop Entry]
Name=Exwm
Exec=emacs
Type=ApplicationСохраните и перезагрузите систему или выйдите из текущей сессии, чтобы выбрать Exwm в менеджере входа (GDM).
Note: На некоторых установках вместо gnome-settings-daemon можно использовать другие демоны окружения. Если у вас GNOME-пакеты не установлены, замените сервис на эквивалентный или пропустите.
Первый запуск Exwm
- На экране входа нажмите значок «шестерёнки» и выберите Exwm.
- Авторизуйтесь и дождитесь загрузки Emacs + Exwm. Это обычно занимает несколько секунд.
- Создайте новое окно (вертикальное разделение): Ctrl+X 3 — новое окно появится справа.
- Горизонтальное разделение: Ctrl+X 2 — окно появится внизу.


Переключение рабочих областей: Win (обычно клавиша Super) + цифра в верхнем ряду. Например, Win+3 переключит на рабочее пространство №3.
Note: можно также вызвать Alt+X и ввести exwm-workspace-switch чтобы переключиться через командную строку Emacs.
Запуск и управление приложениями в Exwm
В Exwm нет отдельного лаунчера. Вместо этого используется команда, выполняющая ввод из буфера команд Emacs в изолированной shell-сессии.
- Вызов лаунчера обычно настраивается через сочетание клавиш. В примере конфигурации запускается shell-команда через read-shell-command.
- По умолчанию для запуска программ можно настроить сочетание, например Shift+Win+7, которое вызывает приглашение ввода команды.
Чтобы запустить приложение: вызовите сочетание, введите имя, например firefox, и браузер откроется как фрейм внутри Exwm.

Чтобы закрыть активное окно, используйте Ctrl+K. Это завершит процесс приложения, но оставит стандартный фрейм Emacs. Чтобы удалить и фрейм, нажмите Ctrl+X 0.
Important: Exwm «перехватывает» существующий фрейм Emacs, вместо создания нового. Это нормальное поведение.
Настройка разрешения экрана и мониторов
Для изменения разрешения используйте xrandr из терминала (например, gnome-terminal). Выполните xrandr и запомните имя устройства и допустимые режимы. Пример устройства: Virtual-1. Если нужно установить 1360x768, выполните:
xrandr --output MONITOR --mode RESOLUTIONЗамените MONITOR на имя устройства и RESOLUTION на желаемое разрешение, например 1360x768.
Чтобы сохранить изменения между перезагрузками, добавьте ту же команду в ~/.xsession.
После изменений перезапустите текущую сессию Exwm:
- Alt+X, затем exwm-restart

Создание новых сочетаний клавиш
Exwm опирается на сочетания Emacs и глобальные сочетания exwm-input-global-keys. По умолчанию набор небольшой, и ожидается, что пользователь добавит свои.
Откройте ~/.emacs и найдите секцию exwm-input-global-keys. Вставьте строку шаблона для новой привязки:
([?\SHORTCUT].FUNCTION)- Замените SHORTCUT на комбинацию, например s-q для Win+Q.
- Замените FUNCTION на Lisp-функцию, которую хотите вызвать.
Пример: если вы хотите назначить Win+q для закрытия приложения, добавьте соответствующий вызов в список глобальных клавиш.
Note: Exwm использует c, s и m для обозначения Ctrl, Win (Super) и Alt соответственно.
Добавление passthrough-ключей
Passthrough-ключи позволяют передавать стандартные сочетания непосредственно в X11-приложения, не обрабатывая их Emacs. Это важно, если вам нужны привычные сочетания Ctrl+X или Alt+X внутри GUI-программ.
Добавьте перед глобальными shortcut’ами такой блок:
(setq exwm-input-prefix-keys
'(?\C-x
?\C-u
?\C-h
?\M-x ))Сохраните конфиг и перезапустите сессию.

Советы по кастомизации и плагины
- Используйте exwm-systemtray-mode для отображения системного трея.
- Интегрируйте менеджеры буфера (например, helm/ivy) для быстрого запуска приложений и переключения окон.
- Для мультимониторных конфигураций добавьте скрипты xrandr в .xsession и будьте внимательны с именами выходов (HDMI-1, DP-1, Virtual-1 и т. п.).
Примеры расширений и альтернатив
- i3 — минималистичный тайлинг-менеджер, не основанный на Emacs. Легче для тех, кто не использует Emacs.
- Hyprland — Wayland-композитор, современный, с богатой визуальной настраиваемостью.
- bspwm — менеджер окон с управлением через отдельный контроллер. Если вам нравится разделение логики и конфигурации в скриптах, bspwm подойдёт.
Каждый вариант имеет свои преимущества. Exwm выигрывает в интеграции с Emacs и гибкости через Lisp. Другие менеджеры больше ориентированы на традиционные рабочие окружения и дают визуальные эффекты и простую внешнюю конфигурацию.
Когда Exwm не подходит (контрпример)
- Вы предпочитаете графически богатые среды с настройкой «на лету» (темы, панели, виджеты) и не хотите учить Emacs — тогда лучше GNOME, KDE или Hyprland.
- Вы перешли на Wayland и не хотите использовать XWayland. Exwm — решение для X11.
- Если вы администрируете компьютеры для пользователей, которые не знакомы с Emacs, обучение будет сложным.
Модель мышления и эвристики
- Думайте о фреймах Emacs как о «главных контейнерах» для приложений и буферов.
- Перевод привычных GUI-операций на команды Emacs даёт преимущество: макросы, клавиатурные привязки, буферы.
- Начинайте с минимума: базовый .emacs + 5 рабочих пространств. Добавляйте кастомизации по потребности.
Руководство по быстрому развёртыванию (SOP)
- Резервная копия: сохраните ~/.emacs и ~/.xsession.
- Установите пакеты: sudo apt install emacs dbus gnome-settings-daemon.
- Установите пакет exwm через package-install.
- Вставьте минимальную конфигурацию в ~/.emacs и добавьте вызов (exwm-enable).
- Настройте ~/.xsession и /usr/share/xsessions/emacs.desktop.
- Перезайдите в систему, выберите сессию Exwm.
- Протестируйте базовые действия: разделение окон, запуск firefox, переключение рабочих областей.
- Настройте постоянные команды xrandr и клавиши.
Критерии приёмки
- Emacs загружается как графическая сессия.
- Окна GUI-приложений открываются как фреймы Emacs.
- Переключение рабочих пространств и базовые keybinds работают.
Отладка и распространённые ошибки
- Проблема: Exwm не запускается из дисплей-менеджера. Решение: проверьте корректность /usr/share/xsessions/emacs.desktop и правильность Exec. Убедитесь, что dbus установлен.
- Проблема: нет системного трея. Решение: включите exwm-systemtray-mode в конфиге.
- Проблема: xrandr не находит монитор. Решение: используйте вывод команды xrandr без параметров, чтобы увидеть доступные выходы.
Тестовые случаи и приёмка
- Тест 1: Запуск firefox из приглашения команд Emacs — браузер открывается в фрейме.
- Тест 2: Горизонтальное/вертикальное разделение работает для приложений и буферов.
- Тест 3: Клавиши passthrough позволяют использовать Ctrl+X внутри GUI-приложения.
Role-based чек-листы
Для разработчика:
- Установить Emacs+Exwm
- Настроить рабочие пространства под проекты
- Назначить сочетания для компиляции/отладки
Для писателя:
- Назначить быстрый запуск текстового процессора
- Настроить шаблоны и макросы для экспорта
Для дизайнера:
- Убедиться, что xrandr корректно настраивает внешние мониторы
- Назначить сочетания для инструментов работы с изображениями
Факты и числа
- Рабочие пространства: рекомендовано 4–8.
- Память: в моём опыте базовая сессия Exwm + Emacs может потреблять порядка 500 МБ ОЗУ; это зависит от запущенных пакетов и приложений.
- Время загрузки: обычно несколько секунд после входа.
Фактовые числа являются ориентировочными и зависят от конфигурации и набора пакетов.
Совместимость и миграция
- Exwm рассчитан на X11. Для Wayland потребуется запуск XWayland; нативной поддержки Wayland нет.
- При миграции с i3/bspwm: большинство ключевых концептов (тайлинг, рабочие пространства) сохраняются, но перенос конфигурации потребует переписывания на Lisp.
Безопасность и приватность
- Exwm как и Emacs не добавляет внешних рисков, но запущенные приложения имеют стандартные для X11 разрешения.
- Следите за автозапускаемыми процессами в .xsession и /usr/share/xsessions.
FAQ
Как вернуть старый рабочий стол, если Exwm не понравился?
- Выйдите из сессии Exwm. На экране входа выберите прежний DE (GNOME/KDE) и войдите.
- Удалите или переименуйте /usr/share/xsessions/emacs.desktop, если не хотите видеть запись.
Можно ли использовать Exwm без установки gnome-settings-daemon?
- Да. gnome-settings-daemon обеспечивает некоторые функции управления окружением. Его можно заменить или опустить, но часть настроек (например, управление питанием, темы) придётся настраивать вручную.
Работает ли Exwm на Wayland?
- Exwm — X11-менеджер окон. На Wayland он не работает нативно; можно использовать XWayland, но это обходной путь.
Заключение
Exwm — мощный выбор для тех, кто хочет объединить редактор и оконный менеджер в одном инструменте. Он уменьшает число конфигурационных файлов, даёт высочайшую гибкость и позволяет применять знакомые операции Emacs ко всем приложениям. Начните с базовой конфигурации, протестируйте основные кейсы и постепенно добавляйте кастомные клавиши и скрипты.
Короткое резюме:
- Exwm хорош для пользователей Emacs, ценящих клавиатурную работу и автоматизацию.
- Настройка требует времени, но окупается гибкостью.
- При проблемах вернитесь к проверенным шагам установки и проверьте логи.
Image credit: Mia Baker via Unsplash. All alterations and screenshots by Ramces Red.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента