Removed 1 unnecessary level of cyclomatic complexity
Removed another unnessary level
Use pre-calculated cidx
Removed duplicate if/else
Fixed fuzzy commit 9285075e2d66f396c

Closes #292
fixed tasklist widget, added the needed defaults

Closes #294
Prevent MPD widget from crashing on missing metadata

Closes #296
readded the option to set master and ratio for tile from Dgroup
move dgroups inizialitation to a method, to allow dynamic adding
fix exclusive, instrusive, and not persistent groups in dgroups
moved rules from Group to dgroups_app_rules and moved Rule to config

this rules makes no sense in the group object becouse they are group
independent.
config example:

dgroups_app_rules = [
        # Everything i want to be float, but don't want to change group(intrusive)
        Rule(Match(title=['nested', 'gscreenshot'],
                   wm_class=['Gcr-prompter', 'Ghost',
                        re.compile('Gnome-keyring-prompt.*?')],
                   wm_type=['dialog', 'utility', 'splash'],
                   ),
            float=True, intrusive=True),

        # floating windows
        Rule(Match(wm_class=["plugin-container", 'Gimp', 'Wine', 'Xephyr']),
            float=True),
        ]
fix deletion of groups when len(groups) -= 1+len(screens)
Remove layout specific code from dgroups
Add Matrix layout

Closes #299
Update pacman.py

Checkupdates is a non-sudo way of checking for updates as using pacman -Qu
only checks for out-of-date packages with your local package list. Pacman -Su
updates the package lists but requires sudo access to do so.

You could have a cron job that updates the package lists and then pacman -Qu
would suffice.

Closes #301
Move next/prevgroup, add togglegroup
update unit tests

grouptoggle -> togglegroup
whitespace fixes
When deleting a group, switch to previous group

...insted of the previous configured group.

Closes #304
Fix unit test