воскресенье, 29 марта 2009 г.

Flush 0.4 released (GTK-based BitTorrent клиент)

Несколько месяцев назад я писал о выходе первой (0.1) версии своего BitTorrent клиента. С тех пор Flush дорос до версии 0.4. Т. к. первую версию, скорее всего, поставить решится далеко не каждый, да и в ней могло не быть каких-либо функций, отсутствие которых помешало бы использовать Flush, я решил, что настало время еще раз напомнить о существовании данного BitTorrent клиента. Я использую его с первой версии и сделал таким, каким, как я считаю, должен быть BitTorrent клиент. Если ваши предпочтения совпадают с моими, то, возможно, он вам придется по душе.

Причины, которые заставили меня написать собственный BitTorrent клиент, я изложил здесь, так что повторяться не буду. Думаю, лучше всего будет привести список изменений по сравнению с Flush 0.1 и скриншоты, которые зачастую могут сказать гораздо больше, чем любой Changelog. :)

Основные изменения (с полным списком изменений можно ознакомиться, почитав Changelog):
  • Создание собственных торрентов;
  • Переименование как самого торрента, так и его файлов при добавлении;
  • Поддержка не-UTF-8 локалей (Т. к. libtorrent поддерживает только локаль UTF-8, то в первых версиях клиент мог корректно работать только ней. В более поздних версиях мне удалось "обмануть" libtorrent и заставить его работать с другими локалями.);
  • Вкладка "Детали", отображающая информацию о выбранном в данный момент торренте.
  • Вкладка "Опции", в которой можно изменить список трекеров торрента и включить режим последовательного скачивания (в данном режиме скачивание частей торрента происходит не вразнобой, а последовательно, начиная с первых байтов и заканчивая последними).
  • Включение/отключение DHT и восстановление при запуске прошлой DHT сессии.
  • Включение/отключение LSD, Peer exchange, UPnP, NAT-PMP и Smart ban.
  • Возможность задания приоритета на скачивание каждого файла торрента.
  • Пакет с исходными текстами теперь поставляется в двух версиях: обычной и bundle. Bundle отличается от обычной тем, что включает в себя библиотеки libconfig и libtorrent для статической линковки. Это сделано для упрощения компиляции на тех дистрибутивах, которые не содержат данных библиотек.
  • Статистика по текущей сессии и за все время.
  • Возможность задания команды, которая будет использоваться для открытия файлов торрента.

Скриншоты:


Как и раньше, исходники и deb пакеты для Ubuntu-8.10-i386 и Ubuntu-8.10-x86-64 можно скачать здесь: http://sourceforge.net/projects/flush/.

101 комментарий:

Ahmad Nizar Hidayat комментирует...

hai, it is my blog walking, i think u are expert on programing. I know a little about c++ and c. Thank u

Анонимный комментирует...

Поздравляю :) У вас получился QBittorrent на GTK :) Тоже вариант.

antage комментирует...

У вас в пакете для убунты, стоит зависимость на пакет libconfigduo++8, который не существует в репозитории убунты.

Конищев Дмитрий комментирует...

> У вас в пакете для убунты, стоит зависимость на пакет libconfigduo++8, который не существует в репозитории убунты.

antage, его можно скачать здесь, перейдя по ссылке libconfig. Если же у вас нет желания возиться с пакетами, то можете просто поставить flush_0.4_bundle_ubuntu_8.10_i386.deb - в bundle-версии исполняемый файл статически слинкован с libconfig и libtorrent .

P.S.: Предвидя вопрос "Почему пакет, содержащий libconfig, называется libconfigduo?", отвечаю: в репозитории Ubuntu уже существует пакет libconfig, который содержит совсем другую библиотеку. Тот libconfig, который использую я, обычно при сборке пакетов именуют как libconfigduo, поэтому я назвал его именно так.

cryptomancer_ комментирует...

Скажите пожалуйста, по каким источникам Вы учитесь GTK ? Сам пишу одну интересную утилиту, очень трудно приходится с GUI.

antage комментирует...

Спасибо, разобрался.

А не хотите все пакеты для убунту разместить в PPA на launchpad.net? Было бы удобнее следить за новыми версиями, просто добавив ваш PPA в sources.list

antage комментирует...

Кстати, а куда слать багрепорты?

halturin комментирует...

я полагаю куда-то сюда
http://sourceforge.net/projects/flush/
в раздел public?

автору - отлично!!! так держать!

Анонимный комментирует...

Дмитрий, как там с D-Bus дела..? В общем, в продолжение старого вопроса: есть севрер 24/7 Ubuntu 8.04.2, типа антрисольный, без Х севрера. Также есть Desktop под управлением Ubuntu 8.10. Хотелось бы, иногда заходить на севрер и управлять BitTorrent клиентом, из консоли, а также хотелось бы иногда через GUI управлять им с Desktop. Я так понимаю, что пока с нынешним состоянием D-Bus такое не возможно..?

Анонимный комментирует...

D-BUS позволяет работать в том числе через сеть, он ведь и задумывался с учётом этого.

Вообще, конечно, D-BUS интерфейс для такой вещи, как торрент-клиент это Must Have.

Анонимный комментирует...

Ах... если бы ты ещё сделал потдержку SOCK5 прокси... то цены бы небыло торрент-клиенту!

amarao-san комментирует...

Интересно. А поддержка RSS планируется? Или хотя бы каталог для "подхвата" torrent-файлов?

Если так, прощай deluge (тормозной), здравствуй C++.

Сергей комментирует...

Судя по скринам не хватает того, чтобы открывался наутилус при выборе куда сохранить файл. А так &#151 пошёл ставить :)

Анонимный комментирует...

молодец!!!

Анонимный комментирует...

terminate called after throwing an instance of 'libconfig::SettingTypeException'
what(): SettingTypeException
Aborted

flush_0.4_bundle_ubuntu_8.10_amd64.deb на Debian Lenny и так постоянно падает

Конищев Дмитрий комментирует...

> Скажите пожалуйста, по каким источникам Вы учитесь GTK ? Сам пишу одну интересную утилиту, очень трудно приходится с GUI.
cryptomancer_, ммм... Да вроде бы и не по каким. В самом начале прочитал GTK+ 2.0 Tutorial, а потом только при необходимости использовал GTK+ Reference Manual и программы gtk-demo и gtkmm-demo. gtk-demo и gtkmm-demo действительно очень могут помочь, т. к. в Reference Manual обычно примеров не встречается.

По началу было тоже не очень понятно, особенно потому, что это был мой первый опыт работы с GUI. Правда, мне еще повезло, что с GTK я начал работать на работе, так что дома мне потребовалось время только на освоение gtkmm.

Лучше всего, на мой взгляд, прочитать сначала GTK+ 2.0 Tutorial, а дальше сразу начинать писать программу: создали окно, добавили пару боксов, смотрите, что вам нужно дальше - TreeView. Ага, запускаете gtk-demo, ищете пример, в котором используется TreeView, и пытаетесь по аналогии построить собственный и т. д. Ну а дальше постепенно придет понимание, благо большинство виджетов имеют много общего.

Конищев Дмитрий комментирует...

> А не хотите все пакеты для убунту разместить в PPA на launchpad.net? Было бы удобнее следить за новыми версиями, просто добавив ваш PPA в sources.list
После обсуждения на Хабрахабре как раз задумался над этим. В свободное время сделаю.

> Кстати, а куда слать багрепорты?
Если почта устраивает, то можно туда. Думаю, создавать список рассылки пока что не имеет смысла.

> Дмитрий, как там с D-Bus дела..?
Пока что так же как и раньше. :( http://habrahabr.ru/blogs/linux/55809/#comment_1496267

> Я так понимаю, что пока с нынешним состоянием D-Bus такое не возможно..?
На данном этапе DBus пока что используется только для определения, запущена ли уже копия Flush с требуемым конфигом, и для пересылки ей опций командной строки, когда вы при уже запущенной копии Flush набираете в терминале что-то вроде:
flush --download-rate-limit=100 some.torrent

> Ах... если бы ты ещё сделал поддержку SOCK5 прокси... то цены бы небыло торрент-клиенту!
А вы пробовали работать через прокси в Deluge? Как он работает, нормально? Если да, то, в принципе, особых сложностей здесь нету - только сказать libtorrent, чтобы он работал через прокси. Помню как еще в самом начале пробовал в Deluge работать через фиктивный прокси (которого на самом деле не было) - так он несмотря на мои настройки все равно шел напрямую в сеть, не используя указанный мной прокси. В итоге я тогда посчитал, что пока что поддержка прокси в libtorrent сыровата, и решил повременить с включением подобного функционала во Flush.

> Интересно. А поддержка RSS планируется? Или хотя бы каталог для "подхвата" torrent-файлов?
Ну, каталог для "подхвата" вполне можно реализовать. С RSS возни, конечно, по-больше. Мне вот просто интересно, а что вы такого по RSS качаете? Ведь большинство трекеров закрытые, и по RSS ничего не получишь.

> Судя по скринам не хватает того, чтобы открывался наутилус при выборе куда сохранить файл.
Если я вас правильно понял, то "наутилус" открывается, просто этого на скринах не видно.

> flush_0.4_bundle_ubuntu_8.10_amd64.deb на Debian Lenny и так постоянно падает
Вот здесь я уже предоставил решение данной проблемы.

eReS@gmail.com комментирует...

Спасибо за Flush :) Ваш проєкт уже немало достиг, и я верю что он будет лучшим!
Пол дня ждал вашего ответа о GTK+ 2.0 Tutorial, спасибо))

drwolfik комментирует...

Отличная прога !
А на Мак портировать не собираетесь? Его бы много кто юзал.

Vitaly комментирует...

>А вы пробовали работать через прокси >в Deluge? Как он работает, нормально?

Deluge версии 0.9.XXX работае с прокси наура. А вот с выходом 1.XXX, действительно, ему этот прокси "как шло так и ехало" :(

КАК так получается - ума не приложу... но через утилиты аля proxychains Оно тоже не работает...

Анонимный комментирует...

Работу через socks5 можно посмотреть у qbittorrent (там же тот же libtorrent).
В версии 1.3.2 socks5 отлично работает как с торрент-сервером так и с peer-2-peer.

Анонимный комментирует...

В общем ждём реализации клиент/серверной части. Ибо уже охото с нетбуком лежать на кровати и смотреть по sshfs кино загруженное через торрент на сервер. Можно Web как уже предлагали, тогда вообще будет платформо независимое.

amarao-san комментирует...

> Мне вот просто интересно, а что вы такого по RSS качаете? Ведь большинство трекеров закрытые, и по RSS ничего не получишь.

У анимешников все трекеры открыты:
http://tokyotosho.com/rss_customize.php

http://www.animesuki.com/rss.php

Да и для телешоу тоже такое есть:
http://tvrss.net/feed/eztv/

А торрент и rss вместе позволяют иметь на винте все новые вещи в автомате. Так жили c мюторрентом, так живём с deluge.

Если flush заживёт в дебиане и будет уметь (хотя бы похватывать торренты из каталога) - то это будет оно.

binarin комментирует...

На debian testing не запускается, просто висит. По strace - на poll() к 2-м каким-то пайпам, d-bus'у и X11. Что делать?

Конищев Дмитрий комментирует...

> А на Мак портировать не собираетесь? Его бы много кто юзал.
Нет, пока точно не собираюсь.


> На debian testing не запускается, просто висит. По strace - на poll() к 2-м каким-то пайпам, d-bus'у и X11. Что делать?

Ну, на основе этого довольно сложно что-нибудь сказать. Можете попробовать запустить через dbus-launch flush, либо посмотреть в отладчике, что там происходит.

P.S.: А у вас какой оконный менеджер? По умолчанию Flush сворачивается в трей. Ваш оконный менеджер поддерживает трей? Может быть, вы его просто не видите? :)

Конищев Дмитрий комментирует...

Сделал SVN и репозиторий для Ubuntu.

Dr.AKULAvich комментирует...

Спасибо за Flush и отдельно за репозиторий для Ubuntu. У меня вопрос по поводу cron'а (переменная display указана). Так как же правильно прописать flush в crontab, чтобы не было ругани на dbus?

Конищев Дмитрий комментирует...

> Спасибо за Flush и отдельно за репозиторий для Ubuntu. У меня вопрос по поводу cron'а (переменная display указана). Так как же правильно прописать flush в crontab, чтобы не было ругани на dbus?

Как же мне уже надоел этот DBus. =) Я уже жалею, что начал его использовать. Для десктопных приложений, запускаемых в единственном экземпляре он является, пожалуй, очень неплохим решением, но вот когда приложения требуется запускать с различными конфигами + еще и из консоли...

А если по делу, то попробуйте запустить без DISPLAY. При разработке я исходил из предположения, что если опции командной строки передаются Flush из консоли, то переменной DISPLAY быть не должно.

muhas комментирует...

$flush
Ошибка DBus.
Failed to execute dbus-launch to autolaunch D-Bus session

$dbus-launch flush
и тишина, и мертвые с косамы стоят

Конищев Дмитрий комментирует...

muhas, по тому, что вы написали, довольно сложно что-либо сказать. Нужно смотреть на уровне кода, что там происходит.

Вообщем в DBus как в универсальном средстве RPC я разочаровался (и судя по некоторым отзывам на формах не я один). В следующих версиях сменю на какой-нибудь Ice или сокеты домена UNIX. Вообщем буду экспериментировать.

Cucumber комментирует...

Большое спасибо! Наконец-то толковый клиент под гном

vanoc комментирует...

в общем вот такой вот непонятный и не приятный для меня момент

http://www.10pix.ru/img1/4120/67051.png

Скачано всего 1146 мб (похоже реальная цифра ибо качало весь день) и 612 мб из того, что нужно скачало. Как такое вообще возможно при 203 мб избыточных данных? И вообще не понятно почему столько избыточных и куда еще недостающих 300 мб делось. Странно все это.

Конищев Дмитрий комментирует...

vanoc, да довольно неприятные цифры. Но, к сожалению, тут я уже вряд ли чем-нибудь смогу помочь, т. к. эти цифры получаю от libtorrent, который всем этим добром занимается - я же только отображаю то, что он мне выдает. Разве что отправить багрепорт разработчику, если такое повторится.

Вообще, учитывая количество желающих сейчас скачать Ubuntu 9.04 и ваше не очень быстрое соединение, такое количество избыточных данных, возможно, и не является чем-то экстраординарным - не знаю, libtorrent не я писал. :)

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

binarin комментирует...

Про непонятное висение под дебианом - оно действительно сворачивалось в отсутствующий трей =)

brat3 комментирует...

большое спасибо, отличный клиент!
только очень не хватает возможности перепроверки хеша, иногда полезна фича эта бывает.

Конищев Дмитрий комментирует...

brat3, ок, посмотрю, насколько хорошо реализована функция force_recheck() в libtorrent - если нормально, то добавлю в версии 0.6.

Станислав Збарасский комментирует...

Привет! Я пользуюсь твоей программой, спасибо за неё, она мне вполне заменила KTorrent (я на кубунте 9.04), который после одного из апдейтов просто замораживался после пары минут работы. Но у меня вопрос по поводу твоей программы:

~$ pgrep flush
207
208
~$ killall flush
flush: процесс не убит
~$ sudo kill -9 207
[sudo] password:
~$
~$ sudo kill -9 208
~$
~$ pgrep flush
207
208

Почему флаш не прибивается по килл -9?
Почему такие странно маленькие PID'ы?
Как прибить флаш, если надо?

Зачем надо? Флаш, как правило, не запускается с первого раза, поэтому, в случае нестарта, когда программа повисит с полминуты на панели задач и в трее, а потом исчезает, я хотел бы прибить её из консоли, а потом запускать, чтобы хвостов в памяти не сидело лишних. Так вот, если программа запущена впервые после загрузки компа, у неё такой странный PID (удивительно небольшая цифра к тому же в двух экзмемплярах) и она нормально загружается только если не прибивать эти PID'ы, а запустить поверх них ещё раз, тогда к тем PID'ам добавляется новый.

~$ pgrep flush
207
208
15906

Конищев Дмитрий комментирует...

Станислав Збарасский, pgrep, насколько я знаю - это аналог `ps aux | grep ...`, а это значит, что он отображает PID'ы не только тех процессов, имя которых соответствует указанному имени, но и PID'ы процессов, в имени которых присутствует данная строка. Поэтому, скорее всего, эти процессы с маленькими PID'ами - системные демоны, запускаемые при старте системы, в имени которых присутствует слово flush.

Соответственно, killall flush ничего не делает, т. к. нет процесса с именем flush, а есть какой-нибудь системный "что-то-там-flush-daemon" (например).

Посмотри, что выдает вызов ps aux - тогда сразу станет ясно, что это за PID'ы.

А когда Flush не запускается с первого раза, что он говорит?

Masaki комментирует...

А планируются ли панель с кнопками Добавить Удалить Старт\пауза и т.п.? Этого очееееень не хватает :)

Masaki комментирует...

И какого-нибудь деления торренты на активные, скачиваемые, раздаваемые и т.п. очень не хватает. Когда много торрентов, не хватает еще больше ;)

Хотя бы значки по принципу делюжа переделать (цветоиндикация).

Конищев Дмитрий комментирует...

> А планируются ли панель с кнопками Добавить Удалить Старт\пауза и т.п.? Этого очееееень не хватает :)Да, панель инструментов в SVN'е уже есть.

> И какого-нибудь деления торренты на активные, скачиваемые, раздаваемые и т.п. очень не хватает. Когда много торрентов, не хватает еще больше ;)Разве что только в версии 0.6. Если все пойдет нормально, то, думаю, через пару дней сделаю последний для текущей версии коммит в SVN, неделю поработаю и, если не замечу никаких ошибок, переименую trunk в версию 0.5.

> Хотя бы значки по принципу делюжа переделать (цветоиндикация).А вот это - ладно, в версию 0.5 добавлю.

Masaki комментирует...
Этот комментарий был удален автором.
Masaki комментирует...

Есть немного предложений у меня :)

1. Панель "Файл Правка Торренты Помощь" сделать "Торренты Правка Помощь" В пункте Торренты будет (внимание, такой порядок удобнее, имхо) "Добавить Создать Возобновить Приостановить Выход"

2. Панель со всякими индикаторами, как-то название файла, прогресс бар и т.п. по умолчанию должна выглядеть компактнее, т.е. оставить самое нужное, а остальные пункты каждый на свой вкус подключит. Пример в мокапе.

3. В этой же панели Завершено % и Прогрессбар дублируют друг друга о.О

4. Идея по разделению торрентов по статусу кнопками слева (см. мокап):

Зеленый - скачиваемые;
Синий - раздаваемые;
Желтый - приостановленные;
Серый - на очереди;
Разноцветный - все.

Сам мокап http://picasaweb.google.com/lh/photo/DhyIP5D-KGF9ui-41hqVwA?feat=directlink

Masaki комментирует...

На скрине, слева от названия торрента забыл перевернуть синий значок :)

О, еще вспомнил, почему бы скорость выше 1024 байт в кб не указывать?

Конищев Дмитрий комментирует...

> Панель "Файл Правка Торренты Помощь" сделать "Торренты Правка Помощь" В пункте Торренты будет (внимание, такой порядок удобнее, имхо) "Добавить Создать Возобновить Приостановить Выход"Меню "Файл" и элементы "Создать", "Открыть" и "Выход" в нем являются общепризнанным стандартом для всех приложений и нарушать его не стоит.

> Завершено % и Прогрессбар дублируют друг другаНе совсем. :) Прогрессбар сортируется по названиям статусов торрентов, а "Завершено %" - по процентам. Хотя после выхода версии 0.5, в которой появилась колонка с изображениями статусов, по которой тоже можно сортировать, наверное имеет смысл слить их в одну колонку.

> Идея по разделению торрентов по статусу кнопками слеваДа, думаю, надо будет сделать что-то вроде этого. Разве что только не уверен, достаточно ли цветового различия - возможно, стоит все-таки сделать более или менее разные изображения для каждого статуса.

> О, еще вспомнил, почему бы скорость выше 1024 байт в кб не указывать?Ну вот возьмем, к примеру, размер в 3443 Мб (скорости преобразовываются в строку точно также, но с добавлением суффикса "/с"). Его можно записать следующим образом:
* 3 Гб - слишком коротко. Даже и не рассматриваем такой вариант.
* 3.4 Гб - погрешность такого представления составляет 100 Мб. Если, к примеру, пользователь поставит на закачку торрент в 3443 Мб, уйдет на несколько часов, потом придет и увидит, что клиент отображает скачанных 3.4 Гб, то он решит, что осталось совсем чуть-чуть и сядет ждать, пока торрент докачается до конца, и лишь через несколько минут поймет, что "попался в ловушку" погрешности представления данных, и на самом деле сейчас скачано только 3350 Мб, и оставшиеся 93 Мб на его медленном соединении будут скачиваться довольно долго (для случая, если использовать округление в большую сторону, в случае же простого отбрасывания лишних цифр пользователь наоборот пойдет гулять еще час, хотя торрент на самом деле уже будет готов через минуту).
* 3.44 Мб - лучше, но человеку гораздо удобнее воспринимать целые числа, а не числа с 2 цифрами после запятой.
* 3443 Мб - наиболее оптимальное представление, которое занимает столько же места, как и предыдущее (в случае моноширинного шрифта), но при этом легче воспринимается и имеет большую точность.

Masaki комментирует...

Я именно про байты и килобайты, а не мегабайты сократить до гигабайтов, очень непривычно видеть скорость скачивания или раздачи 3304 байт\с или что-нибудь подобное.

А про порядок создать и открыть, лично я и все мои други\знакомые _очень_ редко, (или никогда) пользуются кнопкой Cоздать. Потребителей больше, как ни крути.

Про меню Торрент логичнее, т.к. в торрент-клиенте файл и есть торрент. Говорю, что так удобнее с оглядкой на трансмиссию ;)

Спасибо, за новую версию :)

Кстати, иконки уж больно карамельные, имхо.

Masaki комментирует...

Хотя, с появление Панели отпала потребность лезть в меню Файл и порядок неважен.
Меню как-то не нужно совсем стало, вот тебе и стандарт общепризнанный. Надо исходить из ситуации.

svental комментирует...

Добрый день

у меня не собирается dbus-c++

http://pastebin.com/m1dcbb1cd

что делать?

Конищев Дмитрий комментирует...

> Я именно про байты и килобайты, а не мегабайты сократить до гигабайтов, очень непривычно видеть скорость скачивания или раздачи 3304 байт\с или что-нибудь подобное.
Ммм... Да, возможно, здесь я с вами соглашусь...

> Кстати, иконки уж больно карамельные, имхо.
Может быть, хотя по мне и так нормально... Я же программист, а не художник - какие нашел, такие и вставил. :)

> у меня не собирается dbus-c++
Заметил у вас строчку
> Entering directory `/home/sly/dbus-c++-git/src/dbus-c++-build'
А зачем вы его отдельно собираете? Он же включен в дистрибутив Flush. Хотя, конечно, все равно странно - вы первый, кто жалуется на сборку dbus-c++. Скомпилируйте его с флагом -g, чтобы он хотя бы строки показал, в которых возникает ошибка, и посмотрите, на что конкретно он в них ругается - может быть, у вас установлены слишком старые (новые) версии каких-то библиотек, под которыми автор dbus-c++ не тестировал свою библиотеку.

Анонимный комментирует...

Спасибо за flush,
после того, как deluge превратился в непонятно что, я перешел на flush.

brat3 комментирует...

> Я же программист, а не художник - какие нашел, такие и вставил. :)

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

есть пожелание, в информации о торренте что-то типа torrent status. чтобы не лезть в лог, чтобы посмотреть, есть я на раздаче, или что-то пошло не так.

Конищев Дмитрий комментирует...

brat3, хорошо, посмотрю, насколько реально получить адекватную информацию о статусе трекера от libtorrent.

Sciamano комментирует...

Hi!
I'm trying to compile it for Ubuntu Hardy, but I'm encountering problems. Is it possible to make it work on Hardy or not?
Thanks!

Eugene комментирует...

Планируется ли выпуск Флаша под другие Линухи? Меня интересует Mandriva 2009.1 под GNOME...

Конищев Дмитрий комментирует...

> I'm trying to compile it for Ubuntu Hardy, but I'm encountering problems. Is it possible to make it work on Hardy or not?
Yes, it is possible. I answered you by email.

> Планируется ли выпуск Флаша под другие Линухи? Меня интересует Mandriva 2009.1 под GNOME...
Насколько я знаю, для Мандривы что-то наподобие Launchpad'а еще не изобрели? Если нет, то тогда вряд ли - уж больно много времени это займет: если собирать под какой-нибудь дистрибутив, то нужно как минимум поддерживать две последние версии дистрибутива + архитектуры i386 и amd64 - получается по 4 сборки на каждый дистрибутив, т. е. 4 виртуальных машины, на которые надо установить эти дистрибутивы и при каждой сборке разворачивать минимальное окружение. Вообщем, уж лучше я это время потрачу на написание кода, чем буду пытаться угодить всем и вся, компилируя под различные дистрибутивы (а ведь после компиляции еще и потестить надо :)). В конце концов, Linux - это не Windows, и если кому надо, тот сам соберет из исходников, а если исходники не устраивают, завернет все это дело в пакет.

Sciamano комментирует...

Hi Dmitry!
I've sent you an email, but I thought that this might be of interest to others to...

I've used the patch you sent me, and it seems Flush compiled correctly. But when I launch it, I get this error:

"[DBus error] Failed to execute dbus-launch to autolaunch D-Bus session"

Any suggestions? I'm puzzled...
Thanks!

Конищев Дмитрий комментирует...

Sciamano, sorry, your email was marked as spam, and I was not see it.
> "[DBus error] Failed to execute dbus-launch to autolaunch D-Bus session"
It seems that your Xsession does not start DBus Session Bus via dbus-launch, as it is in the Hardy and Jaunty. I already notice somewhere in my blog that I am disappointed in DBus and I plan to change it to something other in the future, but now Flush requires DBus Session Bus being launched.

I am not familiar in the Xorg, but I suppose that if you find your Window Manager in the /usr/share/xsessions/ and change in its *.desktop file line like
>Exec=/usr/bin/icewm-session
to the line
>Exec=dbus-launch /usr/bin/icewm-session
that it will work. But I am not ensure that.

Конищев Дмитрий комментирует...

I have installed the Ubuntu Hardy on a virtual machine. Flush works on it under the Gnome "out of the box". Under the IceWM I got the same error as you.

I created such script:
#!/bin/bash
/usr/bin/dbus-launch /usr/bin/icewm-session


gave it executable permissions and changed in the /usr/share/xsessions/IceWM.desktop line
Exec=/usr/bin/icewm-session
to
Exec=ABSOLUTE_PATH_TO_THIS_SCRIPT

And now it works.

Sciamano комментирует...

Hi Dmitry,
I forgot to mention that I'm actually using Kubuntu...

Anyway I tried your suggestion, and created the script that launches /usr/bin/dbus-launch /usr/bin/startkde (as required by KDE) but I still get errors:

The first time I launch flush I get:
"[DBus error] Failed to execute dbus-launch to autolaunch D-Bus session" (same as before).

If I launch it again, I get:
"Creating Flush session failed. Can't get DBus session bus address."

I really would love to make flush work. :-(

Masaki комментирует...

Привет, идея по интерфейсу, вместо нулей ставить прочерки "-", а то лишний информационный шум эти нули. Реально надо видеть ноль только в ratio.

И по функционалу, вещь, которую я только в рторренте видел, следить за папками и брать из них торренты и загружать в _разные_ места. Сейчас во флаше можно поставить только одну папку для слежения и одну для загрузки.

Конищев Дмитрий комментирует...

Sciamano, Ok, I installed Kubuntu 8.04. Yeah, it is not so simple with KDE... But after some time of experiments I added in /usr/bin/startkde after line
> export KDE_SESION_UID
the following lines
> # Make sure that D-Bus is running
> if test -z "$XDG_DATA_DIRS"; then
> XDG_DATA_DIRS="`kde4-config --prefix`/share:/usr/share:/usr/local/share"
> export XDG_DATA_DIRS
> fi
> # D-Bus autolaunch is broken
> if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
> eval `dbus-launch --sh-syntax --exit-with-session`
> fi
> if qdbus >/dev/null 2>/dev/null; then
> : # ok
> else
> echo 'startkde: Could not start D-Bus. Check your installation.' 1>&2
> xmessage -geometry 500x100 "Could not start D-Bus. Check your installation."
> fi


After that Flush is work.

Masaki, привет. По поводу нулей - в 0.5 можно в настройках отключить отображение нулевых значений.

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

Sciamano комментирует...

Yes!! Now it works!
Thanks!! (Very complicated though!)

Sciamano комментирует...

Wow!! Flush is awesome!
You really should make debs for Hardy too! :-)

Конищев Дмитрий комментирует...

> Yes!! Now it works!
I am very glad. :)

> Very complicated though!
But in the Ubuntu Jaunty DBus Session Bus starts by the same way. So, I think that this is the right way.

> You really should make debs for Hardy too! :-)
OK, I will do this.

Sciamano комментирует...

Wow! Thanks a million!
Anyway, just wanted to let you know that in my tests, I download the same torrent with Flush and Deluge, and Flush was 5 times faster.

Конищев Дмитрий комментирует...

> You really should make debs for Hardy too! :-)
Done.

Sciamano комментирует...

Just installed v0.6 from the launchpad PPA (for Hardy), and everything went fine.
Thanks again Dmitry!

Анонимный комментирует...

Зделай пожалуйста пакет для debian testing

Конищев Дмитрий комментирует...

> Зделай пожалуйста пакет для debian testing

Сделал бы, но launchpad.net разрешает собирать только под Ubuntu. Разворачивать все это хозяйство у себя, честно говоря, не хочется.

В свободное время попробую взглянуть на http://opensuse.org/Build_Service - насколько я понял, здесь можно собирать сразу под несколько дистрибутивов, но ничего не обещаю.

cray комментирует...

ipfilter поддерживается?

Конищев Дмитрий комментирует...

> ipfilter поддерживается?
Да.

Анонимный комментирует...

Здравствуйте Конищев Дмитрий, мне понравился Flush своей лёгкостью и функциональностью, но очень не хватает функции отключения компьютера при завершении загрузок (как в utorrent под Windows). Возможно ли это реализовать в будущих версиях Flush?

Конищев Дмитрий комментирует...

Анонимный, ничего невозможного не существует. :) Напишу в TODO, а там уж как руки дойдут. Правда, так уж получилось, что у меня до Flush'а уже два месяца руки не доходят... :( Надеюсь, что это продлится еще не долго.

raven128 комментирует...

с некоторого неидентифицируемого момента flush перестал запускаться. при вызове через консоль показывает следующее:
(flush:12399): libglade-WARNING **: unknown property `orientation' for class `gtkmm__GtkVBox'

(flush:12399): libglade-WARNING **: unknown property `orientation' for class `gtkmm__GtkVBox'
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr
Aborted

ОС Ubuntu 8.10 x64

Конищев Дмитрий комментирует...

Поставил на виртуальную машину Ubuntu 8.10 x86-64 и Flush 0.7.1 из моего репозитория - все работает нормально. Видимо, ошибка возникает только при определенной комбинации опций в конфигурационных файлах или при загрузке определенного торрента. В таком случае мне понадобится ваша помощь. :)

Скачайте последнюю версию (файл flush-0.7.1-bundle.tar.bz2) и соберите ее из исходников, при помощи следующих команд:
$ tar -xjf flush-0.7.1-bundle.tar.bz2
$ cd flush-0.7.1
$ ./configure --enable-debug-mode CFLAGS='-g -O0' CXXFLAGS='-g -O0' --prefix="$(pwd)"/install && make && make install && make clean

Затем выполните команду
$ ulimit -c unlimited; MALLOC_CHECK_=3 ./install/bin/flush
Если при этом Flush у вас упадет, то он создаст файл ~/.flush/core, содержащий отладочную информацию, позволяющую определить, какая именно инструкция в программе вызвала ее падение.

"Закатайте" в архив все файлы текущей директории, конфигурационные файлы и файл core:
$ tar -cjf ../flush_with_bug.tar.bz2 "$(pwd)" ~/.flush
и отошлите мне его на e-mail. Надеюсь, данная информация поможет мне найти ошибку.

Заранее благодарен. :)

WTakET комментирует...

Flush 0.7.1
Говорит: "W: Создание сессии Flush завершилось неудачей. Не удалось получить адрес DBus сессии."
Не подскажите что может быть?
p.s.
wtaket@debian:~$ ps aux | grep dbus
103 2375 0.0 0.0 2660 1016 ? Ss 08:59 0:00 /usr/bin/dbus-daemon --system
wtaket 3871 0.0 0.0 3308 708 pts/2 S 09:14 0:00 dbus-launch --autolaunch 84b222281d7df2f2dee8563b4a1a9bf2 --binary-syntax --close-stderr
wtaket 3872 0.0 0.0 2660 804 ? Ss 09:14 0:00 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session

Конищев Дмитрий комментирует...

WTakET, а
> env | grep DBUS_SESSION_BUS_ADDRESS
что-нибудь выдает?

Почитайте посты выше - подобная проблема уже была, и, возможно, представленное в них решение вам тоже подойдет.

WTakET комментирует...

ну, в общем то, да - dbus-launch flush, помогло.
А вот вопрос по работе клиента:
работает ли Flush сразу с двумя трекерами? То есть, например, есть торрент с двумя трекерами, "обычные" клиенты подключаются к первому трекеру, если список пиров получен, то работают с ним, иначе, подключаются ко второму. Объясняется это тем, что спеки протокола запрещают одновременный анонс к нескольким трекерам, в тоже время, клиент (uTorrent) под альтернативную ось умеет это делать. А интиресуюсь я этим потому, что провайдеры последнее время стали делать локальные ретрекеры к популярным трекерам (например torrents.ru), так вот мы (пользователи *nix-систем) остаёмся как-бы неудел.

Конищев Дмитрий комментирует...

WTakET, Flush использует libtorrent-rasterbar, а она, в свою очередь, действует по описанным вами правилам. Так что - нет, не работает. Если вам это действительно необходимо, можете попробовать написать автору в список рассылки - кто знает, может быть, он реализует подобный функционал.

Смирнов комментирует...

dbus-launch /usr/local/bin/flush
E: [[Неверная кодировка]]

Отладочная информация:
Flush 0.7.2.
Ошибка произошла в: fs_watcher.cpp:149.

Настройки локали:
LANG=ru_RU.UTF-8
LC_CTYPE=
LC_NUMERIC=
LC_TIME=
LC_COLLATE=C
LC_MONETARY=
LC_MESSAGES=
LC_PAPER=
LC_NAME=
LC_ADDRESS=
LC_TELEPHONE=
LC_MEASUREMENT=
LC_IDENTIFICATION=
LC_ALL=

Скомпилирован с поддержкой национальных языков.

из за чего это может быть?
из под рута все запускается....

Конищев Дмитрий комментирует...

Смирнов, во первых, почему у вас такая странная локаль? Строка "E: [[Неверная кодировка]]" говорит о том, что Glib'овский g_get_charset() не смог по предоставленным вами данным определить текущую кодировку локали. Вообще, хорошим тоном считается устанавливать все LC_* переменные или хотя бы LC_ALL. А если конкретно по ошибке, то Flush'у не удалось создать экземпляр inotify. Скорее всего, в вашей системе их максимальное количество сильно ограничено, или какой-то процесс исчерпал весь лимит. Вообще говоря, конечно не правильно из-за невозможности создать экземпляр inotify прекращать работу приложения - это мой просчет. В следующей версии исправлю. Пока что можете просто поднять соответствующий лимит в /proc/sys/fs/inotify/max_user_instances и поправьте локаль, хотя бы установив LC_ALL=ru_RU.UTF-8.

Конищев Дмитрий комментирует...

Проблему с inotify я решил (можно забрать из git).

morph комментирует...

Спасибо за новый клиент!
Прямой конкурент deluge и гораздо быстрее vuze.
Огромная просьба прикрутить редактируемые категории файлов aka label. А то раздается все из одной большой кучи - непорядок! :)

Анонимный комментирует...

у меня стоит lucid, репозитория для этой версии еще нет? при попытке обновиться пишет 404 ошибку.

deb http://ppa.launchpad.net/konishchevdmitry/flush/ubuntu lucid main ...

Конищев Дмитрий комментирует...

Анонимный, ок, собрал для lucid.

Анонимный комментирует...

Что-то не получается изменить трекер. Добавляю трекер, удаляю старый, анонс с новым выполнен успешно, но после перезагрузки стоит старый трекер, а нового нет.
Flush 0.9.1-ubuntu1~ppa~karmic1

Конищев Дмитрий комментирует...

> Что-то не получается изменить трекер.
Да, вы правы. Спасибо. Исправил и залил патч в git.

Илья комментирует...

Отличная программа, спасибо! Не хватает возможности переименовать файлы в раздающихся торрентах (того, что полностью скачано), а также имена торрент-заданий. Но всё равно спасибо!

Дозер комментирует...

пакет для кармик не обнаружены :(
вот что выдало

W: Не удалось получить http://ppa.launchpad.net/konishchevdmitry/ppa-flush/ubuntu/dists/karmic/main/binary-i386/Packages.gz 404 Not Found

Конищев Дмитрий комментирует...

Дозер, вы используете какой-то не правильный apt-адрес. Правильный - "deb http://ppa.launchpad.net/konishchevdmitry/flush/ubuntu karmic main" (не ppa-flush, а просто flush).

Дозер комментирует...

странно. какой мне лаунчпад дал адрес тот и забил. ну да ладно. я уже из исходников собрал. правда пришлось библиотек кучу накачать :)
а очереди все еще нет?

Конищев Дмитрий комментирует...

Дозер, нет, очереди пока нет. Я в данный момент приостановил разработку - сейчас занят другим проектом.

Борис комментирует...

[b]Дмитрий[/b], надеюсь, что Flush Вы не похерите и продолжите разработку. Пробую на зуб flush 0.9.4-1/AUR - полёт нормальный. Спасибо, и не бросайте=)

Artyom комментирует...

Добрый день!
Спасибо за данный торрент-клиент. Пользуюсь около года - все отлично! Первый раз появилась проблема с треккером hdtracker.ru
Подскажите пожалуйста peer_id или peer_name вашего торрент-клиента. Сам не смог найти к сожалению:(
Заранее благодарен за ответ!

Конищев Дмитрий комментирует...

Artyom, добрый день. peer_id - такой же как у libtorrent-rasterbar - "LT" (http://wiki.theory.org/BitTorrentSpecification), a peer_name - "Flush 0.9".

Artyom комментирует...

Спасибо, Дмитрий!
Проблема разрешилась, благодаря вашему ответу.)

Connie комментирует...

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

Марат комментирует...

Здравствуйте Дмитрий я хочу поставить ваш клиент только при выполнении команд у меня ничего не ставится

Dmitry Konishchev комментирует...

Марат, а какие команды вы выполняете и какую ошибку получаете в ответ?

lark комментирует...

Дмитрий, какую среду разработки Вы использовали при написании BitTorrent клиента?

Dmitry Konishchev комментирует...

lark, вот эту - http://konishchevdmitry.blogspot.com/2008/07/howto-vim.html