
Привет, хабр!
Каждый день я использую qBittorrent. Это отличный торрент-клиент, стабильный и кроссплатформенный. Наверное, работает лучше чем любой другой торрент клиент. Но интерфейс у него на Qt Widgets, и на Windows 11 он выглядит не нативно(+ лично для меня не хватает некоторых вещей, о которых расскажу позже)
Я долго искал в интернете что-то подобное, но найти подходящее так и не смог, поэтому взялся пилить своё собственное решение. Переписывать движок с нуля было бы откровенной дуростью: qBittorrent пилят и тестируют годами, повторить это в одиночку за разумное время нереально. Значит, задача сузилась: оставить движок как есть, а вокруг него построить красивый интерфейс и внедрить новые функции.
Так, день за днём, через месяц получился WinBitTorrent

Что это вообще такое
WinBitTorrent не форк и не переписывание qBittorrent. Внутри работает qbittorrent-nox, тот же движок, что и в оригинальном приложении, версия 5.2.3 с libtorrent 2.0.13. Только вместо привычного веб-интерфейса или Qt Widgets поверх него стоит нативное приложение на WinUI 3 и Windows App SDK 2.2, написанное на .NET 8 по MVVM.
Программа управляет движком через его же Web API, тот, что обычно используют для доступа к qBittorrent через браузер. Только тут это API дёргает не браузер, а полноценное десктопное приложение с вкладками, деталями по каждой раздаче и графиками скорости.
Как оно работает
При первом запуске приложение поднимает qbittorrent-nox.exe как дочерний процесс с отдельным профилем, привязывает его веб-интерфейс к 127.0.0.1 на случайном свободном порту и запускает в headless-режиме. Движок при старте выдаёт временный пароль администратора, и WinBitTorrent сразу меняет его на постоянный API-ключ, который уходит в хранилище учётных данных Windows (Credential Vault). Сам пароль на диск не попадает и вычищается из логов.
Дочерний процесс висит в Windows Job object, поэтому физически не может пережить родительское приложение: если WinBitTorrent упадёт или его убьют из диспетчера задач, движок закроется вместе с ним. Если движок неожиданно завершится сам, приложение попробует поднять его заново, но не будет переусердствовать.
Кроме локального движка есть режим подключения к удалённому qBittorrent: домашнему серверу, NAS или сидбоксу, по логину с паролем или по API-ключу. Интерфейс один и тот же для обоих случаев, разница только в паре функций вроде открытия папки с файлом в проводнике, которая физически возможна только для локального движка.
Новые фишечки
Большинство из вас, скорее всего, и так пользуется qBittorrent(или его аналогами) на постоянной основе, так что копией его собственных функций никого не удивишь. Поэтому расскажу про то, чего в оригинале нет вообще.
Во-первых, поиск раздач прямо в приложении: уже сейчас встроены провайдеры RuTracker и The Pirate Bay. Для RuTracker есть отдельная авторизация по логину и паролю и опциональная поддержка прокси, на случай если трекер режут у провайдера.

Во-вторых, каталог фильмов через TMDB. Идея была в том, чтобы сделать упрощённый аналог Lampa, только для торрентов и без стриминга. Наверное, это уже лишнее. Но это функция которая нужна была лично мне, а из публичной версии я решил её не вырезать, на случай если кому-то ещё она придётся по душе. Тыкаешь на любой фильм, нажимаешь "Скачать", выбираешь трекер и тебя сразу перекидывает на выдачу файлов по этому трекеру

Ещё одна маленькая, но лично мне нужная вещь: редактор контекстного меню. Изначально в контекстном меню(правый клик по любому торренту в списке) очень много пунктов, и большинство пользователей половиной из них никогда не пользовались. Я добавил возможность оставить в этом контекстном меню только то что нужно именно вам

А что, собственно, дальше?
В приложение уже встроена система автообновлений, так что про новые версии вы узнаете при следующем запуске.
Из ближайшего: разбор багов, которые всплывут после первых установок, и доводка мелочей в интерфейсе, до которых за месяц просто не дошли руки.
Программа полностью бесплатная и опенсорсная. Вся информации, ссылки на исходный код и скачивание доступны на сайте: https://winbittorrent.github.io/
Если найдёте баг или дыру в логике, добро пожаловать в issues на GitHub. А если просто есть мнение по интерфейсу, тоже пишите, любой обратной связи буду рад.
Спасибо за внимание :)
Комментарии (35)

backfield9818
27.07.2026 07:35При изменении и сохранении настроек ругается, что не может, причём ругается даже на те, что не менял. А так вроде приятная прога :)

Kasyan666
27.07.2026 07:35Лично мне в qBittorrent очень не хватает фичи из BitTorrent/μTorrent: связки .torrent-файла и раздачи, чтобы их можно было удалить одновременно, не лазая руками в папку с .torrent-файлами. Но, видимо, для этого нужна дополнительная БД...

zelenin
27.07.2026 07:35там галочка всегда была при удалении

Kasyan666
27.07.2026 07:35Transmission пробовали?
там галочка всегда была при удалении
Спасибо, но всё это касается только удаления раздачи и файлов самой раздачи, но не относящегося к ней исходного .torrent-файла. Я их не удаляю, а храню для восстановления сета раздач в случае сбоя или переноса их на новую ОС. Дело в том, что у меня сотни терабайт активных раздач, на многих из них (особенно, на редких) я стою уже полтора десятка лет.

hurtavy
27.07.2026 07:35вот да, очень не хватает. Пусть бы хоть скидывал .torrent-файлы скачанных раздач в отдельную папку

igrblkv
27.07.2026 07:35Transmission на Debian'е так и работал через web-интерфейс, там было два пункта: "удалить файл", который удалял только раздачу и "удалить файл и торрент", который удалял раздачу и торрент-файл, который где-то на системном диске хранился и не удалялся по-умолчанию (Из-за этого на Дебиане системный диск заполнялся и становилось 0 свободного места). Также или иначе это в Винде работает - не знаю.

hurtavy
27.07.2026 07:35рад за Transmission. Оно и в μTorrent работает, как я описал. Но речь же про qBittorrent

igrblkv
27.07.2026 07:35так можно перейти, если есть нужные функции? или что-то мешает?

Kasyan666
27.07.2026 07:35Можно, спасибо, я подумаю. Как он ведёт себя под постоянной нагрузкой ~250 МБ/сек up 24/7? Ну, и небольшая проблемка: когда я последний раз мигрировал, перехэш всех раздач занял пару недель, сервер "колом" стоял.))) Но, это — мелочи.

Kasyan666
27.07.2026 07:35qBittorrent — скидывает загруженные по папкам.
Проблема в том, что если я, по тем или иным причинам, хочу раздачу полностью удалить, то BitTorrent/μTorrent может удалить саму раздачу + файлы раздачи + исходный .torrent-файл. qBittorrent же может удалить только саму раздачу + файлы раздачи; а исходный .torrent-файл будь добр сам — "ручками". И хорошо, если исходный файл назывался хотя бы примерно, как раздача, а не "OurSuperTracker.com.torrent".

Siemargl
27.07.2026 07:35Давно так умеет.
Не помню только, по ПКМ меню или когда Del на выделенной закачке...

Kasyan666
27.07.2026 07:35Извините, но, хоть убейте — не вижу.

По `Del` — то же меню вызывается. Оба удаляют закачку и могут удалить файлы закачки. Исходный .torrent-файл — не трогают.

Siemargl
27.07.2026 07:35Надо будет поразбираться, может дело в опциях (ишью немного путаное, что то еще и про создание/удаление копий), или у меня таки валяется миллион торрент-файлов

zelenin
27.07.2026 07:35400 мб, 1100+ файлов. это так и должно быть?

kvch Автор
27.07.2026 07:35К сожалению, это минус распространения self-contained WinUI приложений(+ внутри целиком лежит движок qBittorrent со всеми его зависимостями). Позже подумаю что можно с этим сделать

Siemargl
27.07.2026 07:35Вероятно WinUI, как и WinRT - тупиковая ветвь MS - эволюции.
Мне кажется, что подобные утилиты должны быть компактными и не потреблять много памяти. Для этого авторам придется, конечно, потрудиться.

zartarn
27.07.2026 07:35Так то весь новый интерфейс в win11 на winui, даже для winforms выпустили новые контролы. Хотя для кроссплатформенности было бы интереснее AvaloniaUI раз хочется .net
Извиняюсь что всё в одном сообщении.
@kvch частично можно уменьшить при публикации self-contained если включить опцию трим, от версии к версии дотнет она все больше откусывает лишнего. Сейчас же вы просто тащите весь рантайм. Как пример, PowerToys, которые в установщике сделали поиск уже установленного, и вместо распаковки своего, создание линков. https://github.com/microsoft/PowerToys/blob/main/doc/devdocs/disk-usage-footprint.md
Если для сериализации/десериализации использовать сорсгенератор, ну и возможно еще какие то моменты подправить, то скорее всего можно еще и nativeAot включить и еще больше уменьшить размер.

Siemargl
27.07.2026 07:35Так то весь новый интерфейс в win11 на winui
Так вот почему он тормозит!
даже для winforms выпустили новые контролы.
Где? Не наблюдаю
скорее всего можно еще и nativeAot включить и еще больше уменьшить размер
Нет. АОТ и WPF/XAML несовместимы. Upd. То ли выпустили WinUI 3 c AOT, то ли еще сырое по состоянию на 2025г, в релнотах неясно

zartarn
27.07.2026 07:35дауж. что то я прям по всем моментам "мимо кассы"...
Где? Не наблюдаю
Вот тут я искренне удивлен, я прям помню, что видел что то официальное по этой теме. И не реализацию от кого то со стороны. Но сейчас не могу никак найти. Пересмотрел информацию по превью релизам, и там тоже только поддержка DarkMode.
В тг в диалогах своих вижу пару раз упоминание этого, но опять без ссылок %)
АОТ и WPF/XAML несовместимы
и выглядит как будто можно и не ждать в ближайшем будущем. По гитхабу как будто у них там команда маловата.
Трим с горем пополам можно начиная с .net9 сделать, но там больше даже не сам wpf а обходные пути чтоб его не трогало)
WinUI 3 c AOT
Тут я прям погорячился) с AvaloniaUI имел больше дела чем с Winui3 и как то упустил извиду.
Скрытый текст
Так вот почему он тормозит!
Я бы не сказал что прям что то тормозит. На мой субъективный взгляд, много где добавили асинхронную загрузку с ранней отрисовкой того что относится к бэкграунду что и создает эффект такое не самый приятный эффект. Когда смотрел, получалось что там где в Win11 получаем данную анимацию, то в вин10, первые доли секунд просто ничего нет а потом разом появляется такое же контекстное меню, и в сумме по времени +/- то на то и выходит.
На ноуте 11, и прям каких то проблем не заметил, которые бы вызывали прям дискомфорт. С пересмотром стиля и тд, она в плане гуи воспринимается как то более целостно чем та же 10.

Siemargl
27.07.2026 07:35Я бы не сказал что прям что то тормозит.
Ну да, скорее мелкое подлагивание. На N4000 заметно, на нормальных ЦПУ скорее всего малозаметно.
Та же история, когда интерфейс VS на WPF переписали (версия 2008 вроде). Вроде и ничего, но дискомфорт.

Grey83
27.07.2026 07:35Во-первых, поиск раздач прямо в приложении
В qBittorrent давно (если вообще не с самого начала, но я им всего лишь несколько лет пользуюсь, после ухода с засраного рекламой μTorrent’а) есть встроенный поисковик. Трекеры в поиск добавляются через плагины: https://github.com/qbittorrent/search-plugins/wiki/Unofficial-search-plugins

Grif1488
27.07.2026 07:35внизу на панели где "общие", "трекер" и тд на вкладке общие не хватает ссылки на раздачу, с которой был скачан торрент файл

Kenya-West
27.07.2026 07:35Пока что натянул старенькую шкурку
fluent-dark-no-mica_3.qbtheme, с ней выглядит чуть поприличнее:
QBitTorrent с темой Fluent Ваша разработка мне понравилась. Если будет почти мгновенно синхронизироваться с апстримом и не задет движок парсинга RSS, то надо бы к вам смигрировать.

kvch Автор
27.07.2026 07:35Ничего себе, даже не знал что такая тема есть!)
и не задет движок парсинга RSS
Насчёт RSS, я сам этой функцией почти не пользуюсь поэтому могут быть баги которые я не увидел. Если что-то такое найдётся, или просто будут предложения по улучшению - обязательно пишите мне лично или в Issues в гитхабе :)

Grey83
27.07.2026 07:35Ничего себе, даже не знал что такая тема есть!)
Можно же в форках вот этого репозитория покопаться: https://github.com/witalihirsch/qBitTorrent-fluent-theme
Да и вообще есть даже отдельная страница со списком разных тем: https://github.com/qbittorrent/wiki/blob/master/List-of-known-qBittorrent-themes.md Можно посмотреть репозитории по ссылкам и заглянуть в форки наиболее понравившихся.

maxcat
27.07.2026 07:35А чего автобнобновление в программе, а не через стор?
Это из-за поиска по трекерам?
Лет 10 назад FS Client через стор обновлялся, хотя там был поиск по кинотеатрам

maxcat
27.07.2026 07:35Почему было не сделать целиком на управляемом коде?
Есть ведь библиотеки торрент клиентов целиком на dotnet.
Да, qb уже десятки лет тестируют и развивают.
Но ведь разрабатывать, отлаживать и поставлять проще, то что целиком на управляемом коде.



playboy_progrmmer
5 минут полёт нормальный, вроде работает. UI хороший