'returns list of visible groups.
The existing groups are filtered by the visible_groups attribute and
their label. Groups with an empty string as label are never contained.
Groups that are not named in visible_groups are not returned.'

@property
def groups(self):

    if self.visible_groups:
        return [g for g in self.qtile.groups if (g.label and (g.name in self.visible_groups))]
    else:
        return [g for g in self.qtile.groups if g.label]
