qtile 0.13.0, released 2018-12-23:
    !!! deprecation warning !!!
        - wmii layout is deprecated in terms of columns layout, which has the
          same behavior with different defaults, see the wmii definition for
          more details
    * features
        - add svg handling for images
        - allow addgroup command to set the layout
        - add command to get current log level
        - allow groupbox to hide unused groups
        - add caps lock indicator widget
        - add custom_command to check_update widget
    * bugfixes
        - better shutdown handling
        - fix clientlist current client tracking
        - fix typo in up command on ratiotile layout
        - various fixes to check_update widget
        - fix 0 case for resize screen

qtile 0.12.0, released 2018-07-20:
    !!! Config breakage !!!
        - Tile layout commands up/down/shuffle_up/shuffle_down changed to be
          more consistent with other layouts
        - move qcmd to qtile-cmd because of conflict with renameutils, move
          dqcmd to dqtile-cmd for symmetry
    * features
        - add `add_after_last` option to Tile layout to add windows to the end
          of the list.
        - add new formatting options to TaskList
        - allow Volume to open app on right click
    * bugfixes
        - fix floating of file transfer windows and java drop-downs
        - fix exception when calling `cmd_next` and `cmd_previous` on layout
          without windows
        - fix caps lock affected behaviour of key bindings
        - re-create cache dir if it is deleted while qtile is running
        - fix CheckUpdates widget color when no updates
        - handle cases where BAT_DIR does not exist
        - fix the wallpaper widget when using `wallpaper_command`
        - fix Tile layout order to not reverse on reset
        - fix calling `focus_previous/next` with no windows
        - fix floating bug is BSP layout

qtile 0.11.1, released 2018-03-01:
    * bug fix
        - fixed pip install of qtile

qtile 0.11.0, released 2018-02-28:
    !!! Completely changed extension configuration, see the documentation !!!
    !!! `extention` subpackage renamed to `extension` !!!
    !!! `extentions` configuration variable changed to `extension_defaults` !!!
    * features
        - qshell improvements
        - new MonadWide layout
        - new Bsp layout
        - new pomodoro widget
        - new stock ticker widget
        - new `client_name_updated` hook
        - new RunCommand and J4DmenuDesktop extension
        - task list expands to fill space, configurable via `spacing` parameter
        - add group.focus_by_name() and group.info_by_name()
        - add disk usage ratio to df widget
        - allow displayed group name to differ from group name
        - enable custom TaskList icon size
        - add qcmd and dqcmd to extend functionality around qtile.command
          functionality
        - add ScratchPad group that has configurable drop downs
    * bugfixes
        - fix race condition in Window.fullscreen
        - fix for string formatting in qtile_top
        - fix unicode literal in tasklist
        - move mpris2 initialization out of constructor
        - fix wlan widget variable naming and division
        - normalize behavior of layouts on various commands
        - add better fallback to default config
        - update btc widget to use coinbase
        - fix cursor warp when using default layout implementation
        - don't crash when using widget with unmet dependencies
        - fix floating window default location

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
          ~/.local/share/qtile/qtile.log
        - the cache directory changed from ~/.cache to ~/.cache/qtile
        - the prompt widget's history file changed from ~/.qtile_history to
          ~/.cache/qtile/prompt_history

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
          windows
        - 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
          format
    * 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 test_verticaltile.py
        - 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
          (lazy.to_layout_index(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 datetime.now() 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
          internally)
        - 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
          nonexistent
        - 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
          environments
        - 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
          configurations
    * 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
          module.
        - The addgroup hook now takes two parameters: the qtile object and the
          name of the group added:
              @hook.subscribe
              def addgroup_hook(qtile, name):
                  pass
        - The nextgroup and prevgroup commands are now on Screen instead of
          Group.
    For most people, you should be able to just:
        sed -i -e 's/libqtile.manager/libqtile.config' config.py
    ...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
          logging.{DEBUG, INFO, WARNING, ERROR, CRITICAL})
        - add option to battery widget to hide while level is above a certain
          amount
        - 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
