Skip to content

VeterChul/VeterDM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Приветствую в моём DM

Кратко

Я написал свой собственный дисплейный менеджер (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. Воод пароля - при вводе команды она заменятеся на * и при попытке испознить запускает авторизацию, взяв введеный пароль.

  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 с автодополнением

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors