LINUX.ORG.RU

Вышел Qtile 0.9.0

 , ,


0

2

20 января вышла новая версия Qtile - тайлового оконного менеджера, написанного и конфигурируемого на python. Релиз получил номер 0.9.0.

Изменения в релизе:

  • Зависимости
    • xpyb заменен на xcffib (XCB bindings)
    • py2cairo заменен на cairocffi (Cairo bindings)
    • PyGTK заменен asyncio (для цикла событий, а биндинги pangocairo обрабатываются внутренним механизмом)
    • gobject необходим, если какие-либо части оконного менеджера будут работать через dbus (например, если используются виджеты «mpris» или «libnotify»)
  • Улучшения
    • Добавлена поддержка Python3 и pypy (изменены зависимости)
    • Добавлен новый вариант разметки (layout) для вертикальных мониторов
    • Добавлен хук «startup_once hook», вызываемый единожды за сессию (то есть он не вызывается если Qtile был перезапущен через вызов lazy.restart()). Это устраняет необходимость в функции вроде «execute_once()», которая присутствует в большинстве пользовательских конфигураций
    • Добавлена функция для отображения\скрытия панели (lazy.hide_show_bar())
    • Добавлены предупреждения при невозможности импортировать зависимости виджета
    • Больше важных сообщений отображается в логе, что сделало его более полезным
    • Реализован класс виджетов «text-polling», упрощающий реализацию виджетов, получающих информацию в цикле от внешних приложений.
    • Добавлена справка (man)
    • Документация существенно обновлена, а описания виджетов и разметки теперь генерируются автоматически из docstring
    • Добавлен новый виджет «ImapWidget» для проверки почтовых ящиков через imap
  • Исправления
    • Для улучшения работы приложений на java стандартное имя менеджера (wmname) изменено на «LG3D».
    • Весь код прошел стилистическую проверку при помощи flake8
    • Уровень логирования «по умолчанию» - WARNING
    • Все виджеты теперь конфигурирются встроенными средставами
    • Окна с ролью «About» по умолчанию плавающие
    • Удалено лишнее исключение «clauses»

Репозиторий на GitHub

>>> CHANGELOG в репозитории проекта

★★★★★

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

Python

Тормоза будут не хуже КДЕ, вестимо.

DeadEye ★★★★★ ()

PyGTK заменен asyncio (для цикла событий, а биндинги pangocairo обрабатываются внутренним миханизмом)
миханизмом

По бойтесь Бога.

BRE ★★ ()

Страшненько. Неняшненько. Ненужненько.

Zaggani ()

А чем оно лучше осома? или ничем?

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

С осомом у меня как-то не сложилось. Каких-то киллерфич назвать не смогу.

alozovskoy ★★★★★ ()

ненужно

по конфигурируемости xmonad или stumpwm все равно не перебить, а wm, которые «просто работают» и так хватает.

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

Согласен, но «миханизм» это жесть, да ещё и после подтверждения. :)

BRE ★★ ()

написанного и конфигурируемого на python

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

crowbar ()

написанного и конфигурируемого на python.

Однозначно не нужно. К тому же, работает оно через какие-то костыли.

Meyer ★★★★ ()

пятон, гэтэка

Ой.. идите лесом.

Deleted ()

Питонный тайловый менеджер на GTK под названием Qtile...

Myau ★★★★ ()

Ненужно какое-то с дурацким названием. Или заранее готовятся.

mandala ★★★★ ()

Интересно, оно работает или как большинство Python-приложений - капризно сообщает, что ему чего-то нужно от пользователя длинным стектрейсом с непонятными значками и падает?

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

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

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

А чем оно лучше i3? или ничем?

fxd

А чем оно лучше notion? или ничем?

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

Какого По бояться? Эдгара? Так он вроде не особо страшный...

ktan ★★★ ()

Выглядит с каждым разом все интереснее и интереснее. Другое дело, что конфиг для awesome написан еще года 3 назад и переписывать его откровенно лень.

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

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

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

Раз приложения низкоуровневые, написанные на Си, в большинстве своём такое умеют (особенно серверные приложения для *nix - во многом именно благодаря адекватным возможностям отладки они стали такими популярными), то коль скоро «высокоуровневые» приложения на пихтоне плюются стек-трейсами - значит, пихтон - это УГ для школоты. Тчк.

DRVTiny ★★★★★ ()

это что на главную тянет?

splinter ★★★★★ ()

xpyb заменен на xcffib (XCB bindings)

py2cairo заменен на cairocffi (Cairo bindings)

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

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

должен получить только сообщение об ошибке и ещё желательно - какие-то рекомендации по её исправлению.

Вот простые примеры, но в целом все стактрейсы подобны:

$ cat test.py 
#!/usr/bin/env python

import foobarololo

$ python test.py 
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    import foobarololo
ImportError: No module named foobarololo
$ cat test.py 
#!/usr/bin/env python

print 'string' / 2

$ python test.py 
Traceback (most recent call last):
  File "test.py", line 3, in <module>
    print 'string' / 2
TypeError: unsupported operand type(s) for /: 'str' and 'int'

Собственно я не вижу в чем проблема понять эти сообщения. «Продуктивные» трейсы будут отличаться от примеров лишь тем, что в начале будет перечислено больше вызовов («функция a строка 1 файла foo.py вызвала функцию b строка 42 файла bar.py, <...>, и там у нас ошибка SomeError»).

И, да, какие рекомендации тут можно дать? Правильно пиши имя модуля и не дели строку на число? Это и так из трейса видно.

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

Приведи, пожалуйста, пример. Пусть и из C.

Кстати, можно понавешать обработчиков на каждый экзепшн и писать не трейс, а «человеческую» ошибку, но кому это нужно? Обычному пользователю это все равно ничего не даст (в код то он не полезет), а знакомому с используемым ЯП пользователю стектрейс (который во всех скриптах на этом языке по одному принципу собирается) даст гораздо больше информации, чем какое-то «человеческое» описание ошибки. И, да, гораздо лучше писать нормальную документацию.

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

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

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

Несколько раз перечитал новость, чтобы убедиться, что оно действительно на гтк. То ли стеб, то ли просто странные люди.

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

Суть в том, что показывать пользователю стек-трейс это самый верный способ получить максимум инфы для правки ошибки самим автором.

Fixed, дурашка.

bj ()

Дожили! Наркоманы пишут оконные менеджеры.

anonymous ()

Qt + Python. Я в 2000 году покупал Pentium III за $1000 - потянет ли он? Diablo II тянет, а тайловый оконный менеджер Qtile сомневаюсь...

ZenitharChampion ★★★★★ ()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от anonymous

Дожили! Наркоманы пишут оконные менеджеры.

Всегда так было вроде

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

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

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

Это на cffi, чтобы с PyPy работало же!

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

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

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

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

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

DRVTiny ★★★★★ ()

тайловый оконный менеджер

А что он там тайлует?

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

Обычному пользователю это все равно ничего не даст (в код то он не полезет),

Есть 2 типа ошибок: ошибки самой программы и внешние ошибки - ошибки конфигурации самой программы или её окружения.

Нормальная программа:

а) Проверяет своё окружение и если что-то не так - внятно говорит об этом: «нет прав на запись в каталог foo»

б) Проверяет конфигурацию и если что-то криво сконфигурировано - говорит об этом: 'неправильное значение параметра «имя хоста»'

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

В объективной действительности же самый распространённый случай - это когда пользователь что-то сконфигурировал не так или права дал программе не такие или что не поставил. Эти ошибки легко отслеживаются. Вместо этого программист как правило пишет программу с расчётом на то, что «всё ОК по дефолту, а если это не так, то пусть будет стек-трейс»

DRVTiny ★★★★★ ()
Последнее исправление: DRVTiny (всего исправлений: 1)
Ответ на: комментарий от DRVTiny

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

Щито? Версии каких библиотек (надеюсь не lib*)?

Как это можно фиксить?

В большинстве случае по стеку ясно что фиксить. В том числе и обновить минимальную версию зависимости.

Кстати, с каких пор ты великим питонистом заделался, чтоб обсуждать ненужность стектрейсов?

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

В объективной действительности же самый распространённый случай - это когда пользователь что-то сконфигурировал не так

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

У вас ус, того, отклеился.

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

б) Проверяет конфигурацию и если что-то криво сконфигурировано - говорит об этом: 'неправильное значение параметра «имя хоста»'

А что если конфиг - это программа на тьюринг-полном ЯП? Как ты собрался спрогнозировать ошибки в нем?

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

По бойтесь Бога.

Побойся Розенталя.

anonymous ()
Ответ на: ненужно от x4DA

Re: ненужно

пфффф... перебито

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

ну и сидел бы под дефолтным гномом или кедами которые при падении окошко с неработающей отправкой сообщения об ошибке... qtile не для пользователей, которым эти окошки нравятся, да

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

потому что первый был неподдерживаемым апитоничным куском говна... в обоих случаях

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