Как добавить, изменить или удалить сеансы в GDM
Оглавление
- xsessions — откуда GDM берет список
- Изменение пункта в списке сеансов
- Создание нового пункта (.desktop-шаблон)
- Установка сеанса по умолчанию для пользователя
- Проверка, отладка и типичные ошибки
- Контрольный список и пошаговый playbook
- Безопасность, совместимость Xorg/Wayland и примечания по локали
- Краткий глоссарий и итог
xsessions — откуда GDM берет список
Список сеансов в GDM формируется по файлам с расширением .desktop в системной директории /usr/share/xsessions. Каждый файл описывает один пункт меню “Сеанс” в GDM. Чтобы добавить, изменить или удалить пункт, нужно работать с этими файлами. Так как это системная папка, требуются привилегии root.

Файл типа .desktop содержит набор полей (Name, Exec, Comment и т. п.), которые управляют тем, как элемент отображается и что запускается при выборе. Переименование или удаление .desktop-файла удалит элемент из списка GDM.
Important: не редактируйте .desktop-файлы напрямую в пользовательской сессии без резервной копии — используйте sudo или редактор с поддержкой привилегий.
Изменение пункта в списке сеансов
- Откройте терминал.
- Просмотрите содержимое папки:
ls -la /usr/share/xsessions- Отредактируйте выбранный файл .desktop от имени root. Рекомендуется использовать безопасный вариант, например sudoedit, или GUI-редактор через sudo с флагом H:
sudo -H gedit /usr/share/xsessions/имя-сеанса.desktop
# или
sudoedit /usr/share/xsessions/имя-сеанса.desktop- Внесите изменения и сохраните файл.

Совет: вместо gedit под серверными системами используйте nano, vim или любой консольный редактор.
Создание нового пункта (.desktop-шаблон)
Ниже приведён минимальный шаблон .desktop для создания нового пункта сеанса. Сохраните файл с расширением .desktop в /usr/share/xsessions (например, /usr/share/xsessions/my-custom.desktop) и выставьте права чтения для всех.
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=My Custom Session
Comment=Мой кастомный рабочий стол
Exec=/usr/local/bin/start-my-session
TryExec=/usr/local/bin/start-my-session
Icon=/usr/share/pixmaps/my-session-icon.png
X-LightDM-DesktopName=MyCustomПояснения к полям:
- Encoding: кодировка файла — обычно UTF-8.
- Type: для сеансов используйте Application.
- Name: видимое имя в списке GDM.
- Comment: краткое описание.
- Exec: команда или скрипт, который запускает сессию; может содержать аргументы.
- TryExec: опциональная проверка наличия исполняемого файла; если отсутствует — пункт может не отображаться.
- Icon: путь к иконке (необязательно).

После сохранения новый пункт появится в списке сеансов при следующем старте GDM.
Notes: если пункт не появился, проверьте права и формат файла (первая строка [Desktop Entry] обязательно, кодировка без BOM).
Установка сеанса по умолчанию для пользователя
Для того чтобы назначить конкретный сеанс по умолчанию для пользователя, нужно отредактировать файл пользователя в /var/lib/AccountsService/users/. Процесс такой:
- Откройте терминал и перейдите в папку AccountsService:
cd /var/lib/AccountsService/
ls -la users- Получите права root (один из безопасных способов):
sudo -s
# или
sudo -i- Отредактируйте файл с именем пользователя (например, для пользователя ramces):
cd /var/lib/AccountsService/users
sudo -H gedit ramces
# или
sudoedit /var/lib/AccountsService/users/ramces- В файле найдите или добавьте блок, содержащий строку Session= и параметр XSession=. В Session и XSession укажите имя .desktop (без расширения), которое вы хотите загрузить. Пример для XFCE:
[User]
Session=xfce
XSession=xfce
Icon=/home/ramces/.face
SystemAccount=false
[InputSource0]
xkb=us- Сохраните файл и перезагрузите компьютер:
rebootПосле перезагрузки GDM должен автоматически выбирать указанный сеанс при входе.
Important: имена Session/XSession должны совпадать с именем .desktop-файла (имя файла без “.desktop”).

Проверка, отладка и типичные ошибки
Что проверить, если сеанс не появляется или не загружается:
- Права доступа: файл /usr/share/xsessions/имя.desktop должен быть доступен для чтения (644).
- Формат: файл должен начинаться с [Desktop Entry], кодировка UTF-8, корректные ключи Name и Exec.
- TryExec: если указан и не существует — GDM может скрыть пункт.
- SELinux/AppArmor: на хостах с политиками безопасности дополнительные ограничения могут блокировать исполнение.
- Логи GDM: посмотрите в systemd-журналах:
sudo journalctl -b _COMM=gdm-x-session
sudo journalctl -u gdm- Запуск вручную: попробуйте выполнить команду из Exec в вашей сессии или под пользователем, чтобы убедиться, что скрипт корректно стартует.
Типичные ошибки и их решения:
- Ошибка: пустой экран или сессия сразу выходит. Причина — скрипт в Exec завершает работу или падает; сделайте логирование в stdout/файл.
- Ошибка: пункты не видны. Причина — неверные права или неверное имя файла; убедитесь, что файл имеет расширение .desktop и расположение /usr/share/xsessions.
Контрольный список и пошаговый playbook
Шаблон действий для администратора или продвинутого пользователя:
- Резервная копия: сделайте копию текущих .desktop-файлов.
- Создайте файл /usr/share/xsessions/my-session.desktop по шаблону выше.
- Убедитесь в наличии исполняемого скрипта и права на запуск (chmod +x).
- Добавьте TryExec, если хотите, чтобы GDM проверял доступность.
- Проверьте отображение в GDM после перезагрузки GDM (или системы).
- Если требуется — установите в /var/lib/AccountsService/users/имя пользователя параметр Session/XSession.
- Протестируйте вход и проверьте логи при ошибках.
Роли и действия:
- Администратор: создаёт/удаляет .desktop, меняет права и редактирует AccountsService.
- Пользователь: выбирает сеанс вручную в списке, проверяет работоспособность приложения Exec.
- Тестировщик: запускает команды из Exec вручную, проверяет логирование и восстановление.
Примеры тест-кейсов (критерии приёмки)
- TC1: После добавления my-session.desktop пункт появляется в списке GDM при следующем старте.
- TC2: При выборе seans пользователь входит в нужное окружение, процессы соответствуют указанному Exec.
- TC3: Если TryExec указан и отсутствует — пункт скрыт.
- TC4: Установка Session в AccountsService приводит к автоматическому выбору указанного сеанса при входе.
Критерии приёмки: пункт виден, стартует корректный процесс, нет падений сразу после запуска, пользователь может переключиться на другой сеанс вручную.
Шаблоны и сниппеты (cheat sheet)
Минимальный шаблон .desktop для копирования:
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Custom Session
Comment=Custom session started by script
Exec=/usr/local/bin/start-custom-session
TryExec=/usr/local/bin/start-custom-session
Icon=/usr/share/pixmaps/custom-session.pngКоманды для быстрой проверки:
# проверить список сеансов
ls -1 /usr/share/xsessions
# проверить права
stat -c '%A %U %G %n' /usr/share/xsessions/*.desktop
# просмотреть логи gdm
sudo journalctl -u gdm --no-pager | tail -n 200Совместимость, Wayland и Xorg
- GDM поддерживает как Xorg, так и Wayland. Сеанс определяется .desktop-файлом и соответствующими скриптами/командами. Некоторые старые DE ожидают Xorg и могут не работать под Wayland без дополнительных настроек.
- Чтобы переключиться между Xorg и Wayland, используйте пункт в экране входа GDM или настройку конфигурации (например, /etc/gdm/custom.conf для отключения Wayland).
Notes: укажите в Exec явный запуск Xorg-сеанса, если необходимо, или используйте соответствующие wrapper-скрипты.
Безопасность и приватность
- Редактирование системных файлов требует прав root: всегда храните резервную копию и не делайте файлы исполняемыми, если это не нужно.
- Проверяйте содержимое скриптов, которые будут выполняться при логине; не держите в Exec необработанные команды с переменными окружения, введёнными пользователем.
- Убедитесь, что права на /var/lib/AccountsService/users/* обеспечивают конфиденциальность: только root должен иметь запись в этих файлах.
Решение, когда этот подход не подходит (когда не сработает)
- Если сеанс управляется системой пакетов или модулем дисплейного менеджера, который динамически формирует список из других источников, простое добавление .desktop может не дать ожидаемого результата.
- На системах с сильно модифицированными политиками SELinux/AppArmor может потребоваться дополнительная настройка профилей.
Диаграмма принятия решения (Mermaid)
flowchart TD
A[Нужно добавить/изменить сеанс?] --> B{Файл .desktop есть?}
B -- Да --> C{Права и формат корректны?}
B -- Нет --> D[Создать /usr/share/xsessions/*.desktop]
C -- Нет --> E[Исправить права/формат]
C -- Да --> F[Проверить TryExec и Exec]
F --> G{Exec запускается вручную?}
G -- Да --> H[Установить Session в AccountsService при необходимости]
G -- Нет --> I[Отладка скрипта/логов]
H --> J[Перезагрузить и проверить GDM]
I --> J
D --> JКраткий глоссарий
- .desktop: файл с метаданными для запуска приложений/сеансов в Linux.
- Exec: команда в .desktop, которая выполняется при выборе пункта.
- TryExec: опциональная проверка наличия исполняемого файла.
- AccountsService: системный сервис, хранящий настройки учетных записей, включая выбранный сеанс.
Заключение
Знание расположения и структуры .desktop-файлов и умение редактировать записи AccountsService даёт полный контроль над списком сеансов в GDM: вы можете добавлять кастомные рабочие окружения, удалять ненужные пункты и задавать дефолтное окружение для пользователей. Всегда делайте резервные копии системных файлов, проверяйте права и используйте логирование для отладки проблем с запуском.

Изображения и скриншоты иллюстрируют места и примеры файлов, используемых в инструкции. Изображение: Sarah Dorweiler via Unsplash. Скриншоты и изменения: Ramces Red.
Похожие материалы
Временные номера: Burner, бесплатный SMS и Google Voice
Добавить пользователя на Ubuntu Server
Quick Actions в Finder на Mac через Shortcuts
Автоматический вход в Mac OS X
Как превратить Ubuntu‑ноутбук в точку доступа