Отображение графического интерфейса в ОС без графической оболочки
Возник вопрос как можно ли создать графический интерфейс для приложения в ОС без UI, например в Linux Ubuntu Server16.04 или чистом Linux ядре. У нас есть только терминал и все, и запуская приложение оно может отображать и получать данные только через терминал. Но есть ли путь для создания графического интерфейса в таком случае?
Конечно можно создать веб сервер и графическое отображение будет в "веб-морде", но как это сделать непосредственно на устройстве?
Как это реализуют в устройствах работающих под управлением Linux, например IP видеорегистратор и тому подобное
Ответы (2 шт):
Проще всего использовать какую-либо библиотеку для TUI или псевдографики. Если очень сойти с ума, то можно перевести устройство вывода в графический режим и рисовать на нём всё, что душе угодно, включая окна.
На 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 не надо.