diff options
| -rw-r--r-- | examples/plugins/pacman | 62 | ||||
| -rw-r--r-- | src/plugins/pacman.py | 12 | 
2 files changed, 68 insertions, 6 deletions
diff --git a/examples/plugins/pacman b/examples/plugins/pacman new file mode 100644 index 0000000..3ce20fb --- /dev/null +++ b/examples/plugins/pacman @@ -0,0 +1,62 @@ +# -*- python -*- + +# A xpybar configuration example testing the features of plugins.pacman + +import time +import threading + +from plugins.pacman import Pacman +from plugins.clock import Clock + + +OUTPUT, HEIGHT, YPOS, TOP = 0, 5 * 12, 24, True + + +clock = Clock(sync_to = 30 * Clock.MINUTES) + +start_ = start +def start(): +    start_() +    async(lambda : clock.continuous_sync(lambda : bar.invalidate())) + + +def redraw(): +    def opts(deps, req_installed): +        rc = [] +        for pkg, desc, installed in deps: +            text = pkg +            if desc is not None: +                text += '(%s)' % desc +            if req_installed and not installed: +                text = '\033[31m%s\033[m' % text +            rc.append(text) +        return rc +         +    def get(installed): +        p = Pacman('python', installed) +         +        text = '%s=%s[%s] for %s (%s) from %s under %s provides (%s), replaces (%s) and conflicts with (%s)' +        text += ' and depends on (%s) and\noptionally (%s), is validated by (%s) and packaged by %s at %s, ' +        text += 'with size %.2fKB' +         +        params = [p.name, p.version, ','.join(p.groups), p.architecture, p.description, p.url, +                  ','.join(p.licenses), ','.join(p.provides), ','.join(p.replaces), ','.join(p.conflicts), +                  ','.join(p.depends), ','.join(opts(p.optdepends, installed)), ','.join(p.validated_by), +                  (p.packager if p.packager else '\033[31munknown\033[m'), p.build_date, p.installed_size] +         +        if not installed: +            text += ', %.2fKB download from %s' +            params += [p.download_size, p.repository] +         +        if installed: +            text += ', installed %s %splicitly with%s script,\n' +            text += 'required by %i packages and optionally by %i packages' +            params += [p.install_date, ('ex' if p.installed_explicitly else 'im'), +                       ('' if p.install_script else 'out'), len(p.required), len(p.optrequired)] +         +        return text % tuple(params) +     +    text = '%s\n%s' % (get(True), get(False)) +    bar.clear() +    bar.draw_coloured_text(0, 10, 0, 2, text) + diff --git a/src/plugins/pacman.py b/src/plugins/pacman.py index b490bde..049a4cc 100644 --- a/src/plugins/pacman.py +++ b/src/plugins/pacman.py @@ -29,7 +29,7 @@ class Pacman:      @variable  required:list<str>                  Packages that require this package      @variable  optrequired:list<str>               Packages that this package is optional for      @variable  install_date:str                    The date and time the package was installed -    @variable  install_explicitly:bool             Whether the package was installed explicitly +    @variable  installed_explicitly:bool           Whether the package was installed explicitly      @variable  install_script:bool                 Whether the package contains and install script      Unique variables for not installed: @@ -98,11 +98,11 @@ class Pacman:          plur = lambda x : list(filter(lambda w : not w == 'None', fields[x][0]))          if installed: -            self.required           = plur('Required By') -            self.optrequired        = plur('Optional For') -            self.install_date       = text('Install Date') -            self.install_explicitly = text('Install Reason') == 'Explicitly installed' -            self.install_script     = text('Install Script') == 'Yes' +            self.required             = plur('Required By') +            self.optrequired          = plur('Optional For') +            self.install_date         = text('Install Date') +            self.installed_explicitly = text('Install Reason') == 'Explicitly installed' +            self.install_script       = text('Install Script') == 'Yes'          if not installed:              self.repository    = word('Name')  | 
