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()
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
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
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)
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"])
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