- Создание графических приложений
- Цилюрик О.И.
- Графические интерфейсы Linux
- Budgie — графическая оболочка
- Cinnamon — среда рабочего стола
- Enlightenment
- GNOME — среда рабочего стола
- KDE (Plasma) — среда рабочего стола
- LXDE — lightweight desktop environment
- LXQt — легковесная среда рабочего стола
- MATE — продолжение развития классического Gnome
- Openbox — быстрый оконный менеджер
- Window Maker
- Run Linux GUI apps on the Windows Subsystem for Linux (preview)
- Install support for Linux GUI apps
- Prerequisites
- Fresh install — No prior WSL installation
- Existing WSL install
- Run Linux GUI apps
- Update the packages in your distribution
- Install Gedit
- Install GIMP
- Install Nautilus
- Install VLC
- Install X11 apps
- Install Google Chrome for Linux
- Install Microsoft Teams for Linux
- Install Microsoft Edge browser for 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 и слишком низок и работа с ним громоздкая).
Из-за названной специфики 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
В данном разделе сайта публикуется информация о графических интерфейсах операционной системы Linux. Интерфейсы разделены на две группы: среды рабочего стола и оконные менеджеры.
Среда рабочего стола Linux (Desktop Environment) — это комплексная готовая к работе оболочка. Обычно среда рабочего стола включает панель задач, функциональные меню, менеджер входа в систему, программы настройки, базовые программы и другие функциональные элементы, включая оконный менеджер.
Оконный менеджер Linux (Window Manager) — это программа, которая занимается отрисовкой окон, позволяет перемещать и изменять размер окна, обрабатывает действия пользователя, которые он делает в окне программы. Оконный менеджер может работать независимо или быть в составе среды рабочего стола.
Budgie — графическая оболочка
Budgie — графическая оболочка, которая была написана с нуля, но использует технологии GNOME.
Cinnamon — среда рабочего стола
Cinnamon — самостоятельная среда рабочего стола, являющаяся ответвлением от Gnome 3, но имеющая дизайн в стиле классического Gnome.
Enlightenment
Enlightenment (или просто E) — легковесный оконный менеджер (пользовательское окружение) не требовательный к ресурсам компьютера, потребляет очень мало оперативной памяти.
GNOME — среда рабочего стола
GNOME (GNU Network Object Model Environment) — популярная среда рабочего стола для Linux. Включает в себя набор утилит для настройки среды, прикладное программное обеспечение, системные утилиты и другие компоненты.
KDE (Plasma) — среда рабочего стола
KDE — полнофункциональная среда рабочего стола. В рамках проекта KDE разрабатывается большое количество приложений для повседневных нужд. KDE использует библиотеки Qt.
LXDE — lightweight desktop environment
LXDE (Lightweight X11 Desktop Environment) — быстрая легковесная среда рабочего стола, не требовательная к ресурсам компьютера. В качестве оконного менеджера используется Openbox. Окна и меню открываются без задержек, интерфейс отзывчивый и не вызывает раздражения.
LXQt — легковесная среда рабочего стола
LXQt — легковесная среда рабочего стола, использующая библиотеки (фреймворк) Qt.
MATE — продолжение развития классического Gnome
MATE — среда рабочего стола, которая является продолжением развития Gnome 2. MATE является сбалансированной средой с хорошим набором программ и утилит и приятным классическим интерфейсом.
Openbox — быстрый оконный менеджер
Openbox — легковесный оконный менеджер с простым минималистским интерфейсом. Данный оконный менеджер не требователен к системным ресурсам и работает очень быстро. При клике правой кнопкой мыши вызывается главное меню Openbox, через которое можно вызывать любые программы. Openbox хорошо настраивается и поддерживает темы оформления.
Window Maker
Window Maker — менеджер окон для Linux. Главными элементами интерфеса в Window Maker являются функциональные кнопки на рабочем столе и меню, вызываемое при клике правой кнопкой мыши по рабочему столу. Работает быстро, хорошо настраивается.
Источник
Run Linux GUI apps on the Windows Subsystem for Linux (preview)
You can now preview Windows Subsystem for Linux (WSL) support for running Linux GUI applications (X11 and Wayland) on Windows in a fully integrated desktop experience.
WSL 2 enables Linux GUI applications to feel native and natural to use on Windows.
- Launch Linux apps from the Windows Start menu
- Pin Linux apps to the Windows task bar
- Use alt-tab to switch between Linux and Windows apps
- Cut + Paste across Windows and Linux apps
You can now integrate both Windows and Linux applications into your workflow for a seamless desktop experience.
Install support for Linux GUI apps
Prerequisites
You will need to be on Windows 11 Build 22000 or higher to access this feature. You can join the Windows Insiders Program to get the latest preview builds.
Installed driver for vGPU
To run Linux GUI apps, you should first install the preview driver matching your system below. This will enable you to use a virtual GPU (vGPU) so you can benefit from hardware accelerated OpenGL rendering.
Fresh install — No prior WSL installation
If you have not already done so, install WSL and set up a user name and password for your Linux distribution.
Open a command prompt with administrator privileges.
Select Start, type PowerShell, right-click Windows PowerShell, and then select Run as administrator.
Run this command and reboot your machine when prompted:
Once your machine has finished rebooting, installation will continue and you will be asked to enter a username and password. This will be your Linux credential for the Ubuntu distribution.
You’re now ready to begin using Linux GUI apps on WSL!
Existing WSL install
If you already have WSL installed on your machine, you can update to the latest version that includes Linux GUI support by running the update command from an elevated command prompt.
Select Start, type PowerShell, right-click Windows PowerShell, and then select Run as administrator.
Enter the WSL update command:
You will need to restart WSL for the update to take effect. You can restart WSL by running the shutdown command in PowerShell.
Linux GUI apps are only supported with WSL 2 and will not work with a Linux distribution configured for WSL 1. Read about how to change your distribution from WSL 1 to WSL 2.
Run Linux GUI apps
You can run the following commands from your Linux terminal to download and install these popular Linux applications. If you are using a different distribution than Ubuntu, it may use a different package manager than apt. Once the Linux application is installed, you can find it in your Start menu under the distribution name. For example: Ubuntu -> Microsoft Edge .
Update the packages in your distribution
Install Gedit
Gedit is the default text editor of the GNOME desktop environment.
To launch your bashrc file in the editor, enter: gedit
Install GIMP
GIMP is a free and open-source raster graphics editor used for image manipulation and image editing, free-form drawing, transcoding between different image file formats, and more specialized tasks.
To launch, enter: gimp
Install Nautilus
Nautilus, also known as GNOME Files, is the file manager for the GNOME desktop. (Similiar to Windows File Explorer).
To launch, enter: nautilus
Install VLC
VLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files.
To launch, enter: vlc
Install X11 apps
X11 is the Linux windowing system and this is a miscellaneous collection of apps and tools that ship with it, such as the xclock, xcalc calculator, xclipboard for cut and paste, xev for event testing, etc. See the x.org docs for more info.
To launch, enter the name of the tool you would like to use. For example:
Install Google Chrome for Linux
To install the Google Chrome for Linux:
- Change directories into the temp folder: cd /tmp
- Use wget to download it: sudo wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
- Get the current stable version: sudo dpkg -i google-chrome-stable_current_amd64.deb
- Fix the package: sudo apt install —fix-broken -y
- Configure the package: sudo dpkg -i google-chrome-stable_current_amd64.deb
To launch, enter: google-chrome
Install Microsoft Teams for Linux
To install Microsoft Teams for Linux:
- Change directories into the temp folder: cd /tmp
- Use curl to download the package: sudo curl -L -o «./teams.deb» «https://teams.microsoft.com/downloads/desktopurl?env=production&plat=linux&arch=x64&download=true&linuxArchiveType=deb»
- Use apt to install it: sudo apt install ./teams.deb -y
To launch, enter: teams
Install Microsoft Edge browser for Linux
Find information on how to install the Microsoft Edge browser for Linux using the command line on the Edge Insider site. Select Get instructions under the Command line installation section of the page.
Источник