356 lines (339 sloc) 16.8 KB
qtile 0.10.7, released 2017-02-14:
* features
- new MPD widget, widget.MPD2, based on `mpd2` library
- add option to ignore duplicates in prompt widget
- add additional margin options to GroupBox widget
- add option to ignore mouse wheel to GroupBox widget
- add `watts` formatting string option to Battery widgets
- add volume commands to Volume widget
- add Window.focus command
* bugfixes
- place transient windows in the middle of their parents
- fix TreeTab layout
- fix CurrentLayoutIcon in Python 3
- fix xcb handling for xcffib 0.5.0
- fix bug in Screen.resize
- fix Qtile.display_kb command
qtile 0.10.6, released 2016-05-24:
!!! qsh renamed to qshell !!!
This avoids name collision with other packages
* features
- Test framework changed to pytest
- Add `startup_complete` hook
* bugfixes
- Restore dynamic groups on restart
- Correct placement of transient_for windows
- Major bug fixes with floating window handling
* file path changes (XDG Base Directory specification)
- the default log file path changed from ~/.qtile.log to
- the cache directory changed from ~/.cache to ~/.cache/qtile
- the prompt widget's history file changed from ~/.qtile_history to
qtile 0.10.5, released 2016-03-06:
!!! Python 3.2 support dropped !!!
!!! GoogleCalendar widget dropped for KhalCalendar widget !!!
!!! qtile-session script removed in favor of qtile script !!!
* features
- new Columns layout, composed of dynamic and configurable columns of
- new iPython kernel for qsh, called iqsh, see docs for installing
- new qsh command `display_kb` to show current key binding
- add json interface to IPC server
- add commands for resizing MonadTall main panel
- wlan widget shows when you are disconnected and uses a configurable
* bugfixes
- fix path handling in PromptWidget
- fix KeyboardLayout widget cycling keyboard
- properly guard against setting screen to too large screen index
qtile 0.10.4, released 2016-01-19:
!!! Config breakage !!!
- positional arguments to Slice layout removed, now `side` and `width`
must be passed in as keyword arguments
* features
- add alt coin support to BitcoinTracker widget
* bugfixes
- don't use six.moves assignment (fix for >=setuptools-19.3)
- improved floating and fullscreen handling
- support empty or non-charging secondary battery in BatteryWidget
- fix GoogleCalendar widget crash
qtile 0.10.3, released 2015-12-25:
* features
- add wmii layout
- add BSD support to graph widgets
* bugfixes
- fix (some) fullscreen problems
- update google calendar widget to latest google api
- improve multiple keyboard layout support
- fix displaying Systray widget on secondary monitor
- fix spawn file descriptor handling in Python 3
- remove duplicate assert code in
- allow padding_{x,y} and margin_{x,y} widget attrs to be set to 0
qtile 0.10.2, released 2015-10-19:
* features
- add qtile-top memory monitoring
- GroupBox can set visible groups
- new GroupBox highlighting, line
- allow window state to be hidden on WindowName widget
- cmd_togroup can move to current group when None sent
- added MOC playback widget
- added memory usage widget
- log truncation, max log size, and number of log backups configurable
- add a command to change to specific layout index
* bugfixes
- fixed memory leak in dgroups
- margin fixes for MonalTall layout
- improved cursor warp
- remove deprecated imp for Python >= 3.3
- properly close file for NetGraph
- fix MondadTall layout grow/shrink secondary panes for Python 2
- Clock widget uses rather than .fromtimestamp()
- fix Python 3 compatibility of ThermalSensor widget
- various Systray fixes, including implementing XEMBED protocol
- print exception to log during loading config
- fixed xmonad layout margins between main and secondary panes
- clear last window name from group widgets when closed
- add toggleable window border to single xmonad layout
* config breakage
- layouts.VerticalTile `windows` is now `clients`
- layouts.VerticalTile focus_next/focus_previous now take a single
argument, similar to other layouts
qtile 0.10.1, released 2015-07-08:
This release fixes a problem that made the PyPI package uninstallable,
qtile will work with a pip install now
qtile 0.10.0, released 2015-07-07:
!!! Config breakage !!!
- various deprecated commands have been removed:
Screen.cmd_nextgroup: use cmd_next_group
Screen.cmd_prevgroup: use cmd_prev_group
Qtile.cmd_nextlayout: use cmd_next_layout
Qtile.cmd_prevlayout: use cmd_prev_layout
Qtile.cmd_to_next_screen: use cmd_next_screen
Qtile.cmd_to_prev_screen: use cmd_prev_screen
- Clock widget: remove fmt kwarg, use format kwarg
- GmailChecker widget: remove settings parameter
- Maildir widget: remove maildirPath, subFolders, and separator kwargs
* Dependency updates
- cffi>=1.1 is now required, along with xcffib>=0.3 and cairocffi>=0.7
(the cffi 1.0 compatible versions of each)
- Care must be taken that xcffib is installed *before* cairocffi
* features
- add support for themed cursors using xcb-cursor if available
- add CheckUpdate widget, for checking package updates, this deprecates
the Pacman widget
- add KeyboardKbdd widget, for changing keyboard layouts
- add Cmus widget, for showing song playing in cmus
- add Wallpaper widget, for showing and cycling wallpaper
- add EzConfig classes allowing shortcuts to define key bindings
- allow GroupBox urgent highlighting through text
- Bar can be placed vertically on sides of screens (widgets must be
adapted for vertical viewing)
- add recognizing brightness keys
* bugfixes
- deprecation warnings were not printing to logs, this has been fixed
- fix calculation of y property of Gap
- fix focus after closing floating windows and floating windows
- fix various Python 3 related int/float problems
- remember screen focus across restarts
- handle length 1 list passed to Drawer.set_source_rgb without raising
divide by zero error
- properly close files opened in Graph widget
- handle _NET_WM_STATE_DEMANDS_ATTENTION as setting urgency
- fix get_wm_transient_for, request WINDOW, not ATOM
qtile 0.9.1, released 2015-02-13:
This is primarily a unicode bugfix release for 0.9.0; there were several
nits related to the python2/3 unicode conversion that were simply wrong.
This release also adds license headers to each file, which is necessary for
distro maintainers to package Qtile.
* bugfixes
- fix python2's importing of gobject
- fix unicode handling in several places
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 length
- Autofloat window classes can now be overridden
- xkeysyms updated