diff --git a/README.md b/README.md index 4d27b97..a467b08 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,7 @@ __Settings:__ * `alert_format_body` — (default: `Battery {battery_ident} has only {percentage:.2f}% ({remaining_hm}) remaining!`) * `alert_percentage` — (default: `10`) * `path` — (default: `None`) +* `status` — A dictionary mapping ('DIS', 'CHR', 'FULL') to alternative names (default: `{'FULL': 'FULL', 'CHR': 'CHR', 'DIS': 'DIS'}`) @@ -285,12 +286,14 @@ Available formatters: * playtime_s (Playtime, seconds) * pos (Position of current song in playlist, one-based) * len (Length of current playlist) +* status __Settings:__ * `port` — MPD port (default: `6600`) -* `format` — (default: `{title} [{playtime_h}:{playtime_m}:{playtime_s}]`) +* `format` — (default: `{title} {status}`) +* `status` — Dictionary mapping pause, play and stop to output (default: `{'pause': '▷', 'play': '▶', 'stop': '◾'}`) @@ -446,18 +449,6 @@ __Settings:__ -### xrandr - - -Do Not Publish, private hack of it's own - - -__Settings:__ - - - - - ## Contribute diff --git a/i3pystatus/mpd.py b/i3pystatus/mpd.py index dfa50a9..de6e1b0 100644 --- a/i3pystatus/mpd.py +++ b/i3pystatus/mpd.py @@ -16,17 +16,24 @@ class MPD(IntervalModule): * playtime_s (Playtime, seconds) * pos (Position of current song in playlist, one-based) * len (Length of current playlist) + * status """ interval = 1 settings = ( ("port", "MPD port"), "format", + ("status", "Dictionary mapping pause, play and stop to output") ) port = 6600 - format = "{title} [{playtime_h}:{playtime_m}:{playtime_s}]" + format = "{title} {status}" + status = { + "pause": "▷", + "play": "▶", + "stop": "◾", + } def _mpd_command(self, sock, command): sock.send((command + "\n").encode("utf-8")) @@ -46,6 +53,7 @@ class MPD(IntervalModule): status = self._mpd_command(s, "status") fdict["pos"] = int(status["song"])+1 fdict["len"] = int(status["playlistlength"]) + fdict["status"] = self.status[status["state"]] currentsong = self._mpd_command(s, "currentsong") fdict["title"] = currentsong["Title"] @@ -60,3 +68,9 @@ class MPD(IntervalModule): self.output = { "full_text": self.format.format(**fdict).strip(), } + + def on_leftclick(self): + with socket.create_connection(("localhost", self.port)) as s: + s.recv(8192) + + self._mpd_command(s, "pause %i" % (0 if self._mpd_command(s, "status")["state"] == "pause" else 1)) diff --git a/setup.py b/setup.py index 09cdcfd..8f5b050 100755 --- a/setup.py +++ b/setup.py @@ -3,7 +3,7 @@ from setuptools import setup setup(name="i3pystatus", - version="3.14", + version="3.15", description="Like i3status, this generates status line for i3bar / i3wm", url="http://github.com/enkore/i3pystatus", license="MIT", @@ -25,14 +25,4 @@ setup(name="i3pystatus", entry_points={ "console_scripts": ["i3pystatus = i3pystatus:main"], }, - -# install_requires=[ - # "gobject", - # ], -# install_requires=[ -# "Jinja2", - # "lxml", - # "markdown", - # "PyRSS2Gen", - # ] )