0,0
рейтинг
29 марта 2009 в 13:18

Администрирование → 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/.
Дмитрий Конищев @KonishchevDmitry
карма
100,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Администрирование

Комментарии (118)

  • +3
    Хм, интересно. А Вы не пробовали добавить свой клиент в оф. репозитории?
    • +1
      Нет, а как? Насколько я понимаю, мэинтейнеры сами находят разработчика, если заинтересовываются его программой.
      • +6
        Вот 4 части статьи «стать мэинтейнером»:
        habrahabr.ru/blogs/ubuntu/50540/
        habrahabr.ru/blogs/ubuntu/50631/
        habrahabr.ru/blogs/ubuntu/50716/
        habrahabr.ru/blogs/ubuntu/51427/
        • +1
          Может быть, я что-то упустил, но в них не рассказывается, как именно добавить свои пакеты в официальный репозиторий. Или, если я создам свой репозиторий на Launchpad, то со временем его пакеты переместят в официальный?
          • 0
            Вот этого я не знаю. Попробуйте с автором статей связаться, может он чем поможет.
          • 0
            По крайней мере пользователи смогут добавить репозитарий в источники приложений и оперативно обновляться :)
  • 0
    Судя по скриншотам очень информативный клиент. Может быть даже сменю свой Transmission на него. Удачи в дальнейшей разработке!
  • +1
    пользуюсь пока deluge 1.1.5, пока доволен, но и есть свои минуса (мнение любителя графического интерфейса)
    может потом попробую и етот)
    • 0
      у меня deluge тормозит как трактор, когда на ntfs раздел пишет
      • 0
        а етом клиент?
        у меня deluge с ntfs радела раздавать не хочет вовсе. «checking 0%...»
        а как етот клиент в такой ситуации?
  • 0
    Неплохо:) Я бы даже перешел на ваш клиент с удовольствием, но мне необходим веб интерфейс.
    Тестировал множество клиентов, остановился на Deluge (http://deluge-torrent.org/ ), пока устраивает все кроме достаточно большой прожорливости к ресурсам (думаю из-за PyGTK
  • +1
    Debian Lenny.
    Не компилируется.
    /usr/include/glibmm-2.4/glibmm/ustring.h: In static member function ‘static Glib::ustring Glib::ustring::compose(const Glib::ustring&, const T1&) [with T1 = char [1]]’:
    ../string.hh:154: instantiated from here
    /usr/include/glibmm-2.4/glibmm/ustring.h:1266: error: call of overloaded ‘Stringify(const char [1])’ is ambiguous
    /usr/include/glibmm-2.4/glibmm/ustring.h:1243: note: candidates are: Glib::ustring::Stringify::Stringify(const char*) [with T = char [1]]
    /usr/include/glibmm-2.4/glibmm/ustring.h:1242: note: Glib::ustring::Stringify::Stringify(const T&) [with T = char [1]]

    • +4
      Хм, Debian Lenny… Я так понимаю, у вас стоит glibmm-2.16.4. Оказывается, что Glib::ustring::compose, на который я перешел с boost::format в flush-0.4, появился только в glibmm-2.16, ну и, соответственно, в первой версии был реализован не так хорошо как сейчас…

      Вообщем сделал на скорую руку патч, после применения которого у меня все скомпилировалось с glibmm-2.16.4. Патч можно взять здесь — ifolder.ru/11312835. Для его применения необходимо выполнить команду
      patch -p0 < flush-0.4.patch
      в директории, в которую вы распаковали архив с исходными текстами (после распаковки архива в ней должна была появится директория flush-0.4).

      P.S.: Пока что я проверил компиляцию только с glibmm-2.16.4. Надеюсь, с той версией gtkmm, которая установлена у вас, проблем не будет. Как только появится свободное время, попробую также скомпилировать и с той версией gtkmm, которая установлена у вас (в Debian Lenny).
      • +1
        Нет. У меня glibmm-2.4. Извините за беспокойство.
  • +1
    Я бы очень порекомендовал прочитать весь library.gnome.org/devel/hig-book/stable/. Скачиваю программу, если интерфейс в глейде, то помогу
    • –1
      Это вы про "-1" в окне настроек? =) HIG — это, конечно, хорошо, но только, честно говоря, не всегда есть желание сидеть и вылизывать интерфейс только ради того, чтобы он соответствовал каким-либо правилам. Т. к. я не могу уделять очень много времени разработке, то приходится чем-то жертвовать.

      По поводу Glade… Честно говоря, никогда не был сторонником различного рода «формошлёпства», будь то Glade или MSVC. На мой взгляд, «размазывание» кода по *.cpp и глейдовским *.xml файлам только все усложняет. Я конечно понимаю, что использование Glade дает возможность юзабилистам помогать в разработке приложения, совершенно не зная языка программирования, но вот только стоит ли ради этого повсеместно использовать Glade? К примеру, убирать те же "-1" все равно придется программисту. Юзабилист может разве что помочь нарисовать шаблон, но лично мне было бы проще один раз перегнать этот шаблон в код, чем каждый раз при программировании лезть в Glade, чтобы посмотреть, какие элементы имеет окно, как они называются, и прыгать по различным меню, ища, какие свойства установлены у каждого виджета — в коде же все это сразу же бросается в глаза, т. к. программист специально выделяет (отступами, комментариями) и объединяет в блоки код так, чтобы его потом было удобно читать.

      Это из той же серии, что и создание документации в Doxygen: документация должна создаваться не отдельно от продукта, а вместе с ним и находиться в самом коде, т. к. код, в отличие от всего остального, всегда находится в актуальном состоянии.

      Естественно, все вышесказанное — ИМХО.
      • +1
        "-1" Ето не так плохо, но можно хотя лейблы по одной вертикали подмеривать — на глад ето лучше выглядит.

        Интерфейс легче сделать и через 2 года поменяйть в длейде чем понимать как оно всё собирается опять.

        Но как хотите конечно. ХИГ — ето не правила, ето просто посдказки для тех кто хочет сделать хорошый, легко понимаемый и использованый интерфейс.
        • +1
          Зачем Вы отломали букву «э» на клавиатуре? :)
          • 0
            У меня её нету.
      • +1
        лучше всего отделить интерфейс от логики, и glade для gtk с этим справляется хорошо.
        весь разметочный мусор и декоративные описания элементов остаются в .glade файле, а в самой программе достаточно вытянуть только то что необходимо для связывания элементов и событий. или даже достаточно просто связать события, а сами элементы в код не вытягивать.
        ну и соответсвенно скомпилив однажды программу, можно заниматься спокойно тюнингом внешнего вида интерфейса без излишней перекомпиляции.
        Так что не надо про рисовалки.
  • 0
    посмотрел скриншоты на 2.bp.blogspot.com/_dWRCmLfFFN0/Sc8iR93tr2I/AAAAAAAAANQ/CAe02SVpCU8/s1600-h/flush_2.png очень не хватает кнопочек наверху (под меню) типа запустить, остановить + справа удобно когда можно как нить торренты сортировать, например скаченные, качающиеся и тп
    теперь буду ставить и пробовать :)
    • 0
      скачал flush_0.4_ubuntu_8.10_i386.deb, попросило libconfigduo++8.
      • +1
        Его можно скачать здесь, перейдя по ссылке libconfig. Если же у вас нет желания возиться с пакетами, то можете просто поставить flush_0.4_bundle_ubuntu_8.10_i386.deb — в bundle-версии исполняемый файл статически слинкован с libconfig и libtorrent.

        P.S.: Предвидя вопрос «Почему пакет, содержащий libconfig, называется libconfigduo?», отвечаю: в репозитории Ubuntu уже существует пакет libconfig, который содержит совсем другую библиотеку. Тот libconfig, который использую я, обычно при сборке пакетов именуют как libconfigduo, поэтому я назвал его именно так.
    • +1
      Кнопочек не хватает потому, что я предпочитаю GUI, которые занимают как можно меньше места, оставляя его для полезной информации. Мне как-то вполне хватает всплывающих меню по правой кнопке мыши, поэтому о панели инструментов я как-то и забыл… Хорошо, добавлю панель инструментов с кнопочками, но обязательно сделаю, чтобы ее можно было убирать. =)

      Насчет фильтров (скачанные, качающиеся и т. п.) тоже согласен — надо будет добавить.
      • 0
        Вы это говорите о программе, в которой 50% места занимает нижняя панель, в которой 80% информации либо не нужно в принципе либо нужно исключительно редко?
        • 0
          эта панель замечательно сворачивается
        • +1
          Все, о чем вы написали, убирается в секунды. Автор просто показал, как выглядят главные части программы.
          По теме: заинтересовался, буду пробовать.
      • 0
        спасибо. возможность убрать панель и фильтры — это хорошо.
        установилось.
        установка ограничения отдачи из трея не плохо бы
        настройку бы связанную с шифрованием трафика бы иметь еще.
        • +1
          > установка ограничения отдачи из трея не плохо бы
          Эээ… Так есть же — «Set upload rate limit».

          > настройку бы связанную с шифрованием трафика бы иметь еще.
          Мне вот просто интересно, а зачем? :) Может быть, я что-то не понимаю, но:
          1) Если вы опасаетесь того, что вас осудят за скачивание какого-либо нелицензионного контента с трекера, то шифрование здесь не поможет. Если вас захотят уличить в раздаче подобного контента, то достаточно просто с вас что-либо скачать — тут уж шифрование ничем не поможет, т. к. клиент с радостью отдаст все, что у него попросят.
          2) Шифрование имеет смысл разве что в том случае, когда провайдер режет BitTorrent траффик. У нас в России, вроде, до этого пока не дошло… Или я отстал от жизни?
          • 0
            второй вариант ближе русскому пользователю, наши ограничивают скорость.
          • 0
            >> установка ограничения отдачи из трея не плохо бы
            >Эээ… Так есть же — «Set upload rate limit».
            оказывается есть, но было бы замечательно видить эту самую цифру когда наводишь на иконку в трее, также можно показывать тамже состояние закачек.
            у utorrent сделанно отображение в заголовке окна кстати удобно
            • +3
              Ок, сделаю. Про заголовок окна — тоже неплохая идея. Спасибо, обязательно посмотрю на uTorrent.
      • 0
        >Хорошо, добавлю панель инструментов с кнопочками, но обязательно сделаю, чтобы ее можно было убирать. =)

        скорее сейчас нужно приложить особые усилия чтобы сделать неубирающиеся панели, т.к. все закручено на готовые и удобные классы
  • +1
    Название отличное. «Слив». Супер!
    • +2
      Я действительно считаю, что это крутое название. No shit.
  • +2
    Всего отдано, Всего скачано, Всего ошибок — это «Всего» мешает. Тем более, что из-за него удлиняется скрол.
    • +1
      Да, возможно. Вот только не знаю, если я заменю «Total download» и «Всего скачано» на «Download» и «Скачано», то, возможно, кто-нибудь скажет, что название колонок не отражает того, что они отображают (как будто речь идет о скачанном за текущую сессию, а не за все время). Хотя, наверное, вы правы и все-таки стоит это «Всего» убрать…
      • 0
        вообще можно было бы так же изменить «Скорость скачивания» и «Скорость отдачи» на «прием» и «раздача». Просто чем меньше слов в названиях столбцов тем лучше. «Оставшееся время» можно заменить на просто «Время» например.
      • +2
        а вообще отличный клиент получился. Однозначно сношу делюгу. Еще бы добавить репы, чтоб сам обновлялся вообще было бы супер.
      • 0
        кстати, помнится ты хотел добавить возможность удалять торренты при достижении определенного рейтинга. Привык уже к этой фишке. Реализуешь?
        • +1
          Да, хотел? :) Ну ладно, раз хотел, то реализую. :)
  • 0
    А он умеет в неинтерактивном режиме работать? Например на сервере, где нет иксов? Если нет, то настоятельно рекомендую добавить, а то сейчас единственный вариант — screen+rtorrent.
    • +1
      Вы не первый, кто мне советует разнести серверную и клиентскую часть. Возможность, бесспорно интересная. На уровне кода я это сделал изначально — есть объект, представляющий из себя клиента, объект, представляющий из себя демона, и между ними proxy-объект. Сейчас они общаются между собой посредством вызова методов proxy-объекта, но, в принципе, внутрь proxy-объекта можно воткнуть DBus или сокеты… Вот только тогда в каждом методе придется упаковывать данные, делать проверку всех получаемых из внешней среды данных, обрабатывать таймауты (вдруг клиент отвалится) и, возможно, делать асинхронную работу, чтобы не подвешивать GUI… Честно говоря, у меня пока что на это просто банально нет времени. Не знаю, возможно, в будущем я это и сделаю, но вряд ли подобный функционал стоит ждать в ближайшее время.
      • 0
        Можно почитать исходники amule. Там тоже есть сервер — amuled и несколько клиентов — amulecmd, amulegui, amuleweb. И так же распространяется под GPL.
        • 0
          Тут дело не в сложности. Просто задача довольно муторная — в каждом методе придется проверять данные и вместо того, чтобы обмениваться целыми объектами, упаковывать их на одном конце, принимать и распаковывать на другом (с DBus, конечно, легче, но все равно придется «нарезать» объекты на массу простых: числа, массивы строк и т. п.). Вот если бы я писал его на Python (привет Deluge :) ), то все было бы гораздо проще, т. к. в Python'е можно производить автоматическую сериализацию и десериализацию объектов. В C++ же придется все писать руками…

          Хотя исходники тоже могут пригодится — наверняка там можно найти какие-нибудь интересные идеи.
          • 0
            amule не требует DBus. Клиенты и сервер общаются только через TCP.
            • 0
              Да, я понимаю. DBus я упомянул просто как более «дружественную» по отношению к программисту альтернативу сокетам, которая, правда, пока что может работать только в пределах одного компьютера.
    • 0
      Чем не угодил Deluge? Использую его достаточно давно, в том числе и на безиксовой машине.
      • 0
        Спасибо. Умеет следить за *.torrent в заданном каталоге, имеет веб интерфейс и не подвешивает систему при вычислении хэша в отличие от rtorrent. Что ещё нужно? :)
  • 0
    Интересный проект, чем то напомнило utorrent под Windows. Хорошо бы добавить выбор скорости для отдельного торрента, ну метки конечно.
    • +1
      uTorrent оно напоминает только тем, что это тоже торрент-клиент.
      на этом сходство заканчивается.
  • +1
    А вы молодец, ей-богу. Кроме создания полезной программы, ещё и исправляете баги на ходу (судя по комментариям). Так держать! Концепция к подходу интерфейса тоже понравилась — в окне приложения исключительно полезные данные, а не иконки на полэкрана, как сейчас модно.

    P. s. Кстати, может действительно стоит связаться с разработчиками дистрибутива Ubuntu? По-моему, очень приятно, когда твоё приложение включают в ОС. Успехов.
    • +1
      Спасибо за теплые слова. :)

      Кстати, может действительно стоит связаться с разработчиками дистрибутива Ubuntu? По-моему, очень приятно, когда твоё приложение включают в ОС.
      Кто же спорит, конечно приятно. :) Надо будет действительно попробовать, хотя, чувствую я, это тот еще квест. :) К примеру, недавно совершенно случайно обнаружил, что версии < 0.4 с точки зрения лицензионной чистоты были некорректны: libtorrent-rasterbar зависит от OpenSSL, у которой лицензия не совместима с GPL в результате чего пользователи не имели права собирать Flush без специального на то разрешения в copyright с моей стороны. :)

      Кстати, по поводу больших кнопок. Раз уж вы, как и я, не разделяете общей любви к ним, возможно вам пригодится следующий совет:
      Чтобы кнопки были по-меньше можете создать собственную тему оформления на основе стандартной, но уменьшив размеры этих самых кнопок. Я, к примеру сделал это, создав файл ~/.themes/My/gtk-2.0/gtkrc со следующим содержимым:
      include "/usr/share/themes/Human/gtk-2.0/gtkrc"
      
      gtk-icon-sizes = "panel-menu=16,16 : gtk-menu=16,16 : gtk-button=16,16 : gtk-small-toolbar=16,16 : gtk-large-toolbar=16,16 : gtk-dialog=32,32 : gtk-dnd=32,32"
      и задал в качестве темы оформления тему My.

      Либо, можно воспользоваться какой-нибудь специальной компактной темой, например, Human Compact.
      • 0
        По поводу иконок я подразумевал ситуацию в целом, ни в коем случае не упрекаю концепции интерфейса какой-либо конкретной рабочей среды. Просто тенденция такая пошла и она зачастую несёт лишь эстетику, но не удобство.

        За советы спасибо. ;)
    • –1
      Думаю для начала надо довести дело хотя бы до версии 1.0, то бишь написать весь задуманный функционал и отдебажить его, до конца оформить структуру программы(то же деление клиент-сервер). Думаю разработчикам дистрибутива не сильно нужна в репах программа, в которой с каждым релизом будет половина кода переписываться.
      • 0
        Вы правы, но согласитесь, вероятность того, что разработчик доведёт дело до версии 1.0, будет гораздо выше, если он будет знать, что делает полезную, нужную людям вещь. Очень трудно сделать что-либо достойное в течении долгого периода, подогревая энтузиазм лишь собственными силами.
        • –1
          Доля правды в ваших словах есть, но:

          1) Автор не однократно упоминал о том, что у него очень мало времени на разработку, так что лучше подавать большой публике целостную, законченую программу, тогда будет на пару порядков меньше надоедающих запросов о новых фичах и исправлениях багов. Особенно они надоедают, когда нет физической возможности их исправить.
          2) На собственном интузиазме может и не выдержать, зато на собственных потребностях довольно таки можно. Программисту проще исправить багу в собственной программе, чем ежедневно её терпеть.
  • 0
    Интересно! Если понравится и никто не опередит — добавлю в AUR.
  • –4
    есть же deluge…
    • +1
      Сразу видно, что Вы по диагонали читали.
      Причины, которые заставили меня написать собственный BitTorrent клиент, я изложил здесь
    • 0
      как печально, что вы минусуете, но прочитав и по другой диагонали и поперек не увидел преимущества перед deluge. пардон, но я осмелюсь назвать deluge идеальным бит-торент клиентом.
      • 0
        По мне так толстоват даже для питона. Пользуюсь первый день пока недостатков не вижу. Из двух клиентов способных работать без гуя deluge мне пока нравится больше. Но оба неидеальны.
        • 0
          кстати говоря, от делюги мне пришлось отказаться в свое время из за ее глючности.
          Частенько бывало что она пыталась заново перезакачать мои раздачи, забывала прогресс скачивания торрентов и качала по новой. В какой то версии она вообще разбушевалась, что мне пришлось обратно откатиться, а потом и вообще перейти на жабу.
  • 0
    Довольно интересная задумка :) По описанию и скриншотам — ничего так. Сам юзаю rtorrent из консоли. В принципе доволен. :) Обязательно попробую и этот клиент.

    ЗЫ. Хотелось бы тоже научиться писать программы под GTK, вот только не знаю с чего начать. :(
  • 0
    Спасибо большое, клиент очень удобный.
    • 0
      Да, а может быть стоит еще теги для файлов ввести? Чтобы по ним можно было бы фильтровать?
  • 0
    А я вот всегда был доволен transmission, есть ли у Flush какие-нибудь преимущества?
    • 0
      Поправьте, если не прав, transmission в трей может сворачиваться?
      • +2
        Еще как.
  • 0
    а если выкачиваются не все файлы из торрента — то как он действует?
    libtorrent-based rtorrent создаёт также и некачаемые «пустые» файлы. а ваш клиент?
  • 0
    На boost 1.37 не собирается.

    create_torrent_dialog.cpp: In member function ‘void::Progress_dialog::operator()()’:
    create_torrent_dialog.cpp:363: error: invalid use of ‘class boost::system::system_error’
    create_torrent_dialog.cpp:410: error: invalid use of ‘class boost::system::system_error’

    Посмотрел, что там изменилось, вроде бы достаточно изменить на strerror(e.code().value()). Для совместимости конечно придется с препроцессором извращаться и проверять версию буста.
    • +2
      Добавил в арчевский AUR пока с патчем для сборки на 1.37 aur.archlinux.org/packages.php?ID=25114 :)
      • 0
        Вижу, спасибо, сейчас пощупаю.
  • 0
    Еще сразу бросился в глаза отступ внутри окна «не такой как в системе» img148.imageshack.us/img148/166/screenshot5k.png :)
  • +2
    Где-то через пять минут после запуска стабильно валится с:

    terminate called after throwing an instance of 'libconfig::SettingTypeException'
    what(): SettingTypeException
    Аварийный останов

    Debian Lenny, версия bundled

    • +1
      Такая же фигня на Ubuntu 8.10 amd64
    • +1
      libconfig некорректно работает на 64-битах. =) Отправлял уже багрепорты разработчикам — обещали исправить, но так до сих пор ничего и не изменилось. В результате пришлось делать кое-какие обертки, чтобы оно работало нормально — видимо, где-то проглядел. Сейчас запущу на виртуальной amd64 машине и тогда напишу патч…
      • +1
        В качестве временного решения вполне подойдет изменить в файле flush-0.4/src/mlib/types.hpp строку 94 с
        typedef int64_t Size;
        на
        typedef long long Size;

        P.S.: в ближайшее время залью весь проект на SourceForge'вский SVN, чтобы больше не приходилось вот таким вот образом исправлять ошибки. =)
  • 0
    было-бы хорошо иметь группы торрентов по определённым признакам, например по треккеру, или чему-то-там ещё с лимитами на группу.
  • +1
    • +1
      Из пожеланий — хотелось бы еще видеть программу в системе контроля версий ( git, svn, csv ), и чтобы все изменения шли туда.
      Тогда можно бы сделать в aur flush-{git,svn,csv} и регулярно обновлять и смотреть — пофиксили ли баги или нет.
    • 0
      Похоже, что у вас не установлена переменная окружения DBUS_SESSION_BUS_ADDRESS:
      env | grep DBUS_SESSION_BUS_ADDRESS

      У вас Xorg создает сессионную шину DBus?
      • 0
        хм, у меня нет такой переменной… но вроде приложения с dbus работают и так..., hal например.
        • 0
          У DBus есть две шины: системная и сессионная. Системную используют демоны вроде hal, и она может быть только одна. Сессионную же шину может создать кто угодно, причем не одну. Обычно при запуске Xorg создается эта самая сессионная шина, которую без каких-либо проблем могут использовать простые приложения вроде Flush, запускаемые из иксов (или из эмуляторов терминалов, которые запущены из иксов).
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      2. Зачем? 0_o
  • НЛО прилетело и опубликовало эту надпись здесь
    • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    А можно ли сделать сворачивание в трей при нажатии «свернуть», а не «закрыть»?
    • 0
      Да в общем-то можно, особенно если вы назовете мне хотя бы одно GTK приложение, которое позволяет так делать, чтобы я мог посмотреть в исходниках, как можно в GTK перехватить сигнал на минимизацию окна. =)
      • 0
        def window1_window_state_event_cb(self, w, d=None):
        if (d.changed_mask & gtk.gdk.WINDOW_STATE_ICONIFIED) and (d.new_window_state & gtk.gdk.WINDOW_STATE_ICONIFIED):
        self.visibility_toggle()

        Я вот так у себя делаю. Python, но так должно работать и для любых других языков
        • 0
          Блин, надо было юзать <pre>
        • +1
          def window1_window_state_event_cb(self, w, d=None):
          	if (d.changed_mask & gtk.gdk.WINDOW_STATE_ICONIFIED) and (d.new_window_state & gtk.gdk.WINDOW_STATE_ICONIFIED):
          			self.visibility_toggle()
          • 0
            Ок, спасибо, даже гуглить не пришлось. =)
          • 0
            А на каких оконных менеджерах вы свою программу тестировали?

            Я вот сейчас попробовал реализовать сворачивание в трей и..., честно говоря, ниасилил. :) Тестировал я на Gnome и на IceWM. Во первых, WINDOW_STATE_ICONIFIED генерируется не только тогда, когда пользователь сворачивает окно, но и тогда, когда он переключается с одного рабочего стола на другой. Понять по данному флагу, что именно произошло (переключение рабочего стола или свертка окна), видимо, не возможно. Причем после переключения обратно на этот же стол Gnome не генерирует никаких сигналов, а IceWM снимает с окна WINDOW_STATE_ICONIFIED + когда я получаю от IceWM сигнал с WINDOW_STATE_ICONIFIED при сворачивании пользователем окна, сделать window->hide() не достаточно, т. к. при этом окно остается на панели задач и приходится перед window->hide() вызывать window->deiconify(), которая опять-таки не гарантирует, что IceWM ее послушается и плюс ко всему порождает очередную порцию сигналов «window-state-event». Да, и при переключении обратно на рабочий стол, на котором находится программа, IceWM в комбинации с window->show() генерирует такие последовательности сигналов, которые просто не поддаются моему пониманию. =)
            • 0
              Вроде разобрался. :) Как я и полагал, одним «window-state-event» здесь не обойтись. Если интересует решение проблемы — пишите в личку.
  • 0
    uTorrent эталон конечно во всем, но лучше всего в нем дело обстоит с систематизацией раздач. «Лэйблы» и автоматическое распределение помеченных раздач в соответсвующие папки, вот чего не хватает большинству трекеров.
    P.s. достаточно сложно уследить за всем, когда лист переваливает за 100 в моем случае стремится к 1000 ))
  • 0
    Поздравляю! О Flush появилась новость на ЛОРе: www.linux.org.ru/view-message.jsp?msgid=3595507
  • 0
    Спасибо.Пробуем и пока всё работает.Если так и дальше пойдёт будем менять Transmission.
  • 0
  • +1
    Очень радует появление хороших программ под GTK. Но судя по скриншотам, вы не знакомы с тенденциями в GNOME Desktop. Может и к лучшему :)
  • 0
    Дмитрий, а не сталкивались ли Вы с проблемой когда в торренте файлы/папки названы русскими буквами в кодировке cp1251 и в результате на Убунте с UTF-8 получаем кракозябры в именах. Пример такого торрента:
    torrents.ru/forum/viewtopic.php?t=28999
    На данный момент ни Transmission, ни rtorrent, ни Flush не способны решить данную проблему. ktorrent в окне закачки показывает имена правильно, но на диске все равно оказывается то же самое.
    Было бы здорово если бы Flush при открытии торрента позволял задать исходную кодировку имен файлов.
    Большое Вам спасибо за клиент!
    • 0
      Нет, первый раз вижу. Хотя, это конечно свинство — создавать такие торренты. Сделать, в принципе, можно, но нужно ли? Разве это не единичный случай?
      • 0
        Нет, случай не единичный. Много раз с таким на torrents.ru сталкивался. Свинство — да, но разве виндовым пользователям объяснишь… И выход сейчас только один — скачивать торрент, а потом уже конвертить имена. Но при этом для раздачи придется держать 2 копии контента.
        А сложно сделать такую фичу?
        • 0
          Да нет, по идее, никаких проблем быть не должно, просто я стараюсь добавлять только те функции, которые действительно нужны, чтобы не тратить время на реализацию мало кому ненужного функционала — итак уже не помню, когда в последний раз коммитил что-то в SVN. Времени в обрез, а тут еще и сессия. :) Хорошо, сделаю, как будет время.
          • 0
            Здесь: ktorrent.org/forum/viewtopic.php?t=2911 описана аналогичная проблема.
            А нельзя ли проблему решить на уровне переконвертации этого файла торрента локально?
            • 0
              Нет, т. к. необходимо конвертировать только отдельные поля *.torrent файла — в любом случае для этого придется писать отдельную программу.
              • 0
                Отдельную программу — это понятно. Предположим что я могу ее написать на Ruby, но вот после конвертации этого, локального файла и подсовывания его любому торрент-клиенту все будет нормально? Нет ли там каких-то подписей с ключом сервера или других грабель?
                • 0
                  Прошу прощения, совсем забыл, что торренты на трекере идентифицируются по их хэшу — при изменении данных *.torrent файла трекер его просто не узнает. Поэтому все переименования можно сделать только внутри торрент-клиента.
                  • 0
                    Вообщем-то как я и предполагал. Жаль. Значит остается ждать Вас, Дмитрий. В С++ не полезу, скиллов недостаточно. Я на нем только мелкие фичи делал.
                    • 0
                      Сделал (закоммитил в SVN). Скачал указанный вами торрент и еще один торрент от того же товарища — вроде все нормально работает.
                      • 0
                        Ух-ты! Оперативно. Спасибо! Буду пробовать собрать пакетик для jaunty.
                        • 0
                          Большое спасибо. Все работает как надо. Проверил на еще одном аналогичном торренте от другого автора: torrents.ru/forum/viewtopic.php?t=378361

                          Когда очередной релиз планируете?
                          • 0
                            Когда наберется такое количество нововведений, ради которого имеет смысл выпускать новый релиз. На данный момент эта фича — единственное, чем trunk отличается от 0.5.1.
  • 0
    при установке выдает:
    Ошибка: Зависимость не может быть удовлетворена: libboost-filesystem1.34.1 (>= 1.34.1-8)
    Ubuntu 10.04 i386
    устанавливал как указаную версию с репозитория Debian, так и со стондартного но версии 1.40

    хотелось бы попробовать реализацию последовательного скачивания, так как только из за этой функции в uTottent стоит Windows, а через Wine неудобно и комп виснить при одновременном просмотре качающегося фильма.
    • +1
      Ммм… Не понял, какой пакет Flush вы ставили. Добавляйте репозиторий https://launchpad.net/~konishchevdmitry/+archive/ppa/ и ставьте оттуда — там все должно быть в порядке.
      • 0
        спасибо, так получше будет

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