Отображение графического интерфейса в ОС без графической оболочки

Возник вопрос как можно ли создать графический интерфейс для приложения в ОС без UI, например в Linux Ubuntu Server16.04 или чистом Linux ядре. У нас есть только терминал и все, и запуская приложение оно может отображать и получать данные только через терминал. Но есть ли путь для создания графического интерфейса в таком случае?

Конечно можно создать веб сервер и графическое отображение будет в "веб-морде", но как это сделать непосредственно на устройстве?

Как это реализуют в устройствах работающих под управлением Linux, например IP видеорегистратор и тому подобное


Ответы (2 шт):

Автор решения: Sergey Gornostaev

Проще всего использовать какую-либо библиотеку для TUI или псевдографики. Если очень сойти с ума, то можно перевести устройство вывода в графический режим и рисовать на нём всё, что душе угодно, включая окна.

→ Ссылка
Автор решения: eri

На IP видеорегистраторе есть X-сервер, на более дорогих и на более старых графика работает через framebuffer.

Для начала нового проекта в этой теме рекомендую QT https://doc.qt.io/qt-5/embedded-linux.html

Если в устройстве есть поддержка opengl, то запускай на EGLFS. Если нет видеоядра, то LinuxFB.

PySide2 и PyQt5 поддерживают эти режимы.

Заработает сразу

QT_QPA_PLATFORM=linuxfb python3 hellopyqt.py

С eglfs похоже надо скомпилировать отдельную версию Qt, это один-два дня... https://github.com/fhunleth/qt-rectangles#compiling-the-eglfs-version-of-qt-5

Системная версия у меня не видит экрана и зависает. возможно это изза драйверов nvidia, возможно поддержка платформы не собрана. 2 года назад делал - надо вспоминать и написать статью по этому случаю.

Если в программировании не силен, или надо вывести вэб приложение, то самый простой способ - это запустить хром в режиме киоска на голых иксах.

Вот сейчас попробовал на ASROCK D1800M. Debian 10 minimal.

apt install python3-pyqt5

QT_QPA_PLATFORM=eglfs python3 hellopyqt.py

И всё заработало. Компилить qt не надо.

→ Ссылка