Find file
Fetching contributors…
Cannot retrieve contributors at this time
195 lines (187 sloc) 9.35 KB
qtile 0.9.0, released 2015-01-20:
* !!! Dependency Changes !!!
New dependencies will need to be installed for qtile to work
- drop xpyb for xcffib (XCB bindings)
- drop py2cairo for cairocffi (Cairo bindings)
- drop PyGTK for asyncio (event loop, pangocairo bindings managed
- qtile still depends on gobject if you want to use anything that uses
dbus (e.g. the mpris widgets or the libnotify widget)
* features
- add Python 3 and pypy support (made possible by dependency changes)
- new layout for vertical monitors
- add startup_once hook, which is called exactly once per session (i.e.
it is not called when qtile is restarted via lazy.restart()). This
eliminates the need for the execute_once() function found in lots of
user configs.
- add a command for showing/hiding the bar (lazy.hide_show_bar())
- warn when a widget's dependencies cannot be imported
- make qtile.log more useful via better warnings in general, including
deprecation and various other warnings that were previously
- new text-polling widget super classes, which enable easy
implementation of various widgets that need to poll things outside
the event loop.
- add man pages
- large documentation update, widget/layout documentation is now
autogenerated from the docstrings
- new ImapWidget for checking imap mailboxes
* bugfixes
- change default wmname to "LG3D" (this prevents some java apps from
not working out of the box)
- all code passes flake8
- default log level is now WARNING
- all widgets now use our config framework
- windows with the "About" role float by default
- got rid of a bunch of unnecessary bare except: clauses
qtile 0.8.0, released 2014-08-18:
* features
- massive widget/layout documentation update
- new widget debuginfo for use in qtile development
- stack has new autosplit, fair options
- matrix, ratiotile, stack, xmonad, zoomy get 'margin' option
- new launchbar widget
- support for matching WM_CLASS and pid in Match
- add support for adding dgroups rules dynamically and via ipc
- Clock supports non-system timezones
- new mpris2 widget
- volume widget can use emoji instead of numbers
- add an 'eval' function to qsh at every object level
- bar gradients support more colors
- new Clipboard widget (very handy!)
* bugfixes
- bitcoin ticker widget switched from MtGox (dead) to btc-e
- all widgets now use qtile's defaults system, so their defaults are
settable globally, etc.
- fix behavior when screens are cloned
- all widgets use a unified polling framework
- "dialog" WM_TYPEs float by default
- respect xrandr --primary
- use a consistent font size in the default config
- default config supports mouse movements and floating
- fix a bug where the bar was not redrawn correctly in some multiscreen
- add travis-ci support and make tests vastly more robust
* config breakage
- libqtile.layout.Stack's `stacks` parameter is now `num_stacks`
qtile 0.7.0, released 2014-03-30:
* features
- new disk free percentage widget
- new widget to display static image
- per core CPU graphs
- add "screen affinity" in dynamic groups
- volume widget changes volume linear-ly instead of log-ly
- only draw bar when idle, vastly reducing the number of bar draws and
speeding things up
- new Gmail widget
- Tile now supports automatically managing master windows via the
`master_match` parameter.
- include support for minimum height, width, size increment hints
* bugfixes
- don't crash on any exception in main loop
- don't crash on exceptions in hooks
- fix a ZeroDivisionError in CPU graph
- remove a lot of duplicate and unused code
- Steam windows are placed more correctly
- Fixed several crashes in qsh
- performance improvements for some layouts
- keyboard layout widget behaves better with multiple keyboard
* config breakage
- Tile's shuffleMatch is renamed to resetMaster
qtile 0.6, released 2013-05-11:
!!! Config breakage !!!
This release breaks your config file in several ways:
- The Textbox widget no longer takes a ``name'' positional parameter,
since it was redundant; you can use the ``name'' kwarg to define it.
- manager.Group (now _Group) is not used to configure groups any more;
config.Group replaces it. For simple configurations (i.e.
Group("a") type configs), this should be a drop in replacement.
config.Group also provides many more options for showing and hiding
groups, assigning windows to groups by default, etc.
- The Key, Screen, Drag, and Click objects have moved from the manager
module to the config module.
- The Match object has moved from the dgroups module to the config
- The addgroup hook now takes two parameters: the qtile object and the
name of the group added:
def addgroup_hook(qtile, name):
- The nextgroup and prevgroup commands are now on Screen instead of
For most people, you should be able to just:
sed -i -e 's/libqtile.manager/libqtile.config'
...dgroups users will need to go to a bit more work, but hopefully
configuration will be much simpler now for new users.
* features
- New widgets: task list,
- New layout: Matrix
- Added ability to drag and drop groups on GroupBox
- added "next urgent window" command
- added font shadowing on widgets
- maildir widget supports multiple folders
- new config option log_level to set logging level (any of
- add option to battery widget to hide while level is above a certain
- vastly simplify configuration of dynamic groups
- MPD widget now supports lots of metadata options
* bugfixes
- don't crash on restart when the config has errors
- save layout and selected group state on restart
- varous EWMH properties implemented correctly
- fix non-black systray icon backgrounds
- drastically reduce the number of timeout_add calls in most widgets
- restart on RandR attach events to allow for new screens
- log level defaults to ERROR
- default config options are no longer initialized when users define
their corresponding option (preventing duplicate widgets, etc.)
- don't try to load config in qsh (not used)
- fix font alignment across Textbox based widgets
qtile 0.5, released 2012-11-11:
(Note, this is not complete! Many, many changes have gone in to 0.5, by a
large number of contributors. Thanks to everyone who reported a bug or
fixed one!)
* features
- Test framework is now nose
- Documentation is now in sphinx
- Several install guides for various OSes
- New widgets: battery based icon, MPRIS1, canto, current layout, yahoo
weather, sensors, screen brightness, notifiy, pacman, windowtabs,
she, crashme, wifi.
- Several improvements to old widgets (e.g. battery widget displays low
battery in red, GroupBox now has a better indication of which screen
has focus in multi-screen setups, improvements to Prompt, etc.)
- Desktop notification service.
- More sane way to handle configuration files
- Promote dgroups to a first class entity in libqtile
- Allow layouts to be named on an instance level, so you can:
layouts = [
# a layout just for gimp
layout.Slice('left', 192, name='gimp', role='gimp-toolbox',
fallback=layout.Slice('right', 256, role='gimp-dock',
fallback=layout.Stack(stacks=1, **border_args)))
dynamic_groups = { 'gimp': {'layout': 'gimp'} }
Dgroups(..., dynamic_groups, ...)
- New Layout: Zoomy
- Add a session manager to re-exec qtile if things go south
- Support for WM_TAKE_FOCUS protocol
- Basic .desktop file for support in login managers
- Qsh reconnects after qtile is restarted from within it
- Textbox supports pango markup
- Examples moved to qtile-examples repository.
* bugfixes
- Fix several classes of X races in a more sane way
- Minor typo fixes to most widgets
- Fix several crashes when drawing systray icons too early
- Create directories for qtile socket as necessary
- PEP8 formatting updates (though we're not totally there yet)
- All unit tests pass
- Lots of bugfixes to MonadTall
- Create IPC socket directory if necessary
- Better error if two widgets have STRETCH width
- Autofloat window classes can now be overridden
- xkeysyms updated