Display manager (Русский)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Состояние перевода: На этой странице представлен перевод статьи Display manager. Дата последней синхронизации: 15 сентября 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Экранный менеджер или менеджер входа — графический экран, который отображается в конце процесса загрузки вместо стандартного приглашения командной строки. Экранный менеджер представляет собой экран ввода имени пользователя и пароля для входа в систему. Существует множество экранных менеджеров, как и окружений рабочего стола. Практически все экранные менеджеры можно настраивать, изменяя их стиль и поведение.

Список экранных менеджеров

Консольные

  • CDM — ультра-минималистичный, но полнофункциональный менеджер входа, написанный на Bash.
https://github.com/evertiro/cdm || cdmAUR
  • Console TDM — расширение для xinit, также написанное на Bash.
https://github.com/dopsi/console-tdm || console-tdmAUR
  • nodm — минималистичный экранный менеджер для автоматического входа.
https://github.com/spanezz/nodm || nodm
  • Ly — легковесный TUI (ncurses-like) экспериментальный менеджер входа.
https://github.com/nullgemm/ly || lyAUR
  • tbsm — лаунчер сессий или приложений, написанный на чистом bash. Поддерживает сеансы X и Wayland.
https://loh-tar.github.io/tbsm/ || tbsmAUR
  • emptty — совершенно простой менеджер CLI на TTY с поддержкой X и Wayland.
https://github.com/tvrzna/emptty/ || emptty-gitAUR
  • udm — микроскопический менеджер (как cdm, tdm и т.д.) с поддержкой Wayland и нескольких дисплеев/сеансов. Написан на POSIX shell без зависимостей и имеет всего ~38 SLOC.
|| udmAUR[ссылка недействительна: package not found]

Графические

https://github.com/Obsidian-StudiosInc/entrance || entrance-gitAUR
  • GDM — экранный менеджер GNOME.
https://wiki.gnome.org/Projects/GDM || gdm
  • LightDM — независимый от среды рабочего стола экранный менеджер, можно подключать различные фронтенды с любыми тулкитами.
https://github.com/canonical/lightdm || lightdm
  • LXDM — экранный менеджер LXDE. Может быть использован отдельно от среды рабочего стола LXDE.
https://sourceforge.net/projects/lxdm/ || lxdm
  • SDDM — экранный менеджер, основанный на QML. Продолжение KDE4 kdm, рекомендуется для Plasma 5 и LXQt.
https://github.com/sddm/sddm || sddm
  • XDM — экранный менеджер с поддержкой XDMCP.
xdm(8) || xorg-xdm

Демоны входа

  • greetd — Минимальный, гибкий и независимый демон входа в систему, который поддерживает как консольные, так и графические интерфейсы.
https://git.sr.ht/~kennylevinsen/greetd || greetdAUR

Запуск экранного менеджера

Чтобы включить экран входа, запустите соответствующую службу. Например для SDDM включите sddm.service.

Это должно работать без дополнительных настроек. Если нет, возможно, вам придется удалить символическую ссылку default.target, чтобы указать на graphical.target файл по умолчанию. Смотрите Изменение цели загрузки по умолчанию.

После включения SDDM в /etc/systemd/system/ должен быть установлен symlink display-manager.service. Возможно, вам придется использовать --force для переопределения старых символических ссылок.

$ file /etc/systemd/system/display-manager.service
/etc/systemd/system/display-manager.service: symbolic link to /usr/lib/systemd/system/sddm.service

Использование systemd-logind

Чтобы иметь возможность проверить статус вашей сессии, вы можете использовать loginctl. Все действия polkit, такие, как перевод системы в ждущий режим или монтирование внешних устройств будут работать "из коробки".

$ loginctl show-session $XDG_SESSION_ID

Настройка сеанса

Большинство экранных менеджеров получают список доступных сеансов из каталога /usr/share/xsessions/. Он содержит стандартные файлы .desktop для каждого экранного/оконного менеджера.

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

[Desktop Entry]
Name=Openbox
Comment=Log in using the Openbox window manager (without a session manager)
Exec=/usr/bin/openbox-session
TryExec=/usr/bin/openbox-session
Icon=openbox.png
Type=Application

Использование ~/.xinitrc как сеанс

Установите xinit-xsessionAUR для запуска xinitrc в качестве сеанса. Просто установите xinitrc в качестве сеанса в настройках вашего экранного менеджера и убедитесь, что файл ~/.xinitrc является исполняемым.

Запуск приложений без оконного менеджера

Вы также можете запускать приложения без какого-либо оформления. Например, для запуска google-chromeAUR создайте файл web-browser.desktop в /usr/share/xsessions/ :

[Desktop Entry]
Name=Web Browser
Comment=Use a web browser as your session
Exec=/usr/bin/google-chrome --auto-launch-at-startup
TryExec=/usr/bin/google-chrome --auto-launch-at-startup
Icon=google-chrome
Type=Application

При этом, сразу после входа будет запущено приложение, указанное в опции Exec. Когда вы закроете приложение, вы будете возвращены к экранному менеджеру (точно так же, как если бы вы вышли из среды рабочего стола/оконного менеджера).

Важно помнить, что большинство графических приложений не рассчитаны на запуск в таком режиме и вы можете столкнуться с определенными ограничениями в их работе (например, диалоговые окна будут отображены без рамки и вы не сможете их перемещать по экрану; вы не сможете управлять никаким окном обычным способом — для установки размеров и положения вам, вероятно, придется вносить изменения в файлы настроек приложения).

Смотрите также xinitrc (Русский)#Запуск приложений без оконного менеджера.

Советы и рекомендации

Автозапуск

Большинство экранных менеджеров используют /etc/xprofile, ~/.xprofile и /etc/X11/xinit/xinitrc.d/ при входе. Для получения подробной информации, см. xprofile.

Установка языка

Для экранных менеджеров, которые используют AccountsService, язык для пользовательского сеанса может быть установлен путем редактирования:

/var/lib/AccountsService/users/$USER
[User]
Language=your_locale

где your_locale — значение вида ru_RU.UTF-8.

В качестве альтернативы можно использовать D-Bus:

busctl call org.freedesktop.Accounts /org/freedesktop/Accounts/User$UID org.freedesktop.Accounts.User SetLanguage s your_locale

Выйдите из системы, а затем снова войдите, чтобы изменения вступили в силу.