kmscon 10.0

good-penguin.png

Состоялся выпуск kmscon 10.0 — эмулятора терминала, который создан в качестве замены ядерной консоли. Вместо подсистемы ядра vt kmscon использует KMS и реализует необходимую функциональность в юзерспейсе.

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

Возможности kmscon:

  • возможность настройки всех опций с помощью аргументов командной строки или файла конфигурации;
  • возможность задавать устройство для вывода. Поддерживаются устройства fbdev и DRM;
  • возможность задавать видеорежим (разрешение и ориентацию экрана);
  • возможность настроить кастомную цветовую схему;
  • возможность настроить аппаратное ускорение графики при помощи GLESv2;
  • возможность автоматического отключения дисплея по таймауту в случае бездействия;
  • поддержка переключаемых по хоткею сессий (аналог VT-сессий), максимальное число сессий по умолчанию — 50;
  • рендеринг современных шрифтов с поддержкой хинтинга, субпиксельного сглаживания и всех остальных фич, предоставляемых библиотеками freetype и pango. Также поддерживаются GNU Unifont и стандартные шрифты 8×16. В полной мере реализован Unicode;
  • возможность задавать размеры шрифтов, в том числе по хоткею во время выполнения, благодаря чему решается проблема их отображения на HiDPI-дисплеях;
  • интеграция с libxkbcommon, в том числе возможность задать модель и раскладку клавиатуры;
  • поддержка мыши. Можно использовать как софтверный, так и аппаратный курсор;
  • поддержка прокрутки текста (scrollback buffer), как по хоткеям так и с помощью колесика мыши. При использовании мыши можно настроить естественную прокрутку.

Как это работает

kmscon запускается при старте системы как обычный сервис при помощи вашей системы инициализации.

Если kmscon видит VT-устройства в системе, то он находит свободное и занимает его. Благодаря этому на обычных системах (с задействованным VT) можно переключаться на kmscon как на обычную ядерную консоль по хоткею Ctrl+Alt+F.

Если на VT-устройстве, которое вы хотите выделить для kmscon, уже работает какой-то сервис, например getty, то этот сервис нужно остановить. Это настраивается в зависимости от системы, например в случае с Busybox надо отредактировать /etc/inittab.

Если подсистема VT не задействована (то есть в конфиге ядра указано CONFIG_VT=n. Возможность чего собственно и является целью разработки kmscon), то kmscon просто занимает указанное в конфиге устройство вывода. После чего нужно пользоваться его внутренними сессиями.

GUI-приложения, такие как X-сервер, должны запускаться из сессии kmscon при помощи специальной программы kmscon-launch-gui. Это необходимо для правильной передачи владения ресурсами, в частности устройством вывода.

Изменения в версии 10.0

  • добавлена генерация специфичного для kmscon файла с базой terminfo. Переменную окружения TERM=kmscon можно задать как в шелле, так и с помощью CLI-аргумента или опции конфига.
  • поддержка шрифтов с переменной шириной, а не только моноширинных.
  • поддержка получение ресурсов (таких как DRM-устройство) через libseat. Это в перспективе позволит запускать kmscon в пользовательской сессии, а не только от рута, как сейчас.

>>> release notes

©  Linux.org.ru