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 ()
Последнее исправление: cetjs2 (всего исправлений: 5)

Ответ на: комментарий от funeralismatic

Про i3 не могу сказать, пока особо не вникал. Красивости в осоме я видел только у регистранта vim, и то там просто удачно подобраны обои и цвета, по сути ничего необычного нет. Опять же красивость - понятие растяжимое, я никогда не наводил красивостей (в местном понимании этого слова) в используемых WM, мне гораздо интереснее как оно конфигурируется.

alozovskoy ★★★★★
() автор топика

вы лучше оцените, что для установки xcffib нужен установленный ghc с cabal. софт на питоне, ага.

nwalker
()
26 февраля 2015 г.

А кто нибудь реально поставил этот менеджер? А то при работе возникла ошибка и нигде не могу найти решение.

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

У меня он, задавай свои ответы. И за одно какая версия, а то там два релиза уже было после этой новости (но там в основном багфиксы, не должны были ничего сломать).

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

После вопроса о версии задумался, а какая у меня версия. Оказалось 0.8. Я ставил sudo apt-get install qtile.

Решил поставить с git последнюю. Может вопрос отпал бы сам собой. Поставил с git. sudo python setup.py install

Возникли другие проблемы.

Для начала скажите как его корректнее поставить?

Prizrak-Pro
()
Ответ на: комментарий от Prizrak-Pro

Версия из git возможно будет свежее той, что в репозитории дистрибутива, но можно использовать ppa в случае Ubuntu, там пакеты разработчик WM собирает, так что тоже будет свежая версия.

С Git если качать то нужно брать стабильную (не develop а master) ветку, а так все действительно ставится и работает через sudo python setup.py install, но можно поймать проблемы с зависимостями. В общем, рекомендую обратиться к официальной документации, ну или если что показывать логи ошибок.

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

ppa и использовал. Правда потом ещё и с git поставил.

Получилось так. Что для python пакет qtile у меня 0.9.1. А бинарника 2. Один лежит /usr/bin/qtile и это версия 0.8. И ещё бинарник, который с git установился 0.9.1. По пути /usr/loca/bin/qtile Ну на другой машине все работает. Это по версиям.

Теперь проблема. Запускаю для теста я так Xephyr +extension RANDR -screen ${SCREEN_SIZE:-800x600} :1 -ac & (sleep 1; env DISPLAY=:1 /usr/bin/qtile -l INFO $@ & env DISPLAY=:1 xterm)

С дефолтной конфигурацией все нормально. В документации есть пример. from libqtile.command import Client c = Client() print c.status()

Так вот если я это пытаюсь запихнуть в дефолтную конфигцраци и запустить. То все падает с такой ошибкой.

Initializing built-in extension Generic Event Extension
Initializing built-in extension SHAPE
Initializing built-in extension MIT-SHM
Initializing built-in extension XInputExtension
Initializing built-in extension XTEST
Initializing built-in extension BIG-REQUESTS
Initializing built-in extension SYNC
Initializing built-in extension XKEYBOARD
Initializing built-in extension XC-MISC
Initializing built-in extension SECURITY
Initializing built-in extension XINERAMA
Initializing built-in extension XFIXES
Initializing built-in extension RENDER
Initializing built-in extension RANDR
Initializing built-in extension COMPOSITE
Initializing built-in extension DAMAGE
Initializing built-in extension MIT-SCREEN-SAVER
Initializing built-in extension DOUBLE-BUFFER
Initializing built-in extension RECORD
Initializing built-in extension DPMS
Initializing built-in extension Present
Initializing built-in extension DRI3
Initializing built-in extension X-Resource
Initializing built-in extension XVideo
Initializing built-in extension XVideo-MotionCompensation
Initializing built-in extension SELinux
Initializing built-in extension GLX
[dix] Could not init font path element /usr/share/fonts/X11/cyrillic, removing from list!
[dix] Could not init font path element /usr/share/fonts/X11/100dpi/:unscaled, removing from list!
[dix] Could not init font path element /usr/share/fonts/X11/75dpi/:unscaled, removing from list!
[dix] Could not init font path element /usr/share/fonts/X11/100dpi, removing from list!
[dix] Could not init font path element /usr/share/fonts/X11/75dpi, removing from list!
No handlers could be found for logger "qtile"
2015-02-27 09:21:34,321 qtile init_log:93  Starting Qtile
2015-02-27 09:21:34,324 qtile make_qtile:103  Error while reading config file
Traceback (most recent call last):
  File "/usr/bin/qtile", line 101, in make_qtile
    c = confreader.File(options.configfile, is_restart=options.no_spawn)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/confreader.py", line 63, in __init__
    raise ConfigError(str(v) + "\n\n" + tb)
ConfigError: Could not open ~/.cache/qtilesocket.:1.0

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/confreader.py", line 53, in __init__
    config = __import__(os.path.basename(fname)[:-3])
  File "~/.config/qtile/config.py", line 37, in <module>
    print c.status()
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/command.py", line 113, in __call__
    return self.call(self.selectors, self.name, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/command.py", line 242, in call
    state, val = self.client.call((selectors, name, args, kwargs))
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/ipc.py", line 137, in call
    return self.send(data)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/ipc.py", line 125, in send
    raise IPCError("Could not open %s" % self.fname)
IPCError: Could not open ~/.cache/qtilesocket.:1.0

Traceback (most recent call last):
  File "/usr/bin/qtile", line 122, in <module>
    q = make_qtile()
  File "/usr/bin/qtile", line 101, in make_qtile
    c = confreader.File(options.configfile, is_restart=options.no_spawn)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/confreader.py", line 63, in __init__
    raise ConfigError(str(v) + "\n\n" + tb)
libqtile.confreader.ConfigError: Could not open ~/.cache/qtilesocket.:1.0

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/confreader.py", line 53, in __init__
    config = __import__(os.path.basename(fname)[:-3])
  File "~/.config/qtile/config.py", line 37, in <module>
    print c.status()
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/command.py", line 113, in __call__
    return self.call(self.selectors, self.name, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/command.py", line 242, in call
    state, val = self.client.call((selectors, name, args, kwargs))
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/ipc.py", line 137, in call
    return self.send(data)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/ipc.py", line 125, in send
    raise IPCError("Could not open %s" % self.fname)
IPCError: Could not open ~/.cache/qtilesocket.:1.0

Ковыряю qtile 2 дня. И постоянно была такая ошибка. Что бы для поста скопировать логи, запустил тест. И в один момент ошибки не было, было OK. Так и должно быть. Думал уже и писать не нужно. Но после сколько не запускал, опять та же ошибка возникает.

Prizrak-Pro
()
Ответ на: комментарий от Prizrak-Pro

В документации есть пример. from libqtile.command import Client c = Client() print c.status()

Вообще это в конфиге делать не нужно, это можно в стороннем скрипте вызвать этот клиент (то есть уже в запущенном qtile) и через него управлять WM. Скорее всего и ошибка при открытии файла ~/.cache/qtilesocket.$DISPLAY из-за того что пытаешься запустить этот клиент внутри основной сессии (у меня тоже были проблемы при его использовании в конфиге, но я логи не смотрел, почитал в доках что так делать не следует).

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

Спасибо. Теперь это я.

И вот второе. У меня ещё точно такая же ошибка при использовании qsh

> ls
layout/  widget/  screen/  bar/     window/  group/ 
> cd bar
bar> ls
Traceback (most recent call last):
  File "/usr/local/bin/qsh", line 5, in <module>
    pkg_resources.run_script('qtile==0.9.1', 'qsh')
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 528, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1394, in run_script
    execfile(script_filename, namespace, namespace)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/EGG-INFO/scripts/qsh", line 62, in <module>
    main()
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/EGG-INFO/scripts/qsh", line 56, in main
    qsh.loop()
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/sh.py", line 299, in loop
    self.process_command(line)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/sh.py", line 281, in process_command
    val = builtin(args)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/sh.py", line 192, in do_ls
    l = self._ls(self.current)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/sh.py", line 123, in _ls
    attrs, itms = self._inspect(obj)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/sh.py", line 116, in _inspect
    t, itms = obj.parent.items(obj.name)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/command.py", line 113, in __call__
    return self.call(self.selectors, self.name, *args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/command.py", line 242, in call
    state, val = self.client.call((selectors, name, args, kwargs))
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/ipc.py", line 137, in call
    return self.send(data)
  File "/usr/local/lib/python2.7/dist-packages/qtile-0.9.1-py2.7.egg/libqtile/ipc.py", line 125, in send
    raise IPCError("Could not open %s" % self.fname)
libqtile.ipc.IPCError: Could not open ~/.cache/qtilesocket.:0.0
Prizrak-Pro
()
Ответ на: комментарий от Prizrak-Pro

Что говорит ~/.cache/qtilesocket*? Если запускаешь через xephyr то на DISPLAY=:0.0 у тебя висит текущий WM\DE, перез запуском qsh выполни export DISPLAY=:1.0.

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

После

export DISPLAY=:1.0
Ошибка меняется на
libqtile.ipc.IPCError: Could not open ~/.cache/qtilesocket.:1.0

И так далее.

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