Как написать виджет для linux

Обновлено: 06.07.2024

Настоящая статья является дополнением к книге «Инструменты 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 и слишком низок и работа с ним громоздкая).

Из-за названной специфики 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):

simple.cc :

$ 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, так это тем, что в нём можно всё настроить под себя любимого. Чего не позволяют закрытые системы Window или MacOS X.
В этой статье я хочу поделиться с вами, как можно создать свой виджет Conky на рабочий стол.
Как известно, во многих дистрибутивах основанных на Ubuntu: Linux Mint; Kubuntu и прочих, предустановлены различные виджеты рабочего стола, в которых отображаются часы, данные о компьютере и системе, погода и пр. Но в Ubuntu таких виджетов нет. Хотя кто-то может возразить, что есть в репозиториях Ubuntu программа под названием - Screenlets и в ней всё это есть. Да, действительно есть, но все скринлеты или виджеты в этой программе устаревшие и довольно неприглядно выглядят на рабочем столе. Поэтому я решил создать свой компактный виджет, который бы отображал всё что мне нужно и в тоже время смотрелся симпатично.


К сожалению я не разработчик и не умею писать программы, но как упоминалось выше, Linux позволяет пользователю делать изменения в конфигурационных файлах того или иного приложения. Поэтому я взял за основу один из виджетов Менеджера Conky и "заточил" его под собственные нужды.

Итак, если вы хотите создать подобный виджет и у вас ещё не установлен Менеджер Conky, установите его в терминале следующими командами в Ubuntu/Linux Mint :

sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt-get update
sudo apt-get install conky-manager

По окончании установки откройте Менеджер Conky из системного меню:


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


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


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

Для открытия конфигурационного файла виджета, активируйте его и нажмите на значок с изображением карандаша в меню окна:



В параметре TEXT, это то что отображается виджетом на рабочем столе, можно изменить на своё усмотрение: color (цвет текста); pixelsize (размер цифр и текста); font (шрифт); time %A; %B; %Y на %a; %b; %y, добавлять пробелы между строк, а так же открыть конфиги других виджетов копировать из них и вставлять в свой нужные параметры.
Можно сказать "непаханое поле" для творческой деятельности без каких-либо знаний в программировании.
Один совет. Делайте изменения постепенно. Изменили, к примеру, параметр color, нажмите дважды в меню редактора кнопку Сохранить (в Ubuntu 16.04 достаточно нажать один раз), как тут же изменения вступят в силу в самом виджете на рабочем столе. Не понравилось изменение, кнопка - Отменить, затем Сохранить и настройка вернётся в прошлое состояние в редакторе и виджете.
Примечание. В Ubuntu 16.04, чтобы отменить изменения, ПКМ (правый клик мышки) на любом месте редактора и в контекстном меню выберите функцию Отменить.

own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_colour 000000
own_window_argb_visual yes
own_window_argb_value 0

Измените в параметре Погода в Севилье на свой горд/местность вместо Севилья и название своей системы вместо Ubuntu 16.04:


А затем нажмите кнопку Сохранить.

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


Если вы заметили на снимке отображается ещё и погода. Но это другой виджет - Gis Weather.

Установка виджета GisWeather

Откройте терминал (Ctrl+Alt+T), скопируйте и выполните следующие команды:

sudo add-apt-repository ppa:noobslab/apps
sudo apt-get update
sudo apt-get install gis-weather

В Ubuntu 16.04 установить GisWeather следующей командой:

По окончании установки вы найдёте GisWeather в программах Стандартные или поиском в меню:


Посмотрите как его настроить для своей местности ЗДЕСЬ.

После того как вы определили свою местность в виджете, настройте его следующим образом в Параметры:




А также правый клик на виджете и в контекстном меню сделайте следующие изменения:



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

Иногда бывает полезно разместить на рабочем столе некоторую информацию, к которой можно легко обратиться в любой момент времени, просто взглянув на рабочий стол. Конечно же, каждый для себя выбирает, что ему важнее видеть всего при работе в операционной системе Debian. Ниже показан пример моего рабочего стола, где собрана информация по минимуму.

Пример рабочего стола на Debian
Требования

Подробную информацию по установке на различные ОС можно найти здесь.

Автозагрузка программы

Имяconky
Командаconky -p 15
КомментарийСистемный монитор

После заполнения, необходимо перезагрузить операционную систему.

Примечание. Команда conky -p 15 запускает Conky с задержкой в 15 секунд. Если программа будет появляться до загрузки рабочего стола и потом исчезать, то необходимо увеличить это значение.

Настройка Conky

Более подробную информацию можно посмотреть здесь. Нам необходимо создать локальный файл

/.conkyrc . Для этого мы скопируем файл по умолчанию в домашнюю директорию: cp /etc/conky/conky.conf

Вот теперь можно перейти непосредственно к редактированию данного файла (у вас может использоваться другой редактор):

Прикладываю свой вариант файла:

Я не стал описывать команды и операторы, т.к. это выходит за рамки данной статьи. А хотелось только поделиться своим решением. Кстати, в сети можно найти множество интересных решений. А возможно, вы придумаете свой уникальный конфиг.

Если что, разместил на github gist.

Спасибо за внимание и до новых встреч.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Conkys: Gotham, процессы и ядра ЦП в MX-Linux 17

Conky - это приложение, которое позволяет вам управлять определенными виджетами рабочего стола, то есть контролировать и отображать параметры рабочего стола в операционной системе. Он бесплатный, легкий и доступен как в системах Linux, так и в BSD. Они обычно используются для отображения информации и статистики рабочей среды, таких как потребление ЦП, использование диска, использование ОЗУ, скорость сети и другие. .

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

Conky Manager v2.4 для MXLinux

Conky Manager

Conkys (файлы конфигурации) имеют Conky Manager для облегчения администрирования, то есть Conky Manager представляет собой графический «интерфейс» для управления файлами конфигурации Conky. Он предоставляет опции для запуска, остановки, изучения и редактирования тем соответствующих Conkys, установленных в операционной системе.

Conky Manager в настоящее время доступен по адресу Launchpad спасибо вашему разработчику Тони Джордж, с пакетами для Ubuntu и производных (Mint) или совместимых (DEBIAN). И с его помощью вы также можете запустить настроенный Conkys, когда пользователь вошел в систему, изменить его местоположение на рабочем столе, изменить уровень прозрачности и размер окна установленных виджетов Conkys.

Conky Manager сильно изменился с момента последнего комментария в нашем блоге, в этой публикации 2013 года, как это было в версии 1.2. Поскольку этого приложения мало, и наиболее известной практикой является Cysboard.

Conky Manager: ручная установка вашего репозитория

Установка Conky Manager

Conky Manager легко устанавливается и в автоматическом режиме из операционных систем на основе Ubuntu с помощью следующей процедуры:

Или вручную, вставив следующие строки из репозиториев подходит внутри вашего файла "sources.list":

А затем установите ключи репозитория, обновите списки пакетов и установите программу с помощью командных команд:

Conky Manager v2.4: как его настроить

Использование Conky Manager

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

Conky Manager v2.4: верхняя панель

Это приложение имеет графическое меню вверху который позволяет выполнять следующие действия:

  • Перейти к следующему виджету
  • Перейти к предыдущему виджету
  • Запустить выбранный виджет
  • Остановить выбранный виджет
  • Настроить выбранный виджет через графическое меню
  • Настроить выбранный виджет через файл конфигурации
  • Откройте папку темы, к которой принадлежит выбранный виджет
  • Обновите список виджетов, показанный внизу
  • Создать предварительный просмотр выбранного виджета
  • Остановить все активные виджеты
  • Импортируйте тему Conky в Conky Manager

В конце строки меню находятся варианты:

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

Conky-Manager: меню конфигурации

  • Меню пожертвований: Где вы можете сделать взнос через Paypal или Google Wallet. Помимо отправки писем разработчику проекта и посещения официального сайта проекта.

Conky-Manager: Меню пожертвований

Внизу строки меню находятся варианты:

  • Обзор (браузер): Это позволяет вам просматривать нижний список виджетов, упорядоченных по отдельности или сгруппированных по установленным темам.
  • Фильтр поиска: Это позволяет установить виджет или тему, сопоставив строку символов.
  • Кнопки предварительного просмотра / списка: Это позволяет вам настроить способ отображения установленных ниже виджетов и тем.

Расширенные настройки виджетов

Как мы уже говорили ранее Conky виджетами можно управлять двумя способами:

  • Через графическое меню
  • Через файл конфигурации

Conky Manager: меню конфигурации виджета

Графическое меню позволяет управлять следующие аспекты каждого виджета:

Conky Manager: Файл конфигурации Conky: MX-Gotham

Для редактирования через файл конфигурации вы должны понимать и владеть языком программирования Conky. Чтобы поддержать нас в этой работе, мы можем использовать следующие ссылки, где это объясняется нам:

Мой пользовательский виджет Conky

Как показано на основном изображении этой статьи, я настроил виджет «MX-Gotham_rev1_default», который входит в MX-Linux 17.1, а также в MinerOS GNU / Linux. Я поделюсь кодом, чтобы вы изучили, адаптировали и включили его в свои собственные виджеты Conky.

Я надеюсь, что эта статья будет вам полезна для управления вашим собственным установленным и настраиваемым Conkys. И я оставляю вас с этим полным видео, чтобы вы узнали немного больше по той же теме.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Из Linux » приложений » Conky Manager: легко управляйте виджетами мониторинга

Читайте также: