Вступление
Всем доброго дня! В предыдущей статье Kawai-Focus 2.4: сборка приложения под Arch Linux:
Собран пакет под Arch Linux из deb-пакета;
Исправлена ошибка протокола
71, которая возникала из-за отсутствияGBMиGDKв системе;Проверена работа приложения в Cachy OS.
Сегодня я займусь совершенно неизведанной и, как мне кажется, мало изученной многими линуксоидами темой — сборкой Tauri-приложения под Windows. Почему мало изученной? Потому что я практически не программировал под эту систему и тем более никогда не собирал .exe-приложение под неё.
Я знаю лишь то, что Tauri поддерживает сборку приложений под Windows, поэтому это не должно стать серьёзной проблемой.
Также в предыдущей статье не поместилось добавление рецепта PKGBUILD в AUR, поэтому я включу его в эту статью.
Заваривайте чай, доставайте вкусняшки — пора «снимать урожай помидоров сорта Windows и выставлять на "витрину" сорт Arch»! 🍅
Особенности работы Tauri на Windows
Итак, прежде чем кидаться во все «тяжкие», при сборке приложения под Windows было бы неплохо разобраться, как работает Tauri-приложение на этой системе, какие есть отличия от Linux и какие форматы пакетов доступны для сборки.
На Windows приложения Tauri используют системный веб-движок WebView2, основанный на Chromium от Microsoft Edge. Это означает, что интерфейс приложения фактически рендерится тем же движком, что и современный браузер Edge. Важная особенность — WebView2 может быть как предустановлен в системе, так и устанавливаться вместе с приложением (в режиме Evergreen или Fixed). Благодаря этому Tauri-приложения на Windows получают высокую производительность и современную поддержку веб-стандартов без необходимости встраивать собственный браузер, как это делает Electron.
На Linux ситуация отличается: там нет единого стандартного веб-движка, поэтому Tauri обычно использует WebKitGTK. Это означает, что внешний вид и поведение приложения могут зависеть от установленной версии WebKit в системе пользователя. В отличие от Windows, где WebView2 обновляется централизованно через Edge, на Linux обновления движка зависят от пакетного менеджера и дистрибутива. Это может приводить к несовместимостям или различиям в отображении интерфейса между разными системами.
Ещё одно отличие — стабильность и предсказуемость окружения. На Windows Tauri работает в более контролируемой среде: WebView2 ведёт себя одинаково у большинства пользователей, особенно если используется встроенный (Fixed) runtime. На Linux же разработчику приходится учитывать больше переменных: разные версии библиотек, окружения рабочего стола и даже различия в настройках графической подсистемы. Это усложняет тестирование и иногда требует дополнительных проверок в коде.
Что касается сборки, на Windows Tauri поддерживает несколько форматов дистрибуции. По умолчанию доступна сборка в .exe (установщик или portable). Также возможна сборка в .msi (Windows Installer) и .msix (современный формат пакетов от Microsoft), однако для этого могут потребоваться дополнительные инструменты и настройка.
Выбор формата зависит от целей: .msi часто используется в корпоративной среде, .exe — для простого распространения, а .msix — для интеграции с экосистемой Windows и более безопасной установки.
Впитав в себя всю эту информацию, я пришёл к выводу, что Tauri-приложение на Windows должно работать более предсказуемо, чем на Linux. Признаться честно, это немного облегчает задачу и снимает с плеч некий невидимый груз. Именно на Linux я привык «превозмогать», а тут всё звучит гораздо проще — по крайней мере на первый взгляд.
Что ж, посмотрим на практике, как это будет на самом деле!
Я думаю, что выберу классический формат .exe. Также я почти уверен, что не буду использовать portable-вариант, так как на примере AppImage в Linux я убедился, что хранить все зависимости внутри пакета — не лучшая идея во многих смыслах.
Сборка и установка под Windows 11
Собирать Tauri-приложение я буду, работая в Windows 11. Я знаю, что можно собрать, например, используя Docker-контейнер с мини-версией Windows, находясь при этом в Linux, но это скорее для автоматизации сборки и тема для одной из следующих статей. Сейчас же я хочу собрать пакет вручную из-под Windows так же, как я делал это в Debian и CachyOS (Arch).
Умение работать в целевой операционной системе — необходимый навык, на мой взгляд.
Установка зависимостей
Всё начинается с клонирования репозитория. Здесь особых отличий работы с командами git на Windows по сравнению с Linux я не нашёл.
git clone name_repo
Далее мне нужно установить все зависимости для Tauri-проекта.
Скачиваю установщик для Node.js с https://nodejs.org/en/download и устанавливаю его. Проверяю версию, чтобы убедиться, что он установлен и работает корректно:
node -v
Результат команды в консоли:
v25.8.1
Проверю версию npm на всякий случай.
npm -v
Результат команды в консоли:
11.11.0
Теперь пришло время установить язык Rust вместе с cargo.
Cargo — это официальный инструмент (менеджер пакетов и сборки) для языка программирования Rust, который позволяет создавать проекты, управлять зависимостями и собирать код.
Скачать установщик для rust можно здесь: https://rust-lang.org/tools/install/.
Проверяю его версию:
rustc -vV
Результат команды в консоли:
rustc 1.94.0 (4a4ef493e 2026-03-02) binary: rustc commit-hash: 4a4ef493e3a1488c6e321570238084b38948f6db commit-date: 2026-03-02 host: x86_64-pc-windows-msvc release: 1.94.0 LLVM version: 21.1.8
Вместе с ней проверю и версию cargo.
cargo -V
Результат команды в консоли:
cargo 1.94.0 (85eff7c80 2026-01-15)
На Windows Tauri использует Microsoft Edge WebView2. Обычно он уже установлен, если установлен Edge.
Теперь поставлю Tauri через cargo.
cargo install tauri-cli
Результат команды в консоли (фрагмент):
note: `link.exe` returned an unexpected error note: in the Studio installer, ensure the "C++ build tools" workload is selected error: could not compile `proc-macro2` (build script) due to 1 previous error warning: build failed, waiting for other jobs to finish... error: could not compile `quote` (build script) due to 1 previous error error: failed to compile `tauri-cli v2.10.1`, intermediate artifacts can be found at `C:\Users\messa\AppData\Local\Temp\cargo-installCFWtDD`. To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
Появилась первая проблема — наконец-то, а то уже стало немного скучно 🙂 Ошибка связана с отсутствием необходимых инструментов сборки C++ build tools в среде разработки.
На Windows необходимые инструменты сборки не входят в базовую систему и должны устанавливаться отдельно. В частности, речь идёт о компиляторе MSVC, линковщике и системных заголовках.
В отличие от этого, в Linux-системах (например, Ubuntu или Debian) базовые инструменты разработки обычно устанавливаются через пакетные менеджеры одной командой (build-essential) и используют стандартный toolchain (GCC/Clang), который уже ожидается большинством open-source проектов.
Кроме того, экосистема Rust (и, соответственно, Tauri) на Linux по умолчанию интегрируется с системным компилятором, тогда как на Windows используется MSVC как основной целевой toolchain. Поэтому отсутствие C++ build tools на Windows приводит к ошибкам сборки, тогда как на Linux аналогичные зависимости уже предустановлены или легко подтягиваются автоматически.
Установить инструменты сборки на Windows можно разными способами:
через Visual Studio Installer (компонент C++ build tools);
вручную установив MSVC;
либо используя альтернативы вроде MinGW.
Каждый из вариантов имеет свои особенности, поэтому выбор остаётся за пользователем.
Теперь перехожу в папку client и устанавливаю зависимости фронтенда:
cd client/ && npm install
Сборка и проверка приложения
Теперь осталась самая важная часть — сборка приложения. Я ничего дополнительно не настраивал в проекте и просто перешёл в каталог desktop и запустил сборку:
cd desktop/ && cargo tauri build
Результат команды в консоли (фрагмент):
Installing C:\Users\messa\.cargo\bin\cargo-tauri.exe Installed package `tauri-cli v2.10.1` (executable `cargo-tauri.exe`) Finished `release` profile [optimized] target(s) in 14m 26s Built application at: C:\Users\messa\Documents\kawai-focus-v2\desktop\src-tauri\target\release\kawai-focus.exe
Я был приятно удивлён тем, что на Windows собрал своё приложение без каких-либо проблем. В результате у меня появился один файл kawai-focus.exe, который не требует установки в систему — он запускается сразу.
В отличие от AppImage, он не тянет в себя зависимости, поэтому весит всего около 11 МБ.
Настал момент истины: запустится ли приложение на моём ноутбуке с Windows 11 без ошибок?

К моему удивлению, всё заработало сразу и безупречно. Первый запуск происходит дольше, так как создаётся база данных и заполняется записями таймеров.
Windows 11 — не единственная версия этой операционной системы, которой люди пользуются до сих пор. Хотя Windows 10 уже не поддерживается Microsoft, часть пользователей всё ещё на ней работает. На ПК моей супруги установлены Windows 10 и Windows 11, поэтому я решил проверить, будет ли работать Tauri-приложение, собранное на Windows 11, на Windows 10.
Браузер Edge есть и в Windows 10, поэтому, по моим предположениям, WebView2 также должен работать корректно.

Как видно из скриншота, запуск на Windows 10 также прошёл без проблем. Я был очень рад, что моё приложение одинаково хорошо работает как на Windows 10, так и на Windows 11.
Добавление рецепта в Aur
В предыдущей статье у меня получилось собрать приложение kawai-focus из скачанного .deb-пакета под Arch Linux. Для этого я создал рецепт PKGBUILD, который представляет собой файл с инструкциями по сборке и описанием пакета. Затем я добавил этот рецепт в свой репозиторий на GitHub и написал небольшую инструкцию по сборке.
Однако более удобным и каноничным способом для Arch Linux является публикация рецепта в AUR. AUR (Arch User Repository) — это пользовательский репозиторий, в котором сообщество публикует PKGBUILD-скрипты для сборки и установки программ, отсутствующих в официальных репозиториях.
Это удобно тем, что приложение можно установить с помощью AUR-helper (например, yay). Такие инструменты напрямую работают с рецептами из AUR, поэтому пользователю достаточно выполнить одну команду, чтобы скачать, собрать и установить программу. Это значительно проще, чем вручную скачивать рецепт и запускать сборку.
Регистрация в Aur
Первый шаг — регистрация на сайте AUR. Для этого необходимо заполнить форму по адресу: https://aur.archlinux.org/register
Я не буду подробно разбирать стандартные поля (например, Username), так как они типичны для большинства сайтов. Вместо этого остановлюсь на полях, которые требуют пояснения.
Для регистрации желательно иметь под рукой систему с Arch Linux (или основанную на ней, например CachyOS). Это необходимо для выполнения команд, результаты которых понадобятся при заполнении формы.

Поле PGP Key Fingerprint — это отпечаток (уникальный идентификатор) PGP-ключа пользователя, который используется для подтверждения личности и подписывания пакетов.
Зачем это нужно?
Подпись пакетов — вы можете подписывать
PKGBUILDи релизы;Доверие — другие пользователи могут убедиться, что пакет действительно от вас;
Безопасность — защита от подмены и вредоносных изменений.
Для его получения можно использовать пакет gnupg, который предоставляет инструменты для создания, управления и использования GPG/PGP-ключей, включая генерацию ключевой пары и получение её fingerprint.
Команда установки:
sudo pacman -S gnupg
После установки необходимо сгенерировать ключ:
gpg --full-generate-key
Вывод команды:
gpg (GnuPG) 2.4.9; Copyright (C) 2025 g10 Code GmbH This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. gpg: создан каталог '/home/user_name/.gnupg' Выберите тип ключа: (1) RSA and RSA (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) (9) ECC (sign and encrypt) *default* (10) ECC (только для подписи) (14) Existing key from card Ваш выбор? 1 длина ключей RSA может быть от 1024 до 4096. Какой размер ключа Вам необходим? (3072) 4096 Запрошенный размер ключа - 4096 бит Выберите срок действия ключа. 0 = не ограничен <n> = срок действия ключа - n дней <n>w = срок действия ключа - n недель <n>m = срок действия ключа - n месяцев <n>y = срок действия ключа - n лет Срок действия ключа? (0) Срок действия ключа не ограничен Все верно? (y/N) y GnuPG должен составить идентификатор пользователя для идентификации ключа. Ваше полное имя: user_name Адрес электронной почты: email_adress Примечание: Вы выбрали следующий идентификатор пользователя: "user_name <email_adress>" Сменить (N)Имя, (C)Примечание, (E)Адрес; (O)Принять/(Q)Выход? O Необходимо получить много случайных чисел. Желательно, чтобы Вы в процессе генерации выполняли какие-то другие действия (печать на клавиатуре, движения мыши, обращения к дискам); это даст генератору случайных чисел больше возможностей получить достаточное количество энтропии. Необходимо получить много случайных чисел. Желательно, чтобы Вы в процессе генерации выполняли какие-то другие действия (печать на клавиатуре, движения мыши, обращения к дискам); это даст генератору случайных чисел больше возможностей получить достаточное количество энтропии. gpg: /home/user_name/.gnupg/trustdb.gpg: создана таблица доверия gpg: создан каталог '/home/user_name/.gnupg/openpgp-revocs.d' gpg: сертификат отзыва записан в '/home/user_name/.gnupg/openpgp-revocs.d/1A2B3C4D5E6F7890ABCDEF1234567890ABCDEF12.rev'. открытый и секретный ключи созданы и подписаны. pub rsa4096 2026-03-20 [SC] 1A2B3C4D5E6F7890ABCDEF1234567890ABCDEF12 uid user_name <email_adress> sub rsa4096 2026-03-20 [E]
Разбор вывода:
gpg (GnuPG) 2.4.9— версия установленного GnuPG;создан каталог '/home/user_name/.gnupg'— создана директория для хранения ключей и настроек;Выберите тип ключа— выбор алгоритма ключа (RSA, ECC и др.);Ваш выбор? 1— выбран тип RSA (подпись + шифрование);Какой размер ключа Вам необходим? 4096— задан размер ключа (чем больше, тем безопаснее);Срок действия ключа? (0)— ключ без срока действия;Ваше полное имя / email— данные для создания UID (идентификатора пользователя);"user_name <email_adress>"— итоговый UID, привязанный к ключу;Необходимо получить много случайных чисел— идёт генерация ключа, используется энтропия системы;создана таблица доверия— инициализация базы доверия ключей (trustdb.gpg);создан каталог openpgp-revocs.d— директория для сертификатов отзыва ключей;сертификат отзыва записан— создан revocation-сертификат (нужен для отзыва ключа при компрометации);открытый и секретный ключи созданы— генерация ключевой пары завершена;pub rsa4096 ... [SC]— публичный ключ (Sign/Certify);1A2B3C4D...— fingerprint ключа (используется, например, в AUR);uid user_name <email_adress>— привязанный пользователь;sub rsa4096 ... [E]— дополнительный (subkey) ключ для шифрования.
Навыходе получился ключ наподобие данного примера 1A2B3C4D5E6F7890ABCDEF1234567890ABCDEF12, который и нужно вставить в поле PGP Key Fingerprint.
Также список ключей можно посмотреть командой:
gpg --list-keys
В форме регистрации есть дополнительное поле для защиты от автоматической регистрации.

Для его заполнения необходимо выполнить команду:
LC_ALL=C pacman -V|sed -r 's#[0-9]+#5a8#g'|md5sum|cut -c1-6
Разбор команды:
LC_ALL=C— устанавливает стандартную (C) локаль, чтобы вывод команды был одинаковым на всех системах (без влияния языка/региональных настроек);pacman -V— выводит информацию о версии пакетного менеджераpacman;|(pipe) — передаёт вывод предыдущей команды в следующую;sed -r 's#[0-9]+#5a8#g'— заменяет все числа в выводе на строку5a8(регулярное выражение[0-9]+находит любые последовательности цифр);md5sum— вычисляет MD5-хеш от полученного текста;cut -c1-6— берёт только первые 6 символов хеша.
Команда генерирует короткий (6 символов) хеш, основанный на версии pacman, но с заменёнными числами — это позволяет получить стабильный и анонимизированный идентификатор системы.
После отправки формы появилось сообщение о том, что аккаунт был успешно создан. Также было указано, что ссылка для установки пароля отправлена на email, указанный при регистрации.

Письмо со ссылкой для установки пароля пришло на электронную почту.

Перейдя по ссылке, необходимо заполнить форму для создания пароля.

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

Теперь, когда регистрация завершена, можно войти в систему, используя email и созданный пароль.

Загрузка рецепта в Aur
Сразу после регистрации в AUR уже можно загружать свои рецепты. Здесь нет особых препятствий для публикации, главное — чтобы рецепт был написан по правилам.
Для начала я создаю новый репозиторий AUR для рецепта PKGBUILD. Для этого клонирую пока ещё не существующий репозиторий. На первый взгляд может показаться странным клонировать несуществующий репозиторий. Однако в случае с AUR это работает так: репозиторий фактически создаётся на сервере автоматически при первом git push, поэтому локально его можно «подготовить» заранее.
git clone ssh://aur@aur.archlinux.org/kawai-focus-bin.git
Перейду в папку для работы с репозиторием.
cd kawai-focus-bin
Тут у внимательного читателя может появиться вопрос: почему в названии репозитория есть суффикс -bin? Дело в том, что по правилам упаковки пакет, который собирается из бинарного исходника или готового пакета (в моём случае — из .deb пакета для Debian), обязан иметь этот суффикс в pkgname рецепта.
Об этом говорит правило:
Packages that use prebuilt deliverables, when the sources are available, must use the -bin suffix.
Об этом мне сообщил один из читателей в комментариях под предыдущей статьёй на Хабре — за что ему большое спасибо. Я обязательно добавлю суффикс -bin в рецепт.
Само собой, в репозиторий я помещаю обновлённый файл рецепта с суффиксом -bin. Кстати, хеш лучше генерировать самому и указывать его в рецепте, а не перекладывать это на пользователя.
pkgname=kawai-focus-bin pkgver=0.1.0 pkgrel=1 pkgdesc="Kawai-Focus is a focus-training app based on the Pomodoro timer." arch=('x86_64') url="https://github.com/Arduinum/kawai-focus-v2" license=('MIT') depends=('webkit2gtk-4.1' 'libsoup3' 'gtk3' 'cairo' 'gdk-pixbuf2' 'glib2' 'pango') source=("Kawai-Focus_${pkgver}_amd64.deb::https://github.com/Arduinum/kawai-focus-v2/releases/download/${pkgver}-alpha.1/Kawai-Focus\_${pkgver}\_amd64.deb") sha256sums=('3ff49a4e124daafb5e660738c275b53ccf3116e759cd6cafde8b77b2257799a6') package() { cd "$srcdir" # распаковываем deb ar x Kawai-Focus_${pkgver}_amd64.deb # извлекаем файлы пакета tar -xf data.tar.* # копируем всё в pkgdir cp -r usr "$pkgdir" }
Теперь я сгенерирую файл .SRCINFO из PKGBUILD, содержащий метаданные пакета, которые используются AUR для отображения информации о пакете. Данная команда извлекает информацию из файла рецепта PKGBUILD, поэтому для её корректной работы обязательно нужен готовый рецепт.
makepkg --printsrcinfo > .SRCINFO
Загляну внутрь файла, чтобы показать его содержимое, используя редактор nano.
nano .SRCINFO
Содержимое .SRCINFO:
pkgbase = kawai-focus-bin pkgdesc = Kawai-Focus is a focus-training app based on the Pomodoro timer. pkgver = 0.1.0 pkgrel = 1 url = https://github.com/Arduinum/kawai-focus-v2 arch = x86_64 license = MIT depends = webkit2gtk-4.1 depends = libsoup3 depends = gtk3 depends = cairo depends = gdk-pixbuf2 depends = glib2 depends = pango source = Kawai-Focus_0.1.0_amd64.deb::https://github.com/Arduinum/kawai-focus-v2/releases/download/0.1.0-alpha.1/Kawai-Fo> sha256sums = 3ff49a4e124daafb5e660738c275b53ccf3116e759cd6cafde8b77b2257799a6 pkgname = kawai-focus-bin
Как видно из содержимого файла .SRCINFO, вся метаинформация извлечена корректно из рецепта.
Далее — стандартная процедура, знакомая каждому, кто работал с git: фиксация изменений и push в репозиторий. Не буду показывать эти рутинные команды и перейду сразу к проверке результата.
Для просмотра пакета можно перейти по ссылке:
kawai-focus-bin

На странице пакета представлено довольно много информации: лицензия, описание, исходники. Также доступны ссылки на исходный репозиторий и команды для клонирования AUR-репозитория.
Перейдя по ссылке на рецепт PKGBUILD в AUR-репозитории, можно увидеть его содержимое.

Проверка установки программы из Aur
Осталось самое ответственное — проверить, работает ли установка моего приложения из AUR, а заодно и работу AUR-helper yay. Теперь можно оценить, насколько стало просто установить приложение. Для этого достаточно всего одной простой команды.
yay -S kawai-focus-bin
Результат работы команды:
Пакет (1) Новая версия Изменение размера kawai-focus-bin 0.1.0-1 9,96 MiB Будет установлено: 9,96 MiB :: Приступить к установке? [Y/n] y (1/1) проверка ключей [--------------------------------------------] 100% (1/1) проверка целостности пакета [--------------------------------------------] 100% (1/1) загрузка файлов пакетов [--------------------------------------------] 100% (1/1) проверка конфликтов файлов [--------------------------------------------] 100% ошибка: не удалось завершить транзакцию (конфликтующие файлы) kawai-focus-bin: /usr/bin/kawai-focus существует в файловой системе (принадлежит kawai-focus) kawai-focus-bin: /usr/share/applications/Kawai-Focus.desktop существует в файловой системе (принадлежит kawai-focus) kawai-focus-bin: /usr/share/icons/hicolor/128x128/apps/kawai-focus.png существует в файловой системе (принадлежит kawai-focus) kawai-focus-bin: /usr/share/icons/hicolor/256x256@2/apps/kawai-focus.png существует в файловой системе (принадлежит kawai-focus) kawai-focus-bin: /usr/share/icons/hicolor/32x32/apps/kawai-focus.png существует в файловой системе (принадлежит kawai-focus) kawai-focus-bin: /usr/share/metainfo/io.github.arduinum.KawaiFocus.metainfo.xml существует в файловой системе (принадлежит kawai-focus) Обнаружены ошибки, пакеты не обновлены. -> ошибка установки: [/home/user_name/.cache/yay/kawai-focus-bin/kawai-focus-bin-0.1.0-1-x86_64.pkg.tar.zst] - exit status 1
Почему возникла ошибка во время установки? Вывод в терминале показывает, что некоторые файлы, которые использует моя программа, уже существуют в файловой системе и принадлежат пакету kawai-focus. Из-за этого возник конфликт при установке, и она прервалась.
В прошлой статье я собирал своё приложение и устанавливал его с использованием рецепта и makepkg. Приложение я не удалил, поэтому возник этот конфликт файлов. Для исправления нужно удалить старый пакет.
sudo pacman -R kawai-focus
Результат работы команды:
проверка зависимостей... Пакет (1) Старая версия Изменение размера kawai-focus 0.1.0-1 -19,91 MiB Будет освобождено: 19,91 MiB :: Удалить эти пакеты? [Y/n] y :: Обработка изменений пакета... (1/1) удаление kawai-focus [--------------------------------------------] 100% :: Запуск post-transaction hooks... (1/3) Arming ConditionNeedsUpdate... (2/3) Updating icon theme caches... (3/3) Updating the desktop file MIME type cache...
Удаление выполнено успешно, и теперь можно попробовать собрать и установить пакет заново, выполнив следующую команду.
yay -S kawai-focus-bin
Результат работы команды:
AUR Explicit (1): kawai-focus-bin-0.1.0-1 :: Актуальный PKGBUILD, пропуск загрузки%!(EXTRA string=kawai-focus-bin) 1 kawai-focus-bin (файлы сборки существуют) > Пакеты, для которых требуется очистить кэш сборки? > [N]Нет [A]Все [Ab]Прервать [I]Установленные [No]Неустановленные или (1 2 3, 1-3, ) > A :: Удаление (1/1): /home/user_name/.cache/yay/kawai-focus-bin Указатель HEAD сейчас на коммите afcb7c9 v0.1.0 Удаление Kawai-Focus_0.1.0_amd64.deb Удаление kawai-focus-bin-0.1.0-1-x86_64.pkg.tar.zst 1 kawai-focus-bin (файлы сборки существуют) > Показать изменения? > [N]Нет [A]Все [Ab]Прервать [I]Установленные [No]Неустановленные или (1 2 3, 1-3, ) > A -> kawai-focus-bin: Нет изменений --- пропуск :: Продолжить установку? [Y/n] y > Сборка пакета kawai-focus-bin 0.1.0-1 (Пт 20 мар 2026 16:46:56) > Получение исходных файлов... -> Загрузка Kawai-Focus_0.1.0_amd64.deb... % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 0 100 4.54M 100 4.54M 0 0 3.42M 0 00:01 00:01 0 > ВНИМАНИЕ: Пропуск проверки PGP-подписей исходных файлов. > Проверка файлов source с использованием sha256sums... Kawai-Focus_0.1.0_amd64.deb ... Готово :: (1/1) Анализ SRCINFO: kawai-focus-bin > Сборка пакета kawai-focus-bin 0.1.0-1 (Пт 20 мар 2026 16:46:58) > Проверка зависимостей для запуска... > Проверка зависимостей для сборки... > Получение исходных файлов... -> Найден Kawai-Focus_0.1.0_amd64.deb > Проверка файлов source с использованием sha256sums... Kawai-Focus_0.1.0_amd64.deb ... Готово > Удаление директории '$srcdir/'... > Распаковка исходных файлов... -> Распаковка 'Kawai-Focus_0.1.0_amd64.deb' с помощью bsdtar > Исходные файлы готовы. > Сборка пакета kawai-focus-bin 0.1.0-1 (Пт 20 мар 2026 16:47:00) > Проверка зависимостей для запуска... > Проверка зависимостей для сборки... > ВНИМАНИЕ: Использование существующего дерева исходных файлов в '$srcdir/' > Вход в окружение fakeroot... > Запускается package()... > Очистка... -> Удаление файлов libtool... -> Удаление статических библиотек... -> Удаление ненужных файлов... -> Удаление отладочной информации из бинарников и библиотек... -> Сжатие документации (man и info)... > Проверка сборки на ошибки... > Создание пакета "kawai-focus-bin"... -> Создание файла '.PKGINFO'... -> Создание файла '.BUILDINFO'... -> Создание файла '.MTREE'... -> Сжатие пакета... > Выход из окружения fakeroot. > Завершена сборка пакета kawai-focus-bin 0.1.0-1 (Пт 20 мар 2026 16:47:02) > Очистка... загрузка пакетов... разрешение зависимостей... проверка конфликтов... Пакет (1) Новая версия Изменение размера kawai-focus-bin 0.1.0-1 9,96 MiB Будет установлено: 9,96 MiB :: Приступить к установке? [Y/n] y (1/1) проверка ключей [--------------------------------------------] 100% (1/1) проверка целостности пакета [--------------------------------------------] 100% (1/1) загрузка файлов пакетов [--------------------------------------------] 100% (1/1) проверка конфликтов файлов [--------------------------------------------] 100% :: Обработка изменений пакета... (1/1) установка kawai-focus-bin [--------------------------------------------] 100% :: Запуск post-transaction hooks... (1/3) Arming ConditionNeedsUpdate... (2/3) Updating icon theme caches... (3/3) Updating the desktop file MIME type cache...
Разбор установки:
AUR Explicit (1): kawai-focus-bin-0.1.0-1→ Найден 1 пакет в AUR для установки — kawai-focus-binPKGBUILD ... пропуск загрузки→ PKGBUILD уже есть локально, повторная загрузка не требуетсяУдаление ... ~/.cache/yay/kawai-focus-bin→ Очистка кэша сборки перед новой сборкойНет изменений --- пропуск→ PKGBUILD не изменился с прошлого разаЗагрузка Kawai-Focus_0.1.0_amd64.deb→ Скачивание исходного.deb-пакетаПропуск проверки PGP-подписей→ Подпись не проверяется (часто в AUR это нормально, но менее безопасно)sha256sums ... Готово→ Проверка контрольной суммы файла прошла успешноРаспаковка ... с помощью bsdtar→ Извлечение содержимого.deb-архиваВход в окружение fakeroot→ Сборка пакета в изолированном окружении без root-правpackage()→ Выполнение функции упаковки из PKGBUILDОчистка...→ Удаление лишних файлов (libtool, статические библиотеки, debug-инфо)Создание пакета ... .pkg.tar.zst→ Формирование установочного пакета Arch LinuxЗавершена сборка пакета→ Сборка успешно завершенаразрешение зависимостей→ Проверка зависимостей перед установкойпроверка конфликтов→ Проверка, не конфликтует ли пакет с уже установленнымиустановка kawai-focus-bin→ Установка пакета в системуpost-transaction hooks→ Выполнение пост-скриптов:ConditionNeedsUpdate→ отметка системы для обновленийUpdating icon theme caches→ обновление кэша иконокUpdating the desktop file MIME type cache→ обновление ассоциаций файлов
Хочу обратить внимание на то, что я запустил yay внутри папки AUR-репозитория, поэтому он не стал загружать файл рецепта. AUR-helper yay избежал лишней операции, которая в данном случае не требуется.
Теперь проверю запуск приложения. В предыдущей статье я рассказывал, что добавил флаги, которые исправляют проблемы запуска приложения. В данном случае --nv-disable-explicit-sync устанавливает переменную __NV_DISABLE_EXPLICIT_SYNC=1, отключая механизм explicit sync в драйверах NVIDIA, что иногда устраняет зависания интерфейса и проблемы при отсутствии GBM и GDK (как в моём случае).
kawai-focus --nv-disable-explicit-sync
Суффикс -bin используется только в названии пакета в рецепте, поэтому имя самого приложения никак не меняется.

Приложение ожидаемо запустилось, так как сам код я не менял.
Анонс на следующие статьи
Наконец я завершил сборку пакетов под основные операционные системы (кроме Mac OS). Этот процесс был не всегда простым, но в то же время вполне комфортным.
Однако впереди у меня ещё много работы. Сейчас реализован, по сути, только один экран — «Таймеры» — с кнопками-заглушками и больше ничего. Поэтому мне предстоит реализовать остальные экраны. Начну с экрана «Таймер», который пока будет воспроизводить существующий вариант, так как экрана «Конструктор таймеров» ещё нет — создавать новые таймеры пока просто нечем.
Мне предстоит реализовать отсчёт таймера, механизм работы цепочки таймеров и многое другое. Для вдохновения я буду опираться на прототип на Kivy — по крайней мере, в плане функциональности и внешнего вида. Также мне предстоит решить, каким образом будет воспроизводиться звук таймера. Скорее всего, я выберу подход с использованием возможностей веб-браузера, но это пока не точно.
Если у вас есть мысли о том, как можно улучшить проект, пишите в комментариях — с удовольствием ознакомлюсь с вашими предложениями!
Читайте продолжение — не пропустите!
Ссылки к статье
Репозиторий проекта на Github Kawai-Focus-v2.
