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

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

• 8 min read • Linux • Обновлено 01 Dec 2025
Exwm: Emacs как тайлинговый оконный менеджер
Exwm: Emacs как тайлинговый оконный менеджер

Фотография человека, печатающего на ноутбуке.

Почему выбрать Exwm как оконный менеджер

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

  • Меньше отдельных конфигурационных файлов. Файл .emacs может быть и конфигом редактора, и конфигом менеджера окон.
  • Глубокая кастомизация через Lisp: любое поведение легко изменить скриптом.
  • Низкие системные требования и быстрая загрузка.

Скриншот Exwm с Firefox и буфером Emacs.

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

Скриншот основного конфигурационного файла Emacs для рабочего стола Exwm.

Основные термины

  • Exwm — оконный менеджер, основанный на Emacs и X11. Коротко: оконный менеджер = программа, которая управляет позициями окон, их фокусом и взаимодействием с пользователем.

Перед началом: что нужно знать

  • Этот гайд ориентирован на Ubuntu 24.10, но общие шаги применимы к большинству дистрибутивов на базе Debian/Ubuntu.
  • Вы должны иметь локальную учётную запись с правами sudo.
  • Сохраните резервные копии ваших существующих конфигов (.emacs, .xsession) перед изменениями.

Important: Всегда тестируйте новую сессию в отдельном графическом сеансе прежде, чем заменять рабочий стол на рабочей машине.

Установка Exwm в Emacs

  1. Установите Emacs и зависимости через apt. В терминале выполните:
sudo apt install emacs dbus gnome-settings-daemon
  1. Откройте Emacs. Нажмите Alt+X, затем введите «package-install» и установите пакет exwm.

  2. Откройте файл конфигурации Emacs:

  • Нажмите Ctrl+X, затем Ctrl+F.
  • Введите ~/.emacs и нажмите Enter.
  1. Вставьте базовую конфигурацию 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 настроек.

  1. Создайте файл .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
  1. Создайте десктоп-файл для входа в сессию (требуются права root):
sudo nano /usr/share/xsessions/emacs.desktop

И вставьте:

[Desktop Entry]
Name=Exwm
Exec=emacs
Type=Application

Сохраните и перезагрузите систему или выйдите из текущей сессии, чтобы выбрать Exwm в менеджере входа (GDM).

Note: На некоторых установках вместо gnome-settings-daemon можно использовать другие демоны окружения. Если у вас GNOME-пакеты не установлены, замените сервис на эквивалентный или пропустите.

Первый запуск Exwm

  1. На экране входа нажмите значок «шестерёнки» и выберите Exwm.
  2. Авторизуйтесь и дождитесь загрузки Emacs + Exwm. Это обычно занимает несколько секунд.
  3. Создайте новое окно (вертикальное разделение): Ctrl+X 3 — новое окно появится справа.
  4. Горизонтальное разделение: Ctrl+X 2 — окно появится внизу.

Скриншот вертикального разделения в Exwm.

Скриншот горизонтального разделения в Exwm.

Переключение рабочих областей: 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.

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

Терминал с выводом xrandr и именем монитора.

Создание новых сочетаний клавиш

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 ))

Сохраните конфиг и перезапустите сессию.

Подсветка passthrough-ключей в Exwm.

Советы по кастомизации и плагины

  • Используйте 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)

  1. Резервная копия: сохраните ~/.emacs и ~/.xsession.
  2. Установите пакеты: sudo apt install emacs dbus gnome-settings-daemon.
  3. Установите пакет exwm через package-install.
  4. Вставьте минимальную конфигурацию в ~/.emacs и добавьте вызов (exwm-enable).
  5. Настройте ~/.xsession и /usr/share/xsessions/emacs.desktop.
  6. Перезайдите в систему, выберите сессию Exwm.
  7. Протестируйте базовые действия: разделение окон, запуск firefox, переключение рабочих областей.
  8. Настройте постоянные команды 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.

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро