GtkSharp#
GtkSharp — это обертка для библиотеки GTK, предназначенная для разработки десктоп приложений на C#. В свою очередь GTK — это фреймворк (написанный на Си) для создания кроссплатформенного графического интерфейса пользователя (GUI). Основным достоинством GtkSharp является его высокая степень интеграции с системными компонентами на Linux.
Пакет |
Версия |
Репозиторий |
Описание |
---|---|---|---|
dotnet-sdk-8.0 |
8.0.100-1astra~1.8.0+b2 |
extended |
Комплект разработки ПО на .NET 8.0 |
pkg-config |
1.8.1-1+b1 |
extended |
Инструмент для управления библиотеками |
libgtk-3-dev |
3.24.38-5ubuntu1astra5 |
extended |
Комплект разработки приложений с использованием GTK 3 |
При разработке приложений с использованием GtkSharp на платформе .NET рекомендуется использовать библиотеки, которые предоставляют расширенные возможности для работы с графическими интерфейсами, текстом и изображениями.
Пакет |
Версия |
Репозиторий |
Описание |
---|---|---|---|
libcairo2-dev |
1.16.0-7+b1 |
extended |
Файлы разработки для библиотеки 2D-графики Cairo |
libpango1.0-dev |
1.50.12+ds-1+b1 |
extended |
Библиотека для макетирования и рендеринга текста |
libgdk-pixbuf2.0-dev |
2.40.2-2+b1 |
extended |
Библиотека манипулирования изображениями |
Установка зависимостей#
Установка основных пакетов Gtk производится с помощью утилиты APT:
sudo apt install pkg-config libgtk-3-dev
В папке проекта необходимо с помощью CLI dotnet добавить пакет GtkSharp:
dotnet add package GtkSharp
Установка дополнительных пакетов GtkSharp производится с помощью утилиты APT:
sudo apt install libcairo2-dev libpango1.0-dev libgdk-pixbuf2.0-dev
Основные элементы GtkSharp#
Виджеты (Widgets):
Window: Окно.
Label: Текстовая метка.
Button: Кнопка.
Entry: Однострочное текстовое поле.
TextView: Многострочное текстовое поле.
ComboBox: Выпадающий список.
ToggleButton: Переключатель.
ListBox: Список.
Scale: Ползунок (шкала).
Dialog: Диалоговое окно.
Методы размещения виджетов:
box.PackStart(): Последовательное размещение виджетов в вертикальном контейнере VBox или горизонтальном контейнере HBox.
grid.Attach(): Размещение виджетов в таблице Grid.
fixed.Put(): Размещение виджетов по координатам в контейнере фиксированного размера Fixed.
notebook.AppendPage(): Размещение на виджете Notebook с вкладками.
stack.AddTitled(): Размещение виджетов один поверх другого в Stack и управление видимостью каждого из них.
Сборка и запуск простого приложения GtkSharp:#
Ниже описан пример создания простого десктоп приложения на GtkSharp с кнопкой. Для настройки и тестирования приложения необходимо выполнить следующие шаги.
Пункт 1#
создать консольный шаблонный проект и перейти в папку проекта:
dotnet new console -n MyGtkApp
cd MyGtkApp
Пункт 2#
установить пакет GtkSharp:
dotnet add package GtkSharp
Пункт 3#
изменить код файла Program.cs на приведенный ниже:
using Gtk;
public class MyGtkApp
{
public static void Main()
{
Application.Init();
// Создание главного окна
var window = new Window("Простое GTK# Приложение");
window.SetDefaultSize(300, 200);
window.SetPosition(WindowPosition.Center);
// Обработчик события закрытия окна
window.DeleteEvent += delegate { Application.Quit(); };
// Создание кнопки
var button = new Button("Нажми меня!");
button.Clicked += (sender, e) =>
{
Console.WriteLine("Кнопка нажата!");
};
// Добавление кнопки в окно
window.Add(button);
window.ShowAll();
// Запуск приложения
Application.Run();
}
}
Пункт 4#
запустить приложение:
dotnet run
После выполнения этой команды должна открыться графическая форма вашего приложения с кнопкой. При нажатии на кнопку в терминале отобразится сообщение «Кнопка нажата!».
Сборка и упаковка#
Для публикации GtkSharp приложений c .Net используется стандартные команды упаковки из пакета dotnet-sdk. Создание deb-пакета возможно с помощью утилиты dpkg.
Пункт 1#
убедитесь, что ваш проект настроен корректно и все зависимости установлены:
dotnet restore
dotnet build
Пункт 2#
получить исполняемый файл приложения можно выполнив команду:
dotnet publish -c Release -o out -r linux-x64 --self-contained
- где параметры:
-c Release указывает на выполнение сборки в режиме «Release»,
-r linux-x64 задает целевую платформу Linux для 64-битных систем,
-o out задает директорию публикации out,
–self-contained указывает, что все зависимости, включая .NET, будут включены в сборку.
Исполняемый файл приложения — ./out/MyGtkApp.
Пункт 3#
в заданной директории out также будет расположен файл MyGtkApp.dll, чтобы собрать только библиотеку dll приложения, нужно выполнить команду:
dotnet publish -c Release -o ./publish --no-self-contained
где параметры –self-contained указывает, что .NET Runtime не будет включен, поэтому запуск сборки возможен только на машинах, где установлен соответствующий .NET Runtime.
Пункт 4#
для того, чтобы создать DEB пакет необходимо:
установить утилиту dpkg-deb,
создать необходимую директорию,
скопировать папку out из пункта 2 в эту директорию,
создать внутри этой папки файл control и заполнить следующим содержимым:
Package: myapp Version: 1.0 Section: base Priority: optional Architecture: amd64 Depends: .NETCoreApp (>= 3.1) Maintainer: Your Name <youremail@example.com> Description: Краткое описание приложения.
создать DEB пакета:
dpkg-deb --build myapp_1.0