From b46c68ed50aa41b1cfe211d15507dd145bf44d87 Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Tue, 28 Oct 2014 11:11:32 +0200 Subject: [PATCH 01/13] Reset timer right on left click --- i3pystatus/pomodoro.py | 1 + 1 file changed, 1 insertion(+) diff --git a/i3pystatus/pomodoro.py b/i3pystatus/pomodoro.py index 0eb5a7c..013b2d8 100644 --- a/i3pystatus/pomodoro.py +++ b/i3pystatus/pomodoro.py @@ -81,6 +81,7 @@ class Pomodoro(IntervalModule): def on_leftclick(self): self.state = 'running' self.time = datetime.now() + timedelta(seconds=self.pomodoro_duration) + self.breaks = 0 def on_rightclick(self): self.state = 'stopped' From b1a7dba9867582cde55ae42d37efe900f4ebe5d1 Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Thu, 30 Oct 2014 11:59:18 +0200 Subject: [PATCH 02/13] Fix module with no `cmus` running --- i3pystatus/cmus.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/i3pystatus/cmus.py b/i3pystatus/cmus.py index b25adca..6b52b87 100644 --- a/i3pystatus/cmus.py +++ b/i3pystatus/cmus.py @@ -34,8 +34,8 @@ class Cmus(IntervalModule): def _query_cmus(self): status_dict = {} status, error = self._cmus_command('query') - status = status.decode('utf-8').split('\n') if status != b'cmus-remote: cmus is not running\n': + status = status.decode('utf-8').split('\n') for item in status: split_item = item.split(' ') if split_item[0] in ['tag', 'set']: @@ -48,6 +48,12 @@ class Cmus(IntervalModule): def run(self): status = self._query_cmus() + if not status: + self.output = { + "full_text": 'Not running', + "color": self.color + } + return fdict = { 'file': status.get('file', ''), 'status': self.status[status["status"]], From a1c66f33b539d08c5c9add3239e8a13288dc8d1f Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Tue, 9 Dec 2014 16:48:14 +0200 Subject: [PATCH 03/13] Update heuristics for getting artist/title from filename --- i3pystatus/cmus.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/i3pystatus/cmus.py b/i3pystatus/cmus.py index 6b52b87..169b88e 100644 --- a/i3pystatus/cmus.py +++ b/i3pystatus/cmus.py @@ -5,6 +5,14 @@ from i3pystatus.core.util import TimeWrapper import subprocess +def _extract_artist_title(input): + for sep in ('-', ' - '): + split = input.split(sep) + if len(split) == 2: + return split[0], split[1] + # fallback + return (input.split('-') + [''] * 2)[:2] + class Cmus(IntervalModule): """ @@ -16,7 +24,7 @@ class Cmus(IntervalModule): 'color' ) color = "#909090" - format = "{status} {song_elapsed}/{song_length} {artist}-{title}" + format = "{status} {song_elapsed}/{song_length} {artist} - {title}" status_text = '' interval = 1 status = { @@ -68,14 +76,15 @@ class Cmus(IntervalModule): } if fdict['stream']: - fdict['artist'], fdict['title'] = ( - fdict['stream'].split('-') + [''] * 2)[:2] + fdict['artist'], fdict['title'] = _extract_artist_title(fdict['stream']) elif not fdict['title']: _, filename = os.path.split(fdict['file']) filebase, _ = os.path.splitext(filename) - fdict['artist'], fdict['title'] = ( - filebase.split('-') + [''] * 2)[:2] + fdict['artist'], fdict['title'] = _extract_artist_title(filebase) + + fdict['title'] = fdict['title'].strip() + fdict['artist'] = fdict['artist'].strip() self.output = { "full_text": formatp(self.format, **fdict), From 45c94bd5cd9a180a8137066fa2bdfabcf82c5455 Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Tue, 9 Dec 2014 16:49:27 +0200 Subject: [PATCH 04/13] Make format configurable, fix bug, progess output --- i3pystatus/pomodoro.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/i3pystatus/pomodoro.py b/i3pystatus/pomodoro.py index 013b2d8..1160561 100644 --- a/i3pystatus/pomodoro.py +++ b/i3pystatus/pomodoro.py @@ -27,6 +27,7 @@ class Pomodoro(IntervalModule): ('break_duration', 'Short break duration in secods'), ('long_break_duration', 'Long break duration in secods'), ('short_break_count', 'Short break count before first long break'), + format ) color_stopped = '#2ECCFA' @@ -34,6 +35,7 @@ class Pomodoro(IntervalModule): color_break = '#37FF00' interval = 1 short_break_count = 3 + format = '☯ {current_pomodoro}/{total_pomodoro} {time}' pomodoro_duration = 25 * 60 break_duration = 5 * 60 @@ -56,8 +58,8 @@ class Pomodoro(IntervalModule): else: self.time = datetime.now() + \ timedelta(seconds=self.break_duration) + self.breaks += 1 text = 'Go for a break!' - self.breaks += 1 else: self.state = 'running' self.time = datetime.now() + \ @@ -70,11 +72,20 @@ class Pomodoro(IntervalModule): text = '{:02}:{:02}'.format(int(min), int(sec)) color = self.color_running if self.state == 'running' else self.color_break else: - text = 'Stopped' - color = self.color_stopped + self.output = { + 'full_text': 'Stopped', + 'color': self.color_stopped + } + return + + sdict = { + 'time': text, + 'current_pomodoro': self.breaks, + 'total_pomodoro': self.short_break_count + 1, + } self.output = { - 'full_text': text, + 'full_text': self.format.format(**sdict), 'color': color } From b89b1c783f4185dd65a9f81580258ef979f67677 Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Tue, 9 Dec 2014 16:56:35 +0200 Subject: [PATCH 05/13] PEP8 fixes --- i3pystatus/cmus.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/i3pystatus/cmus.py b/i3pystatus/cmus.py index 169b88e..27fb878 100644 --- a/i3pystatus/cmus.py +++ b/i3pystatus/cmus.py @@ -13,6 +13,7 @@ def _extract_artist_title(input): # fallback return (input.split('-') + [''] * 2)[:2] + class Cmus(IntervalModule): """ @@ -61,7 +62,7 @@ class Cmus(IntervalModule): "full_text": 'Not running', "color": self.color } - return + return fdict = { 'file': status.get('file', ''), 'status': self.status[status["status"]], @@ -76,7 +77,8 @@ class Cmus(IntervalModule): } if fdict['stream']: - fdict['artist'], fdict['title'] = _extract_artist_title(fdict['stream']) + fdict['artist'], fdict[ + 'title'] = _extract_artist_title(fdict['stream']) elif not fdict['title']: _, filename = os.path.split(fdict['file']) From 6593c580ae67cf62f1cf00841e21209188b84286 Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Wed, 10 Dec 2014 18:20:51 +0200 Subject: [PATCH 06/13] Improve doc for available formatters for `cmus` module --- i3pystatus/cmus.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/i3pystatus/cmus.py b/i3pystatus/cmus.py index 27fb878..d50c09a 100644 --- a/i3pystatus/cmus.py +++ b/i3pystatus/cmus.py @@ -15,9 +15,20 @@ def _extract_artist_title(input): class Cmus(IntervalModule): - """ - gets the status and current song info using cmus-remote + Gets the status and current song info using cmus-remote + + .. rubric:: Available formatters + * `{status}` — current status icon (paused/playing/stopped) + * `{song_elapsed}` — song elapsed time (mm:ss format) + * `{song_length}` — total song duration (mm:ss format) + * `{artist}` — artist + * `{title}` — title + * `{album}` — album + * `{tracknumber}` — tracknumber + * `{file}` — file or url name + * `{stream}` — song name from stream + * `{bitrate}` — bitrate """ settings = ( From f263cb55e8019dcd067a8850a333e78904bae50f Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Wed, 10 Dec 2014 18:23:25 +0200 Subject: [PATCH 07/13] Update format string description --- i3pystatus/cmus.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/i3pystatus/cmus.py b/i3pystatus/cmus.py index d50c09a..f4f4e31 100644 --- a/i3pystatus/cmus.py +++ b/i3pystatus/cmus.py @@ -32,8 +32,10 @@ class Cmus(IntervalModule): """ settings = ( - 'format', - 'color' + ('format', 'format string, available formatters: status, song_elapsed, ' + 'song_length, artist, title, album, tracknumber, file, ' + 'stream, bitrate'), + 'color', ) color = "#909090" format = "{status} {song_elapsed}/{song_length} {artist} - {title}" From 105e92b5aafbedd0c1a98a24b724e93014a658eb Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Wed, 10 Dec 2014 18:25:15 +0200 Subject: [PATCH 08/13] Update format description for `pomodoro` module --- i3pystatus/pomodoro.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/i3pystatus/pomodoro.py b/i3pystatus/pomodoro.py index 1160561..42993d0 100644 --- a/i3pystatus/pomodoro.py +++ b/i3pystatus/pomodoro.py @@ -27,7 +27,8 @@ class Pomodoro(IntervalModule): ('break_duration', 'Short break duration in secods'), ('long_break_duration', 'Long break duration in secods'), ('short_break_count', 'Short break count before first long break'), - format + ('format', 'format string, available formatters: current_pomodoro, ' + 'total_pomodoro, time') ) color_stopped = '#2ECCFA' From d0f76a2d9784d524e65b62e40ec80f621652afb9 Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Wed, 10 Dec 2014 18:25:32 +0200 Subject: [PATCH 09/13] PEP8 fix --- i3pystatus/cmus.py | 1 + 1 file changed, 1 insertion(+) diff --git a/i3pystatus/cmus.py b/i3pystatus/cmus.py index f4f4e31..c476ba9 100644 --- a/i3pystatus/cmus.py +++ b/i3pystatus/cmus.py @@ -15,6 +15,7 @@ def _extract_artist_title(input): class Cmus(IntervalModule): + """ Gets the status and current song info using cmus-remote From 362c3ec83eebac53817184002a3593a07fc8335e Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Wed, 10 Dec 2014 18:26:15 +0200 Subject: [PATCH 10/13] Fix typos --- i3pystatus/pomodoro.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i3pystatus/pomodoro.py b/i3pystatus/pomodoro.py index 42993d0..1d4317c 100644 --- a/i3pystatus/pomodoro.py +++ b/i3pystatus/pomodoro.py @@ -24,8 +24,8 @@ class Pomodoro(IntervalModule): 'Path to sound file to play as alarm. Played by "aplay" utility'), ('pomodoro_duration', 'Working (pomodoro) interval duration in seconds'), - ('break_duration', 'Short break duration in secods'), - ('long_break_duration', 'Long break duration in secods'), + ('break_duration', 'Short break duration in seconds'), + ('long_break_duration', 'Long break duration in seconds'), ('short_break_count', 'Short break count before first long break'), ('format', 'format string, available formatters: current_pomodoro, ' 'total_pomodoro, time') From eab6f77bd665d5c72493d6b07d5f21bcf2398a91 Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Wed, 10 Dec 2014 19:19:11 +0200 Subject: [PATCH 11/13] PEP8 fix --- i3pystatus/cmus.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i3pystatus/cmus.py b/i3pystatus/cmus.py index c476ba9..8c3b298 100644 --- a/i3pystatus/cmus.py +++ b/i3pystatus/cmus.py @@ -27,7 +27,7 @@ class Cmus(IntervalModule): * `{title}` — title * `{album}` — album * `{tracknumber}` — tracknumber - * `{file}` — file or url name + * `{file}` — file or url name * `{stream}` — song name from stream * `{bitrate}` — bitrate """ From 2a5c0e77a0c641d7a8b94ab8f8b486beec953c87 Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Thu, 11 Dec 2014 13:29:14 +0200 Subject: [PATCH 12/13] Insert blank line to make rST happy --- i3pystatus/cmus.py | 1 + 1 file changed, 1 insertion(+) diff --git a/i3pystatus/cmus.py b/i3pystatus/cmus.py index 8c3b298..5e7f977 100644 --- a/i3pystatus/cmus.py +++ b/i3pystatus/cmus.py @@ -20,6 +20,7 @@ class Cmus(IntervalModule): Gets the status and current song info using cmus-remote .. rubric:: Available formatters + * `{status}` — current status icon (paused/playing/stopped) * `{song_elapsed}` — song elapsed time (mm:ss format) * `{song_length}` — total song duration (mm:ss format) From 8913450ac29bbcb867e6705bc92dc1e96b7fcedb Mon Sep 17 00:00:00 2001 From: Sergei Turukin Date: Thu, 11 Dec 2014 13:54:31 +0200 Subject: [PATCH 13/13] PEP8 fix, hope wont' break rST parser as well --- i3pystatus/cmus.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i3pystatus/cmus.py b/i3pystatus/cmus.py index 5e7f977..c3b8490 100644 --- a/i3pystatus/cmus.py +++ b/i3pystatus/cmus.py @@ -20,7 +20,7 @@ class Cmus(IntervalModule): Gets the status and current song info using cmus-remote .. rubric:: Available formatters - + * `{status}` — current status icon (paused/playing/stopped) * `{song_elapsed}` — song elapsed time (mm:ss format) * `{song_length}` — total song duration (mm:ss format)