LINUX.ORG.RU

SnapFly 0.7.0

 , , ,


0

3

Состоялся второй крупный релиз проекта SnapFly — легкого PyGTK+ — меню, отлично подходящего для лёгких окружений, основанных на WM (типа openbox, fluxbox). Данный проект является частью проекта AgiliaLinux.

Изменения по сравнению с первым релизом:

  • Был значительно улучшен парсер конфигурационного файла SnapFly, теперь программа не падает при неправильном usermenu-конфиге.
  • Файл пользовательского меню избавлен от неиспользуемых полей
  • Поддержка переключения пунктов меню по наведению мыши (опция category_click=false в config)
  • Исправлена слишком большая ширина полей меню
  • Установочный скрипт setup.py, теперь установка в другие дистрибутивы и создание для них пакетов становится проще!
  • Окно About
  • Теперь SnapFly проверяет desktop-файлы не только в /usr/share/applications, но и в $HOME/.local/share/applications
  • Была проведена реструктуризация дерева каталогов программы
  • Имя/версия программы исправлены в исходных файлах, убраны старые комментарии кода
  • Добавлен подробный вывод ошибок
  • Исправлена функция загрузки изображений

Команда SnapFly в лице Nomer_Uno и drakmail выражает благодарность:

>>> Скачать исходники

★★★★★

Проверено: mono ()

Код очищен от быдлокода

Аххахах)) это пять) правда, я щас докажу что это не так :D Ну, поем, а потом докажу ^_^

chinarulezzz ★★ ()

Реквестирую скриншоты поделия.

Zhbert ★★★★★ ()

Надоели делать быдлотормозгуй на быдлотормозпетуне!

babusha ()

> легкого PyGTK+

PyGTK+

легкого



Хм. Где-то есть щель в параллельную вселенную, что ли.

shimon ★★★★★ ()

Круто.
не читал
здесь - Good guys only win in movies
блин, и так спокойно

amorpher ★★★★★ ()
Ответ на: комментарий от chinarulezzz

бегло посмотрел код, ничего не изменилось практически, комментарии в прочем тоже не блещут новизной. Что раньше «питон, тормоз» кричали, что щас. А автор насчет быдлокода нас жутко нае^W обманул.

chinarulezzz ★★ ()
Ответ на: комментарий от chinarulezzz

лично я не говорил DoctorSinus писать про чистку быдлокода, возможно, это его личное мнение :)
Я все еще придерживаюсь мнения что там совершенствовать и совершенствовать, но согласись, уже лучше чем было ;)

Nomer_Uno ()
Ответ на: комментарий от Nomer_Uno

Создается ощущение что всё что вам писали - вы мимо ушей пропускали. Код очень плохого качества, ООООООЧЕНЬ! Это ужасный, дремучий, школьный быдляк-сплошняк! И это без капельки преувеличения.

Надеюсь в Agilia есть пакет pylint, установи его, и пока у вас не будет оценка ниже 8 - не выпускайте и не обзывайте это кодище релизом ;) Только после этого, можно будет критиковать в более интересном русле, предлагать менять алгоритмы, а тут - костыль, костыль, костыль, костыль, что тут обсуждать? Зачем это тормозное поделие запускать у себя? Без понятия.

chinarulezzz ★★ ()
Ответ на: комментарий от chinarulezzz

На данный момент SnapFly удовлетворяет основным требованиям по функционалу. Работает он так, как задумывалось. Это самое главное. А код потихоньку правится и очищается от мусора (добавляя новый :) ).

drakmail ★★★★ ()
Ответ на: комментарий от drakmail

SnapFly удовлетворяет основным требованиям по функционалу.

но не удовлетворяет основным требованиям по коду. Вычищайте код, добавить функционал успеете, записывайте на бумаге идеи чтоб не забывать. Вам столько помогли, буквально носом тыкали, осталось взять и сделать :)

chinarulezzz ★★ ()
Ответ на: комментарий от shimon

>Хм. Где-то есть щель в параллельную вселенную, что ли.

Тссс. Не ломай детям сказку.

anonymous ()
Ответ на: комментарий от shimon

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

А по теме — интересная новость, при случае попробую.

Dmitry_Sokolowsky ★★★★★ ()

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

Lennox ★★★★★ ()
Ответ на: комментарий от chinarulezzz

pylint — хорошая вещь. Сам ей регулярно пользуюсь. Еще очень интересно пакеты стандартной библиотеки ей тестить.

Ichiro ()
Ответ на: комментарий от Lennox

С боксами его юзать профит весьма сомнительный.

Можно узнать почему сомнительный? Я его в Openbox ежедневно использую, никакого дискомфорта, работает так же быстро как стандартное статичное.

Nomer_Uno ()

> Был значительно улучшен парсер конфигурационного файла SnapFly, теперь программа не падает при неправильном usermenu-конфиге

Зачем изобретать велосипед и писать свой парсер, если в стандартной библиотеке есть ConfigParser?

toogle ()

Забавно, что один из списка благодарностей забанен за флуд и провокации)

Yareg ★★★ ()

Не хотелось бы никого обидеть, но это никому не нужная пионерская поделка для никому не нужного пионерского дистрибутива.

Shlyapa ★★ ()
Ответ на: комментарий от Nomer_Uno

Я его в Openbox ежедневно использую, никакого дискомфорта, работает так же быстро как стандартное статичное.

Юзать то можно, не вопрос. Просто уже есть свое, нативное, которого более чем хватает. Зачем еще одно просто более гламурное?

Lennox ★★★★★ ()
Ответ на: комментарий от Shlyapa

Пусть ребята пишут! Опыта набираются ... Мне все нравиться!!!

firefly ()
Ответ на: комментарий от DoctorSinus

> на главной проекта есть

авторам thumbы по человечески делать религия запрещает

q11q11 ★★★★★ ()
Ответ на: комментарий от chinarulezzz

Злой ты :)
Сам поди распечатку своей первой программы на стене в рамочке держишь? :)

zJes ★★ ()
Ответ на: комментарий от chinarulezzz

>но не удовлетворяет основным требованиям по коду. Вычищайте код, добавить функционал успеете, записывайте на бумаге идеи чтоб не забывать. Вам столько помогли, буквально носом тыкали, осталось взять и сделать :)

Кстати, сейчас поправил код так, чтобы pylint показывал примерно 7.3 по пакету. Для меня он стал не намного более читабельным. Хотя да, найти пару неиспользуемых переменных помог. И задуматься о длинновытых функциях :)

PS. Почему-то он ругается на то, что не может сделать «from snapfly.version import Application», хотя этот код отлично отрабатывает при обычном запусе.

drakmail ★★★★ ()

> ...пользователям ЛОРа ... anonymous

сразу вспоминается анекдот провыдачу зарплаты на заводе.

кассирша выкрикивает фамилии, народ подходит получать: - иванов! - здеся - петров! - я ... - итого! ... - есть итого?!! ... - дурак этот итого - ему больше всех начислили, а он не пришел!

anonymous ()
Ответ на: комментарий от Dmitry_Sokolowsky

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

Легкий и быстрый PyGTK, например.

shimon ★★★★★ ()

Рад-нет поддержки UNINSTALL Два-./setup.py build ...file snapfly_core.py (for module snapfly_core) not found...(и так все модули не находит),при установке также.

И при запуске ImportError: No module named src (архивы распаковывать я умею,и --help читал) После копипаста куда нужно и правки ручками-запустилось...

Вобщем напомнило GnoMenu-страшное убунтазависимое поделие,только с бубном устанавливать(как и тут)

anonymous ()
Ответ на: комментарий от anonymous

хм, странно. У меня всё адекватно устанавливается. Вы как устанавливали, а потом запускали?

drakmail ★★★★ ()

Слишком много разработчиков для 30-килобайтной софтинки.

Похоже, что критика в треде имеет почву под ногами.

Igron ★★★★★ ()
Ответ на: комментарий от babusha

удваиваю. вообще, неплохо бы сделать дистр, свободный от педона

ArtemZ ()
Ответ на: комментарий от drakmail

Обыкновенно ./setup build и под рутом сетуп-инсталл (дистр опенсюсе 11.3)

Предполагаю беда в том,что вы копируете либы в /usr/local/share/тд эти пути в сюсе требуют особой приписки(по дефолту они не входят в пути библиотек/ну и тп).Т.е. при запуске нужно проверить доступность окружения...непомню уже,была какаята команда в 1 строку чтоб все заработало,и автоматом подхватилось все что намудрено и в сюсе,и в нестандартных гентах,ну и прочем зоопарке.

anonymous ()

At this moment project at active developing state. Post there any found bugs, and try to get the latest version (your problem may be fixed in it).

<заглавная> For now, project is under active development. Post here any bugs you will find, and try to get the most recent version (maybe they're already fixed there).

Может, так чуть получше? Как-то покрасивее.

К слову о pylint:

~$ pylint /usr/lib/python2.6/*.py > stdlib.report
Global evaluation
-----------------
Your code has been rated at 6.41/10
This is okay-ish, but I'm sure you can do better.
Так что никто не без греха :) Но разрабов хочется попинать:

  • за line too long, которые исправить - пять минут, а читабельность повышают в разы;
  • за функцию check_screen, которую назвать иначе как set_colormap рука не поднимается;
  • за Popen(cmd, shell=True).pid. Я так понимаю, разработчик питает иллюзию, что он так дождался запуска процесса. Или списал это из docstringа subprocess.
  • за shell=True в предыдущей строчке. Читаем спеки:

    Quoting must be done by enclosing the argument between double quotes and escaping the double quote character, backtick character («`»), dollar sign («$») and backslash character («\») by preceding it with an additional backslash character. Implementations must undo quoting before expanding field codes and before passing the argument to the executable program.

    Implementations, а не шелл. А то я к тебе в desktop форк-бомбу запихаю, а ты не заметишь. (Хотя вот тут я могу врать. По крайней мере гн-м поступает именно так - на дух не переносит редиректа и всё простым os.exec делает).
  • назначение проверок width, height != None в pixbuf_from_file. Всё равно 24 передаёте из image_button (кстати, а 24 неплохо бы в константу.)
  • поток для создания меню. Небезопасно вот так вот стучаться к GTK из левого потока. Нельзя было просто между итерациями обновлять дисплей?

Кроме того:

в моём меню не отображаются многие иконки, есть пункт 'Unknown' (отследить не удалось), при давлении на который прога падает с ошибкой иксов (и панель мне уронила).

Пару раз вообще не запустилось. Автор вообще подозревает, что записи типа

Icon=
к сожалению, встречаются? Судя по
                    icon = words[1].replace('\n','')
                    if not icon[0] == '/':
                        icon = icon.split('.', 1)[0]
никоим образом. В результате на openbox.desktop оно валится.

Не говоря уже про многажды повторяющийся в той же функции фрагмент words[1].replace('\n',") и про бессмысленность её существования в свете наличия ConfigParser и configobj.

Авторы проигнорировали также весьма ценное пожелание привести программу в соответствие с XDG. Для этого даже либа для ленивых есть, python-xdg.

В GTK не очень разбираюсь, поэтому на эту тему ничего не скажу.

А выглядит прикольно, да. Но у меня чёткое впечатление, что я вот завтра чуть курну манов по PyGTK, а ещё за два дня напишу такое же, только лучше.

Pythonist ()
Ответ на: комментарий от Pythonist

Спасибо, хорошие замечания. Надеюсь в скором времени исправить «косяки» :).

Но с парой идей я не согласен:

за line too long, которые исправить - пять минут, а читабельность повышают в разы;

Всё время откладываю в долгий ящик, так как монитор большой :(

Авторы проигнорировали также весьма ценное пожелание привести программу в соответствие с XDG. Для этого даже либа для ленивых есть, python-xdg.

Программа смотрит конфиг в соответствии с переменной окружения XDG_CONFIG_HOME, парсит .desktop файлы практически полностью по спецификациям FDO. Кстати, Вы код pyxdg смотрели? Часть парсинга .desktop файлов реализована практически также, как и в SnapFly, только эта библиотека - еще одна лишняя зависимость, без которой вполне можно обойтись.

Насчет ConfigParser - думаю да, в скором времени можно будет перейти на него (тем более, он является частью питона, как я понял, что тоже большой плюс).

PS. Да, перевод на гуглокоде надо поправить.

drakmail ★★★★ ()
Ответ на: комментарий от drakmail

Программа смотрит конфиг в соответствии с переменной окружения XDG_CONFIG_HOME

Мои пардоны, не заметил. С FDO в принципе всё вроде нормально, но

еще одна лишняя зависимость, без которой вполне можно обойтись.

с этим принуждён не согласиться на идейном уровне. Модульность - лучшее, что мы имеем в python (да и unix). Завтра стандарты чуть поменяют, и множеству людей придётся их переписывать? Если там написано то же самое, зачем писать это раз?

Хотя в данном конкретном случае я, наверное, соглашусь с решением не тянуть её. И, наверное, даже ConfigParser излишен, если мы научимся хорошо обходить некорректности.

К слову: там, у вас в функции, где вы ищете words[0].find('Name') != -1: лучше (и правильнее) писать words[0].startswith('Name'); аналогично с 'OnlyShowIn=' in line. Кстати, напишите уже key, value = words.split('=', maxsplit=2) и не мучайтесь. Плюс вы в parse_cmd склеиваете пустой строкой разбитые '=' символы, т.е. если в команде есть '=', то она накрывается. А так - нет проблем.

Я уж не говорю о подстановках, которые лень было делать и которые выкидываются.

В ощщем, вот вам патч небольшой, поглядите. Там надо побольше перефигачить, но это если мне доступ к проекту дадут :).

http://pastebin.com/tZzLR8Lf

Pythonist ()
Ответ на: комментарий от anonymous

setyp.py копирует скрипты (у меня лично в системе) в /usr/lib{LIBDIRSUFFIX}/python2.6/site-packages/snapfly
в /usr/share или /usr/local/share оно уже не просится - факт.
Именно этот скрипт писал по образу и подобию проги volti.
подозреваю что не надо build отдельно делать. Я делаю сразу python setup.py install и все нормально компилится в байткод и ставится. В общем, давай это проверим.
насчет установочного скрипта и проверки им окружения - окружение у меня проверяется в самом файле snapfly и проверяет откуда запущено приложение (из просто распакованного архива или уже нормально установленное)

try:
    if os.path.isdir(os.path.join(".","src")) and os.path.isfile(
            os.path.join(".","setup.py")):
        from src import snapfly_core
        from src import ui
        from src.version import application
    else:
        from snapfly import snapfly_core
        from snapfly import ui
        from snapfly.version import application
except ImportError:
        import traceback
        traceback.print_exc(sys.stderr)
        sys.exit(1)

Nomer_Uno ()

ИМХО приверженцы минимализма выбравшие OpenBox, FluxBox..etc наврядли будут использовать это и плодить сущности, но пожелаю разработчикам успехов в их начинаниях.

P.S. А что открывается при клике на пункте меню «Настройки» в OpenBox?

partyzan ★★★ ()

На скриншотах очень приятно выглядит. Спасибо разработчикам. При случае опробую.

cyberstorm ()

А когда сам релиз AgiliaLinux ждать?

anonymous ()
Ответ на: комментарий от anonymous

Релиз ориентировочно в феврале.
Бета2 выйдет сегодня-завтра, если ничего серьезного не случится :)

Nomer_Uno ()
Ответ на: комментарий от partyzan

где в snapfly сущности?
стандартное меню хоть и быстрое но не динамическое, а сторонние скрипты-генераторы хорошо если рабочие и корректные, так еще и зависят от гном-панели зачастую, да и позадумчивее они, потому что генерят при каждом обращении к меню, а у нас только при изменении директорий с desktop-файлами.
Категория «Настройки Openbox» - это моя кастомная категория (да, можно сколько угодно таких добавить). там находится obconf, переконфигурирование опенбокса, и 2 пункта с правкой конфигов - rc.xml и autostart.sh

Nomer_Uno ()
Ответ на: комментарий от partyzan

> ИМХО приверженцы минимализма выбравшие OpenBox, FluxBox..etc наврядли будут использовать это и плодить сущности, но пожелаю разработчикам успехов в их начинаниях.

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

vovans ★★★★★ ()
Ответ на: комментарий от Nomer_Uno

Да,перекачав,и сразу- ./setup install заработал . Чего не хватает-поддержки локализации.Т.е. у меня на русской СюСе-все ваше меню на английском(в системе все на русском).Почему так:

Ваша программа не поддерживает такие строки в desktop файле:

X-SuSE-translate читать- http://ru.opensuse.org/SUSE_Package_Conventions/Desktop_Menu (в большинстве desktop файлов стоит X-SuSE-translate=true и в самом desktop файле нет локализации,вот пример http://paste.ly/4Vtz в системе меню по русски,у вас нет)

X-GNOME-FullName[ЯЗЫК] и GenericName[ЯЗЫК] (т.е. такие строки в desktop файле есть,даже с русской локализацией,но у вас на англ(по дефолту который))

anonymous ()
Ответ на: комментарий от anonymous

Мде, для Suse надо будет добавить поддержку отдельно. Будет в следующем релизе, я думаю.

drakmail ★★★★ ()
Ответ на: комментарий от anonymous

надеюсь вы понимаете что это чисто suse-specific тема? Думаю все-же сделаем какой нибудь костыль, если он не будет слишком сложным и замудренным :)

Nomer_Uno ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.