Exemple #1
0
    def render(self):
        separator = PanelStrip().text('| ', colour=PanelVisual.active)

        if self.items['notification']:
            background_image = PanelVisual.background_image_notification
            right = sum([
                self.items['notification'],
                PanelStrip().move(15)
            ], PanelStrip()).trim(2 * (self.width // 3))
            mid = PanelStrip()
        else:
            background_image = PanelVisual.background_image
            right = sum([
                self.items['music'],
                PanelStrip().text(' '),
                separator,
                self.items['system_info'],
                separator,
                self.items['clock'],
                PanelStrip().move(8)
            ], PanelStrip())
            mid = sum([
                self.items['current_window']
            ], PanelStrip())

        left = sum([
            PanelStrip().image(background_image, background=True),
            PanelStrip().image(PanelVisual.logo_image).move(15),
            self.items['workspaces'],
            self.items['mode'],
            separator,
        ], PanelStrip())

        if mid.width > self.width - left.width - right.width:
            mid.set_width(self.width - left.width - right.width - separator.width)
            mid += separator
        else:
            mid.set_width(self.width - left.width - right.width)

        panel = left + mid + right

        self.dzen.stdin.write(panel.data())
        self.dzen.stdin.flush()
Exemple #2
0
    def loop(self, events):
        cpu = '--'
        while True:
            info = PanelStrip('system_info')
            info += self.battery_info()

            info.icon('cpu').text(cpu).text(' ')
            info.icon('ram').text(self.ram()).text(' ')
            info.icon('load').text(self.load()).text(' ')
            events.put(info)

            cpu = self.cpu(5)   # wait 5 seconds and measure cpu
Exemple #3
0
    def render_notification(self, notification):
        info = PanelStrip('notification')
        if not notification:
            return info

        if self.stacked_notifications > 1:
            info.text(
                '[' + str(self.stacked_notifications) + ']',
                background=PanelVisual.urgent
            ).text(' ')
        info.text(
            self.remove_html(notification['summary']),
            colour=PanelVisual.active
        ).text(' ')
        info.text(self.remove_html(notification['body']))
        return info
Exemple #4
0
    def refresh_workspaces(self, events):
        info = PanelStrip('workspaces')
        for workspace in self.i3.get_workspaces():
            colour, background = None, None
            if workspace.visible:
                colour = PanelVisual.semiactive
            if workspace.focused:
                colour = PanelVisual.active
            if workspace.urgent:
                background = PanelVisual.urgent
            info.click('i3-msg workspace ' + workspace.name)
            info.text(workspace.name, colour, background).text(' ')

        info.click()

        events.put(info)
Exemple #5
0
    def render(self):
        status = self.mpd.status()
        song = self.mpd.currentsong()
        info = PanelStrip("music")

        if status["state"] not in ("play", "pause"):
            return info.text("DON'T PANIC!")

        info.icon("music")
        info += PanelStrip().text(song["artist"]).trim(200).text(" - ")

        if status["state"] == "play":
            colour = PanelVisual.active
        else:
            colour = None
        info += PanelStrip().text(song["title"], colour).trim(200)
        info.move(8).icon("volume").move(3)
        return info.text(status["volume"])
Exemple #6
0
    def battery_info(self):
        if not self.battery.exists():
            return
        status = self.battery.status()

        info = PanelStrip('battery')

        if status == 'Full':
            info.icon('battery_max')
        elif status == 'Charging':
            info.icon('battery_charging')
        else:
            info.icon('battery')
        if self.battery.percent() < 15:
            background = PanelVisual.urgent
        else:
            background = None
        info.text(
            str(self.battery.percent()) + '%',
            background=background
        )
        info.text(' (' + str(self.battery.current_charge()) + 'mAh')
        if self.battery.status() == 'Discharging':
            info.text(' at ' + str(self.battery.current()) + 'mA')
        info.text(') ')

        return info