Можете ли вы установить усеченную версию Linux, которая запускает только одно приложение с полным окном?

Попытка взять мой Pi Zero W и встроить его в один из моих проекторов для создания информационного устройства. Другими словами, мне не нужно или даже нужно накладные расходы на полный рабочий стол с управлением окон и т. Д.

Я прочитал все, что мне нужно, это Linux, на котором запущен сервер X11, тогда мое приложение - клиент - просто поговорит об этом. Я также слышал, что мое приложение может действовать как клиент сервера X11 и .

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

Итак, что мне после этого возможно? Линейная установка lin-bones с сетью, но нет интерфейса, кроме одного окна приложения? Такие вещи, как беспроводной, можно обрабатывать через файлы конфигурации и т. Д. Каков наилучший способ приблизиться к этому?

4 голоса | спросил MarqueIV 9 42017vEurope/Moscow11bEurope/MoscowThu, 09 Nov 2017 01:07:45 +0300 2017, 01:07:45

3 ответа


4

Я бы начал с официального Raspbian-Lite , поскольку он уже в значительной степени похож на урезанный по мере необходимости, и работает из коробки с оборудованием.

По умолчанию Вы получаете бесплатно функциональный, легкий вес (время, деньги, свобода)

  1. Kernel
  2. Coreutils (Shell и базовые инструменты оболочки)
  3. Сетевые инструменты (wlan и ssh)
  4. Системные структуры, такие как python ruby perl
  

«Установка lin-bones linux с сетью, но нет интерфейса, кроме приложения с одним окном? Такие вещи, как беспроводная связь, могут обрабатываться через файлы конфигурации и т. д. Каков наилучший способ приблизиться к этому?»

Проверьте! ( Примечание. Конфигурация уже выполняется через файлы, инструменты GUI - это просто интерфейсы для редактирования файлов конфигурации и периодического просмотра файлов состояния для отслеживания динамической информации )

Единственное, что вы не получаете, - это графический интерфейс любого типа. Подробнее об этом ниже.


Параметры графического интерфейса пользователя

Когда вы пишете приложение GUI, есть общие элементы, которые вы обычно должны иметь. Например.

  • Кнопка (события и обработка мыши)
  • Окно /Subwindow (перекрывающиеся буферы)
  • Панель инструментов (контекстная зависимость видимости)
  • Текстовое поле (
  • Изображение

При выборе структуры существует компромисс между функциональными возможностями, которые выполняются для вас, и функциями, которые вы должны изобретать.

  

Примечание. Расчет пикселей для рисования для кнопки прост, но для создания системы, которая может обнаруживать и реагировать на все виды произвольного ввода (щелчок, двойной щелчок, перетаскивание, прокрутка, прокрутка и т. д.) на самом деле очень очень трудно (читайте: утомительный и подверженный ошибкам).

Далее следует краткое описание нескольких вариантов отображения bare-bones.

1. Framebuffer

Сырой графический вывод на вашем экране фактически сам по себе является файлом. Этот файл существует, даже если X не установлен.

/dev/fb0

Описание того, что эта вещь есть, можно найти в документации ядра .

Однако для нас достаточно представить это как «растровое изображение» вашего экрана. Со многими оговорками, поскольку форматирование данных зависит от платформы.

Ваше приложение (написано в c, python, java, что угодно). Откроет этот файл и напишет ( Platform Dependent! ) байты для отображения и изменения изображения на дисплее. Он также должен был бы захватить исходный ввод с мыши и клавиатуры и интерпретировать это как нажатия кнопок и распределять события (вызовы) на соответствующие функции.

Например

cat /dev/urandom >/dev/fb0

Сделайте красочные пиксели случайным образом заполнят ваш экран

2. X Windowing System (X11 aka Xorg)

Самый позорный пользователь фреймбуфера. В ореховой оболочке Это обеспечивает

  1. Windows (возможно, перекрытие независимых регионов)
  2. Вход (мышь и клавиатура)
  3. События

Большинство людей будут использовать библиотеку графического интерфейса более высокого уровня, например GTK Qt или wxWidgets для создания полезных объектов, таких как кнопки и панели инструментов, с использованием основных функций, предоставляемыхX. Эти библиотеки также значительно упрощают создание «обработчиков событий» для таких вещей, как кнопки и нажатия клавиш.

Вы также можете напрямую рисовать графику, используя OpenGL

Вам не нужно иметь полнофункциональный GUI Desktop Running или даже Installed для использования X для запуска графического приложения

Ваше приложение (опять же, python, c++, что бы ни было) будет использовать GUI Tools вместе с Xlib (API для Xorg) для рисования виджетов, окон и т. д. на экран.

  

ПРИМЕЧАНИЕ. При запуске полноэкранного приложения с настольной средой в любом случае практически нет других инструментов графического интерфейса, имитирующих это использование.

3. Текстовый пользовательский интерфейс (nCURSES!)

Текстовые пользовательские интерфейсы - простая альтернатива всем перечисленным выше, и это может быть классное и элегантное решение для вашей концепции «Информационное устройство».

Это приложение использует оболочку терминала напрямую для создания визуальных дисплеев с символами ASCII. Библиотека ncurses поддерживается на многих языках и предоставляет GUI-подобные концепции окон, буферов, кнопок, вкладок, ввода и т. Д. В консольная среда

Фактически вы можете создать очень простой интерфейс на основе меню, используя только сценарий оболочки со встроенной утилитой linux

dialog

, который создает тип интерфейса, показанный в левом верхнем углу следующего изображения.

 введите описание изображения здесь>> </a> </p></body></html>

ответил crasic 9 42017vEurope/Moscow11bEurope/MoscowThu, 09 Nov 2017 07:51:06 +0300 2017, 07:51:06
2

Я сделал что-то подобное здесь . Ключевой момент в ответе на ваш третий абзац: X реализован очень иначе, чем Windows или MacOS. Это не «все или ничего», поэтому вам не нужно загружать «полный рабочий стол», если он вам не нужен. Существует несколько слоев, которые можно упростить:

  1. Система окон X. Если вы запустите X без дополнительных слоев, вы получите серый фон и ничего больше, без возможности запуска программ в графическом интерфейсе. Вы можете писать сценарии запуска для запуска программ. Как правило, вы запускаете терминал (например, xterm), который можно использовать для запуска дополнительных программ. У вас нет хороших заголовков или кнопок для управления окнами.
  2. Менеджер окон. Это слой, который добавляет цветной рабочий стол, заголовки и кнопки для управления окнами. Вы можете, но не обязательно, добавлять файловые менеджеры, запускать бары и другие тонкости. Все выглядит лучше, но между программами мало интеграции.
  3. Настольная среда. Они объединяют все вместе, предоставляя такие функции, как интегрированный буфер обмена, управление звуком и другие функции, которые больше походят на потребительский «рабочий стол».

Я думаю, что вам нужен слой 2. Менеджер окон, но ничего больше, поэтому вы можете запустить программу GUI. Доступны очень легкие оконные менеджеры. Я выбрал OpenBox для проекта в видео.

Конечно, вы можете полностью отказаться от графического интерфейса и создать его с помощью текстового интерфейса, но если вы хотите воспользоваться веб-технологиями или использовать инструменты GUI, вам, скорее всего, понадобится минимальный GUI.

Википедия имеет хорошее резюме, если вы хотите подробнее .

ответил bobstro 9 42017vEurope/Moscow11bEurope/MoscowThu, 09 Nov 2017 17:10:47 +0300 2017, 17:10:47
0

Я был в очень похожем случае и решил использовать pygame, привязку python к SDL, графическую библиотеку.

Хорошие баллы:
Поскольку SDL не полагается на X11, pygame можно запускать с консоли и показывает хорошее полноэкранное графическое приложение, сильно настраиваемое (иначе: вы начинаете с черного экрана, а затем рисуете то, что хотите на нем)
Pygame довольно хорошо документально и , довольно просто, предлагает все базовые функции, которые вам понадобятся для управления взаимодействиями пользователей и интерфейса в одной библиотеке.

Плохие очки:
Pygame не хватает содержимого графического интерфейса: вам нужно рисовать все кнопки, значки, коробки, как файлы изображений. (Вы все еще можете отображать геометрические фигуры и тексты для экранирования только с кодом.)
Некоторым пользовательским вводам необходимо вручную управлять: к примеру, не ожидайте использования текстового поля «из коробки»: вы сможете читать только ручное нажатие клавиатуры и редактировать правую кнопку на правой странице, затем обновите свой экран при каждом нажатии! Не беспокойтесь слишком много об этом, это не драматично, просто немного раздражает.

Если вы хотите попробовать pygame, взгляните на это программное обеспечение от adafruit, это очень хорошее вдохновение при создании графического интерфейса: Класс Button и Icon очень хорошо написан, управление страницей также очень приятное.

Альтернативы
Существуют и другие инструменты для написания графических интерфейсов, работающих без X11, и даже оптимизированных GPU: dispmanx и openMax. С ними гораздо труднее работать (управление памятью gpu - боль), и ваш клиент должен быть написан на C /C ++. Хуже того, в этих библиотеках не хватает тонны инструментов, которые может обеспечить pygame (без управления вводами пользователей ..)

ответил Technico.top 9 42017vEurope/Moscow11bEurope/MoscowThu, 09 Nov 2017 03:42:54 +0300 2017, 03:42:54

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132