Свой графический интерфейс linux

Создание графических приложений

Цилюрик О.И.

Настоящая статья является дополнением к книге «Инструменты Linux для Windows-программистов». Это не описание как делать GUI приложения в Linux, это описание того, как ПРИСТУПИТЬ к созданию графических приложений в Linux, и, хотелось бы надеяться что это прозвучит — чем принципиально программирование графики в Linux отличается от того же занятия в Windows. Главным требованием здесь была простота. Сделав простейший шаблон GUI прложения, дальше двигаться уже гораздо проще. Кроме того, все эти простейшие приёмы программирования показаны сравнительно: на основе основных графических технологий (библиотек), используемых в UNIX.

Все примеры к тексту вы можете скачать в виде общего архива.

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

  • реализация алгоритмов цифровой обработки сигналов (DSP): быстрые спектральные преобразования (FFT и другие), вэйвлеты, авторегрессионные разложения. ;
  • обработка аудио-потоков (пакеты: sox, ogg, speex и другие);
  • задачи IP-телефонии, SIP протокола, реализация разнообразных программных SoftSwitch;

Это сравнительный ряд автономных областей развития приведен как пример таких частных классов, одним из которых является и разработка GUI приложений. И как частный класс, со своей спецификой инструментов и средств, он не заслуживал бы отдельного упоминания, если бы не одно обстоятельство — принципиально отличающееся, диаметрально противоположное отношение к GUI в операционных системах семейства Windows и в UNIX (и в Linux, как его частный вид):

  • В Windows каждое приложение является принципиально GUI, неотъемлемым атрибутом любого приложения в Win32 API (низкого уровня) является главное окно приложения, уже само приложение «вяжется» вокруг его главного окна. Операционная система регистрирует классы окон и уже далее к ним соотносит конкретные приложения. Не может существовать приложения (взаимодействующего с пользователем, не системные службы) без окна, с этим были связаны и первоначальные сложности Windows в реализации консольных (терминальных) приложений.
  • в UNIX картина принципиально обратная: первичным является приложение, которое, по умолчанию, является консольным, текстовым, вся графическая система не является составной частью операционной системы, а является надстройкой пользовательского уровня. Чаще всего такой графической надстройкой является X11 (в реализации Xorg или X11R5), но и это не обязательно: практиковались и другие графические системы, хороший пример тому графические системы Qwindow, а затем Photon в операционной системе QNX, сосуществующие там одновременно с X11.
  • Показательно в этом смысле то, что вся оригинальная часть реализации X11 работает в пространстве пользователя, не в привилегированном режиме ядра (супервизора): работа с аппаратурой видеоадаптеров, устройствами ввода и другое. Отдельные реализации (видеосистемы NVIDIA или ATI Radeon) могут быть реализованы в режиме ядра (модули), но это а) сторонние относительно X11 разработки, и б) решение вопросов только производительности.

Из-за обозначенной специфики, разработка GUI приложений в UNIX (Linux) принципиально отличается:

  • вся работа GUI приложений ведётся через промежуточные слои (библиотеки) пользовательского уровня;
  • из-за того, что это ординарный пользовательский уровень, для разработчика предлагается широкий спектр альтернативных инструментов (библиотек), практически равнозначных, и конкурирующих друг с другом: Xlib, GTK+, Qt, wxWorks и многие другие.
  • базовый API работы с X11 предоставляет Xlib, все другие используют уже её функционал, как это показано на рисунке.

  • разработчик имеет возможность широкого выбора тех уровня и инструментов, которые он предполагает использовать, начиная от Xlib и выше (хотя уровень Xlib и слишком низок и работа с ним громоздкая).
Читайте также:  Windows 10 узнать версию сборки iso

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

Средства Xlib (архив Xlib.tgz ):

Средства GTK+ (архив GTK+.tgz ):

$ gcc gtk.c -o gtk `pkg-config —cflags —libs gtk+-2.0`

Средства Qt (архив Qt.tgz ):

Средства Qt предполагают написание приложений на языке С++, и имеют развитый инструментарий, в частности, построения сценария сборки приложения. Создадим в рабочем каталоге (изначально пустом) файл исходного кода приложения с произвольным именем:

Теперь проделываем последовательно:

Исходя из «подручных» файлов исходных кодов, у нас сгенерировался файл проекта и, далее, сценарий сборки ( Makefile ). Далее проделываем традиционную сборку, а заодно и посмотрим опции компиляции и сборки, которые нам сгенерировал проект:

g++ -c -pipe -Wall -W -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector —param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables

g++ -o Qt index.o -L/usr/lib/qt-3.3/lib -lqt-mt -lXext -lX11 -lm

index.cc index.o Makefile Qt Qt.pro

Средства wxWidgets (архив wxWidgets.tgz):

$ g++ simple.cc `wx-config —cxxflags` `wx-config —libs` -o simple

Средства GLUT (архив glut.tgz):

OpenGL Utility Toolkit, как и следует из названия, это средства использования технологии OpenGL в приложениях, которая требует определённой поддержки со стороны видео оборудования.

$ gcc glut.c -o glut -lX11 -lglut

То, что показано выше, это фактически не приложения, а скелеты приложений, но они позволяют: а) сравнить подобие всех GUI технологий в X11, и б) быть отправной точкой для сборки более содержательных GUI приложений. Показано только несколько GUI технологий, применяемых в X11 (большинство из них являются кросс-платформенными, и применимы в большинстве существующих операционных систем). Каждая из этих технологий, а названы только немногие из значительно большего числа, присутствующих в UNIX, могут быть полной альтернативой любой другой из этого же ряда, они взаимно заменимы, и даже взаимно дополняемые.

В данной статье были показаны образцы кода GUI приложений. Естественно, визуальные образы таких приложений строятся не путём непосредственного кодирования, а при использовании некоторых визуальных построителей, в составе тех или иных интегрированных средств разработки (IDE).

Источник

Графические оболочки Linux. Часть 1.

Графические оболочки Linux бывают разные, как их хозяева. Одни очень красивы, но ресурсоемкие. Другие непритязательны, но шустры и экономны.

LXDE (Lightweight X11 Desktop Environment) — это свободная среда рабочего стола для UNIX и других POSIX-совместимых систем, таких как Linux или BSD.

LXDE использует Openbox как оконный менеджер по умолчанию и стремится предложить быстрый и лёгкий рабочий стол, основанный на взаимно независимых компонентах.

Unity

Unity — свободная оболочка для среды рабочего стола GNOME, разрабатываемая компанией Canonical для операционной системы Ubuntu. Она позволяет более эффективно использовать маленькие экраны нетбуков, благодаря, например, вертикальной панели для переключения между запущенными программами. Изначально, в качестве оконного менеджера использовался Metacity, который затем был заменён на Compiz, в настоящее время используется Mutter. Начиная с Ubuntu 11.04, Canonical заменил стандартную оболочку GNOME на Unity. Все стандартные приложения по-прежнему были взяты из GNOME.
Налюбовавшись красотами, можно ускорить Unity.

Gnome

Достоинства Gnome (GNU Network Object Model Environment):

  • Gnome официальный Рабочий Стол фирм IBM, HP, Sun
  • Gnome официальный Рабочий Стол в государственных учереждениях штата Висконсинг в США, Северная область Испании — Экстремадура, Китай.
  • Поддерживает 114 языков
  • Легок в использование, легок в изучении
  • Распространяется под лицензией GPL
  • Дополнительные опции для людей с ограниченными возможностями
Читайте также:  Работа с образом диска iso windows 10

Можно изменить параметры GTK и добиться ускорения работы Gnome, оптимизировав его.

Equinox Desktop Environment

Equinox Desktop Environment (EDE) — свободная среда рабочего стола для UNIX-подобных операционных систем, отличается своей компактностью, быстротой, лёгкостью и простотой.

IRIX Interactive Desktop

IRIX Interactive Desktop (изначально Indigo Magic) — среда рабочего стола по умолчанию на рабочих станциях Silicon Graphics с операционной системой IRIX. IRIX Interactive Desktop использует Motif поверх X Window System. По умолчанию оконным менеджером является 4Dwm.

OpenWindows

OpenWindows — оконная среда для рабочих станций Sun Microsystems, которая поддерживала протоколы SunView, NeWS и X Window System. OpenWindows включалась в поздние версии операционной системы SunOS и Solaris до тех пор, пока не была заменена на CDE и GNOME 2.0 в Solaris 9. Оконная среда OpenWindows отвечала спецификации OPEN LOOK.

Ambient desktop

Ambient — свободная среда рабочего стола предназначенная для операционной системы MorphOS. Создана при помощи MUI. Отличительной особенностью является простота, быстродействие и удобство работы.

ROX Desktop

ROX Desktop — свободная среда рабочего стола для UNIX-совместимых операционных систем, которая базируется на файловом менеджере ROX-Filer. Название ROX происходит от RISC OS на X Window System.

  • Прекрасный современный рабочий стол
  • Рабочий стол, полностью прозрачный для работы в сети
  • Интегрированная система помощи, обеспечивающая удобный и согласованный доступ к системе помощи по использованию рабочего стола KDE и его приложений
  • Единообразный внешний вид и управление во всех приложениях KDE
  • Стандартизованные меню и панели инструментов, комбинации клавиш, цветовые схемы и так далее
  • Интернационализация: в KDE поддерживается более 40 языков
  • Централизованное единообразное конфигурирование рабочего стола в диалоговом режиме
  • Большее количество полезных приложений для KDE

KDE очень хорошо конфигурируется и некоторые параметры заметно ускоряют KDE.

Fluxbox

  • колесо мышки меняет Рабочие Столы (Workspace)
  • конфигурируемый TitleBar
  • IconBar (для свернутых окон)
  • поддержка KDE
  • свой интегрированный keygrabber
  • частичная поддержка GNOME
  • расширенная поддержка Window Manager Hints
  • конфигурируемые закладки Окон

Enlightenment

Enlightenment — оконный менеджер с открытым исходным кодом для X Window System. Название переводится как просветление и часто сокращается до одной буквы E.

  • Небольшой размер и высокая производительность;
  • Развитая система оформления и тем;
  • Поддержка анимации для тем, элементов пользовательского интерфейса, пиктограмм, рабочих столов и курсоров;
  • Модульная структура, возможна динамическая загрузка внешних модулей для расширения функциональности;
  • Расширенная поддержка виртуальных рабочих столов.

xd640

XD640 простой графический рабочий стол для X-Window. Создан быть легким и быстрым для медленных компьютеров (i486 66MHz 16MB) и маленьких экранов (640×480).

Metacity

  • Написан на GTK+ 2.x и отлично интегрирован с GNOME
  • поддержка тем

Amiwm

  • Для ценителей Amiga эмуляция работы в Amiga’s Workbench
  • Поддержка множества экранов

XFce является графической оболочкой, построенной на основе инструментального пакета GTK+, используемого в Gnome, но гораздо легче и предназначен для тех, кому нужен простой, эффективно работающий стол, который легко использовать и настраивать. Вот некоторые из достоинств XFce:

  • Простой, легкий в обращении рабочий стол
  • Полностью настраиваемый при помощи мыши, с интерфейсом «drag and drop»
  • Главная панель похожа на CDE, с меню, аплетами и возможностями по быстрому запуску приложений
  • Интегрированный оконный менеджер, менеджер файлов, управление звуком, модуль совместимости с Gnome и прочее
  • Стандартизованные меню и панели инструментов, комбинации клавиш, цветовые схемы и так далее
  • Возможность использования тем (так как использует GTK+)
  • Быстрый, легкий и эффективный: идеален для устаревших/слабых машин или машин с ограниченной памятью

WindowMaker

  • Поддержка национальных языков через I18N
  • Все изменения применяются сразу без перезагрузки Оконного Менеджера
  • Встроенная графическая утилита конфигурирования настроек

Athene

По образу этого рабочего стола была разработана система управления MS Windows.
Отличия:

  • Оптимизирован под процессоры Intel Pentium
  • Используется графическая технология SNAP от SciTech Software вместо X-Window
  • Графика быстрее на 17% чем MS Windows и на 25% быстрее X-Window
  • Обратная совместимость с X-Window приложениями
  • Быстрая загрузка — между 5 и 15 секундами на современном оборудовании
  • Редактируемый интерфейс, основанный на XML
  • Plug and Play Hardware Support
  • Локализация: полная поддержка Unicode
  • Гибкая независимая от ОС архитектура

Sawfish

  • Основан на скрипт-языке LISP
  • Темы и оформление используют GTK+

AfterStep

AfterStep — менеджер окон для X Window System, во время разработки которого была предусмотрена гибкость настройки рабочего стола, улучшенный внешний вид и эффективное использование системных ресурсов. Изначально AfterStep был вариантом FVWM, который воспроизводил графический интерфейс операционной системы NeXTSTEP, но с ходом разработки отдалился от своих корней. AfterStep включает в себя несколько модулей, таких как:
Pager — визуальный инструмент для управления и перемещения между несколькими рабочими столами
WinList — простая панель задач, отображающая активные приложения
Wharf — инструмент управления запуском приложений, панелью, содержащей наиболее часто используемые приложения и аплетами.

AfterStep поддерживает виртуальные экраны. Настройка внешнего вида производится при помощи набора текстовых файлов конфигурации.

fvwm, mwm, twm

F Virtual Window Manager — менеджер окон для X Window System с поддержкой виртуальных экранов. FVWM знаменит высоким качеством исходного кода, который разрабатывался и улучшался в течение многих лет, поэтому многие проекты основаны на нём, среди которых AfterStep, Xfce, Enlightenment и множество других.

XPde — проект, цель которого создание похожего внешне на Windows XP рабочего стола. XPde (XP Desktop Environment) — свободная среда рабочего стола, напоминающая по виду Windows XP. Построена на основе кросс-платформенного инструментария разработки пользовательского интерфейса Qt. В состав входит оконный менеджер XPwm. По замыслу разработчиков, их оконный менеджер должен облегчить пользователям Windows переход на Linux. XPde написан на Kylix.

Metisse

Metisse это основанная на X оконная система, разработанная с двумя целями. Во-первых, она должна облегчить разработку и внедрение инновационных технологий управления окнами для исследователей HCI (HCI — интерфейс «человек-компьютер»). Во-вторых, она должна соответствовать существующим стандартам и быть достаточно эффективной для ежедневного использования, делая ее подходящей платформой для оценки предложенных технологий. Metisse не фокусируется на особенных видах взаимодействия (например 3D) и не должна рассматриваться как предложение нового рабочего стола. Это в большей степени инструмент для создания новых типов окружения рабочих столов.

IceWM

IceWM — менеджер окон для X Window System в Unix-подобных операционных системах. Разработка IceWM началась с нуля в 1997-ом году, проект написан целиком на C++ и выпущен на условиях лицензии GNU LGPL. Цель проекта — создание рабочей среды с удобным и быстрым интуитивным интерфейсом с широкими возможностями для настройки пользователем. В частности, все функции графического интерфейса доступны при использовании только клавиатуры. В то же время в число задач входила максимальная лёгкость IceWM в плане потребляемых ресурсов компьютера — памяти и процессора.

Common Desktop Environment (CDE) — проприетарная среда рабочего стола, основанная на Motif, для UNIX, HP OpenVMS. CDE разработана в The Open Group совместно с Hewlett-Packard, IBM, Novell и Sun Microsystems и основан на VUE (Visual User Environment) от HP. Примерно до 2000 года CDE была промышленным стандартом для UNIX систем, но свободные оболочки для рабочего стола, такие как KDE и GNOME, быстро становились всё более удобными и стали стандартом для многих Linux платформ, которые на этот период уже имели больше пользователей, чем большинство UNIX систем.

Источник

Читайте также:  Драйвера для видеокарты amd radeon hd 6670 для windows 10
Оцените статью