Я написал свой собственный дисплейный менеджер (DM), чтобы входить в систему в стиле ретро-терминала. Ниже представлен обзор установки, настройки и использования.
Только ретро, только стиль. Мышь — это лишнее. Всё делается только командами. Всё создано для того, чтобы окунуться в атмосферу компьютеров из старых фильмов.
Проект заменяет стандартный SDDM (или другой DM) на кастомный экран входа, работающий внутри cool-retro-term с изогнутым экраном, эффектом свечения и минималистичным текстовым интерфейсом.
Склонируйте репозиторий в /opt/VeterDM:
sudo git clone https://github.com/VeterChul/VeterDM /opt/VeterDMМожно запустить быструю установку с помощью
cd /opt/VeterDM
chmod +x install.sh
./install.sh
Скрипт выполнит следующие действия:
- Скопирует все файлы проекта в
/opt/crt-greeter - Создаст симлинки в
/usr/local/binи/etc/greetd/config.toml - Настроит права доступа (setuid на
unix_chkpwd, группыgreeter) - Отключит старый дисплейный менеджер (например, SDDM)
ВАЖНО!
Скрипт не отключает предыдущий DM. Сделайте это сами, после чего добавте новый в автозапукс. Проверьте, что все рабоает, прежде чем менять DM.
sudo systemctl enable veter-dm.service
Установите необходимые системные пакеты:
sudo pacman -S --noconfirm greetd cage seatd python-prompt_toolkit mpg123
Создайте системного пользователя greeter и добавьте его в нужные группы:
sudo useradd -r -M -G video,seat greeter
Скрипт выполнит следующие действия:
- Скопирует все файлы проекта в
/opt/crt-greeter - Создаст симлинки в
/usr/local/binи/etc/greetd/config.toml - Настроит права доступа (setuid на
unix_chkpwd, группыgreeter) - Отключит старый дисплейный менеджер (например, SDDM)
ВАЖНО!
Скрипт не отключает предыдущий DM. Сделайте это сами, после чего добавте новый в автозапукс. Проверьте, что все рабоает, прежде чем менять DM.
sudo rm -f /etc/systemd/system/display-manager.service
sudo systemctl enable --now greetd.service
Запустите VeterDM
sudo systemctl start veter-dm.service
После установки перезагрузите систему:
reboot
Прогарамма подразумаевает 2 режима.
-
Воод пароля - при вводе команды она заменятеся на * и при попытке испознить запускает авторизацию, взяв введеный пароль.
-
Настройка - режим позволяет настроить параметры входа с помощью команд
По умолчанию стоит 1 режим, для удобного входа при запуске системы
Приглашение выводиться в следующем формате:
[time] user@DE mode>
- time - время сейчас
- user - пользователь, логин которого будет использован для входа
- DE - DE, которое будет использоваться для входа
- mode - p/c - режим
- p - password, режим ввода пароля
- с - command, режим ввода команд
Любой ввод кроме ":" будет использован, как попытка авторизации.
":" - переключает в режим ввода комманд
Команды, доступные в командном режиме:
help— показать справкуchangeuser <имя>— сменить пользователя для входа (автодополнение по Tab)changede <имя>— сменить окружение (автодополнение по Tab)exit— вернуться в режим ввода пароля
Пример сессии:
[14:05:23] veter@Hyprland p>
[14:05:23] veter@Hyprland c> changeuser alex
[14:05:25] alex@Hyprland c> changede plasma
[14:05:28] alex@Plasma c> exit
[14:05:32] alex@Plasma p> ********
После ввода правильного пароля запустится выбранное окружение (Plasma).
При загрузке systemd запускает greetd.service. Тот читает конфигурацию /etc/greetd/config.toml и запускает от пользователя greeter команду /usr/local/bin/start-greeter.sh. Скрипт устанавливает переменные окружения (HOME=/var/lib/crt-greeter, XDG_RUNTIME_DIR, WLR_RENDERER=gles2) и выполняет cage, внутри которого запускается cool-retro-term --fullscreen -e crt-greeter.py. Python-скрипт показывает приглашение, обрабатывает ввод, а при успешной аутентификации отправляет greetd команду start_session, после чего скрипт завершается, а greetd запускает пользовательскую сессию (Hyprland, Plasma и т.д.).
| Файл | Назначение |
|---|---|
/opt/crt-greeter/bin/crt-greeter.py |
Основной Python-скрипт (REPL, аутентификация) |
/opt/crt-greeter/bin/start-greeter.sh |
Скрипт-обёртка для запуска cage и cool-retro-term |
/opt/crt-greeter/bin/cool-retro-term-castom |
Кастомная сборка cool-retro-term без контекстного меню |
/etc/greetd/config.toml |
Конфигурация greetd (виртуальный терминал, пользователь, команда) |
/var/lib/crt-greeter/ |
Домашняя папка пользователя greeter (хранит состояние .config/greetd-state.json и возможные конфиги cool-retro-term) |
/usr/local/share/crt-greeter/cool-retro-term.conf |
(Опционально) Шаблон темы для cool-retro-term |
Проект распространяется под лицензией MIT. Исходный код cool-retro-term остаётся под лицензией GPLv3, его модификации сохраняют ту же лицензию.
- greetd — за минималистичный дисплейный менеджер
- cage — за идеальный киоск-композитор
- cool-retro-term — за атмосферу старого телевизора
- prompt_toolkit — за удобный REPL с автодополнением