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

Как добавить, изменить или удалить сеансы в GDM

6 min read Linux Обновлено 02 Dec 2025
GDM: добавить, изменить и удалить сеансы
GDM: добавить, изменить и удалить сеансы

Оглавление

  • xsessions — откуда GDM берет список
  • Изменение пункта в списке сеансов
  • Создание нового пункта (.desktop-шаблон)
  • Установка сеанса по умолчанию для пользователя
  • Проверка, отладка и типичные ошибки
  • Контрольный список и пошаговый playbook
  • Безопасность, совместимость Xorg/Wayland и примечания по локали
  • Краткий глоссарий и итог

xsessions — откуда GDM берет список

Список сеансов в GDM формируется по файлам с расширением .desktop в системной директории /usr/share/xsessions. Каждый файл описывает один пункт меню “Сеанс” в GDM. Чтобы добавить, изменить или удалить пункт, нужно работать с этими файлами. Так как это системная папка, требуются привилегии root.

Снимок экрана папки xsessions в файловом менеджере GNOME Nautilus.

Файл типа .desktop содержит набор полей (Name, Exec, Comment и т. п.), которые управляют тем, как элемент отображается и что запускается при выборе. Переименование или удаление .desktop-файла удалит элемент из списка GDM.

Important: не редактируйте .desktop-файлы напрямую в пользовательской сессии без резервной копии — используйте sudo или редактор с поддержкой привилегий.

Изменение пункта в списке сеансов

  1. Откройте терминал.
  2. Просмотрите содержимое папки:
ls -la /usr/share/xsessions
  1. Отредактируйте выбранный файл .desktop от имени root. Рекомендуется использовать безопасный вариант, например sudoedit, или GUI-редактор через sudo с флагом H:
sudo -H gedit /usr/share/xsessions/имя-сеанса.desktop
# или
sudoedit /usr/share/xsessions/имя-сеанса.desktop
  1. Внесите изменения и сохраните файл.

Снимок экрана gedit, запущенного с правами суперпользователя, показывающий содержимое папки xsessions.

Совет: вместо 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: путь к иконке (необязательно).

Скриншот примера .desktop-файла с пользовательским сеансом, открытого в gedit.

После сохранения новый пункт появится в списке сеансов при следующем старте GDM.

Notes: если пункт не появился, проверьте права и формат файла (первая строка [Desktop Entry] обязательно, кодировка без BOM).

Установка сеанса по умолчанию для пользователя

Для того чтобы назначить конкретный сеанс по умолчанию для пользователя, нужно отредактировать файл пользователя в /var/lib/AccountsService/users/. Процесс такой:

  1. Откройте терминал и перейдите в папку AccountsService:
cd /var/lib/AccountsService/
ls -la users
  1. Получите права root (один из безопасных способов):
sudo -s
# или
sudo -i
  1. Отредактируйте файл с именем пользователя (например, для пользователя ramces):
cd /var/lib/AccountsService/users
sudo -H gedit ramces
# или
sudoedit /var/lib/AccountsService/users/ramces
  1. В файле найдите или добавьте блок, содержащий строку Session= и параметр XSession=. В Session и XSession укажите имя .desktop (без расширения), которое вы хотите загрузить. Пример для XFCE:
[User]
Session=xfce
XSession=xfce
Icon=/home/ramces/.face
SystemAccount=false

[InputSource0]
xkb=us
  1. Сохраните файл и перезагрузите компьютер:
reboot

После перезагрузки GDM должен автоматически выбирать указанный сеанс при входе.

Important: имена Session/XSession должны совпадать с именем .desktop-файла (имя файла без “.desktop”).

Терминал, показывающий содержимое папки AccountsService.

Проверка, отладка и типичные ошибки

Что проверить, если сеанс не появляется или не загружается:

  • Права доступа: файл /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

Шаблон действий для администратора или продвинутого пользователя:

  1. Резервная копия: сделайте копию текущих .desktop-файлов.
  2. Создайте файл /usr/share/xsessions/my-session.desktop по шаблону выше.
  3. Убедитесь в наличии исполняемого скрипта и права на запуск (chmod +x).
  4. Добавьте TryExec, если хотите, чтобы GDM проверял доступность.
  5. Проверьте отображение в GDM после перезагрузки GDM (или системы).
  6. Если требуется — установите в /var/lib/AccountsService/users/имя пользователя параметр Session/XSession.
  7. Протестируйте вход и проверьте логи при ошибках.

Роли и действия:

  • Администратор: создаёт/удаляет .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.

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

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

Временные номера: Burner, бесплатный SMS и Google Voice
Конфиденциальность

Временные номера: Burner, бесплатный SMS и Google Voice

Добавить пользователя на Ubuntu Server
Системное администрирование

Добавить пользователя на Ubuntu Server

Quick Actions в Finder на Mac через Shortcuts
macOS

Quick Actions в Finder на Mac через Shortcuts

Автоматический вход в Mac OS X
macOS

Автоматический вход в Mac OS X

Как превратить Ubuntu‑ноутбук в точку доступа
Сеть

Как превратить Ubuntu‑ноутбук в точку доступа

Пропуск рекламы в Windows 7 Media Center
Руководство

Пропуск рекламы в Windows 7 Media Center