Как написать виджет для 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 разработки, и б) решение вопросов только производительности.
Читайте также:  Watchdog для windows 10

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

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

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

Из-за названной специфики 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 систему потрясающей с Conky

Вы когда-нибудь смотрели на свой рабочий стол и думали: «Я могу определенно сделать это лучше»? Может быть, вы устали от езды на велосипеде через разные обои

Читайте также:  Сервер обновлений для linux

попытаться улучшить эстетику. Как насчет аккуратного способа внимательно следить за температурой процессора, использованием сети и использованием жесткого диска? В основе этого прекрасного рабочего стола лежит Conky.

Что такое Конки?

Conky — это, по сути, инструмент для мониторинга системы. Он имеет возможность контролировать и сообщать о множестве системных ресурсов. Статистика процессора, температура, использование памяти и многие другие находятся в поле зрения Конки. Великолепные темы и виджеты также позволяют создавать скины на вашем рабочем столе.

В восторге? Давайте прыгнем прямо и посмотрим.

Установка Конки

В вашем распоряжении как командная строка, так и методы графического интерфейса, однако хорошо знать, как все это складывается под капотом. Взломайте окно терминала и наберите:

На экране вы должны увидеть голую версию Conky. Несмотря на то, что это отвратительно, мы видим то, что является ядром приложения, легким инструментом мониторинга. Прямо сейчас Конки получает свои настройки от /etc/conky/conky.config файл. Он делает это по умолчанию, когда нет тем. Как только мы начнем делать скиннинг, он начнет полагаться на файл, который будет управлять всеми настройками. Файл, за которым он следит, находится в домашнем каталоге, а именно

/ .Conkyrc что мы доберемся за секунду.

На данный момент: вперед, к шкуре!

Темы и Виджеты

Прежде чем мы перейдем к мониторингу ресурсов, давайте настроим простой виджет, чтобы больше узнать о том, как все это работает. Загрузите эти красивые часы и возвращайтесь к своему терминалу. (Если Conky все еще работает, вы можете убить его, нажав Ctrl + C.)

Как только файл загрузится, введите:

То, что мы видим в центре сцены, — это удивительные, но при этом упрощенные часы, в которых текущее время представлено словами.

Но что, если вы не хотите, чтобы этот удар по виджету ударил по центру вашего рабочего стола?

/ .Conkyrc файл сейчас в игре. Сначала есть некоторая номенклатура для выравнивания, к которой нужно привыкнуть:

  • Слева вверху: tl
  • Для верхнего правого: tr
  • Верхняя середина: тм
  • Внизу слева: bl
  • Внизу справа: br
  • Нижняя середина: БМ
  • Для середины слева: мл
  • Средняя середина: мм
  • В центре справа: г-н

Вы даже можете настроить интервал вплоть до пикселя, отрегулировав такие значения, как gap_x который расположен горизонтально; gap_y позаботится о вертикальном интервале. Имея это в виду, давайте переместим виджет в среднюю правую часть рабочего стола. Откройте другое окно терминала и введите:

Как только вы нашли выравнивание настройте его значение на Мистер который, как мы знаем, находится посередине справа. Сохраните и закройте файл, нажав Ctrl + X с последующим Y. И вот так наши визуально привлекательные часы сместились в среднюю правую часть рабочего стола.

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

Больше точки и нажмите человека? Не бойся, менеджер Conky здесь. Введите следующее:

Читайте также:  Canon lbp6200d драйвер windows 10 x64

Одна заметка, тройник команда просто блестящая

, Он может скопировать стандартный ввод в стандартный вывод и даже сделать копию в один или несколько файлов. Это решает проблему, когда нужно добавить в привилегированный файл. Например, попытка выполнить следующее просто не будет работать:

Это связано с тем, что первая команда (echo) получает привилегии sudo, а вторая — нет.

Conky Manager представляет гораздо более наглядный способ работы. Вы можете запустить его, либо найдя его под приложениями, либо набрав носатый-менеджер в терминале или найти его под приложениями.

Быстро взглянуть на интерфейс, есть несколько очень полезных функций. Мы можем импортировать пакеты тем, точно настраивать текущие темы, а также некоторые основные элементы управления виджетом.

Установка темы

Мы можем внедрить темы, скачав архив и распаковав

Если вы хотите начать, вы можете взять коллекцию тем Aurora и распаковать ее в вышеупомянутую папку. Conky Manager просто необходимо перезагрузить, и он получит все новое в этом каталоге. Помните, что файлы или папки, которым предшествует точка (.), Являются скрытыми файлами. Для переключения между скрытыми файлами нажмите Ctrl + H или перейдите к Вид> Показать скрытые файлы.

Теперь, когда Conky Manager снова открыт, он должен быть полон тем и виджетов, по которым вы можете пройти по цифровому подиуму. Простое нажатие на тему загрузит ее обои и связанные виджеты. nightdrive один из приведенных ниже отображает цифровые часы, погоду, различные системные ресурсы и даже извлекает обложку и название текущей песни, воспроизводимой в клиенте Spotify.

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

Редактирование темы

Какие? Больше настроек? Да! Пока тема выбрана, нажмите значок редактирования. Теперь вам предоставляется возможность сменить обои и посмотреть, какие виджеты применимы к этой теме.

На предмет связанного виджета, вы говорите, что хотите 150 пикселей вправо? На подходе. Перейдите на вкладку виджетов, выделите проверенный виджет и нажмите «Изменить». Здесь вы можете настроить его местоположение, размер, прозрачность и время или сеть (для виджетов, которые имеют эту функцию). Измените значения, которые вы хотите, нажмите Применять, и смотреть, как твое творение оживает.

У Conky может быть имя, которое может любить только мама, и, конечно, будут некоторые виджеты, которые не будут выглядеть круто в вашей системе, потому что они отображают температуру GPU, а у вас еще нет GPU

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

Вы счастливы смотреть на одни и те же обои каждый день? Ваш компьютер — не более чем инструмент? Что вы используете для настройки вашего рабочего стола? Какие темы Conky вы используете? Поделитесь с нами в комментариях ниже!

Источник

Оцените статью