diff --git a/bin/mpdevil b/bin/mpdevil
index 86867a3..91f0134 100755
--- a/bin/mpdevil
+++ b/bin/mpdevil
@@ -826,6 +826,17 @@ class Client(MPDClient):
func=getattr(self, option)
func(new_state)
+ def conditional_previous(self):
+ if self._settings.get_boolean("rewind-mode"):
+ double_click_time=Gtk.Settings.get_default().get_property("gtk-double-click-time")
+ status=self.status()
+ if float(status.get("elapsed", 0))*1000 > double_click_time:
+ self.seekcur(0)
+ else:
+ self.previous()
+ else:
+ self.previous()
+
def _main_loop(self, *args):
try:
status=self.status()
@@ -974,6 +985,7 @@ class GeneralSettings(Gtk.Box):
(_("Play selected albums and titles immediately"), "force-mode"),
(_("Sort albums by year"), "sort-albums-by-year"),
(_("Support “MPRIS”"), "mpris"),
+ (_("Rewind via previous button"), "rewind-mode"),
]
for label, key in check_buttons_data:
check_buttons[key]=Gtk.CheckButton(label=label, margin_start=12)
@@ -1014,6 +1026,7 @@ class GeneralSettings(Gtk.Box):
self.pack_start(check_buttons["sort-albums-by-year"], False, False, 0)
self.pack_start(check_buttons["send-notify"], False, False, 0)
self.pack_start(check_buttons["force-mode"], False, False, 0)
+ self.pack_start(check_buttons["rewind-mode"], False, False, 0)
self.pack_start(check_buttons["stop-on-quit"], False, False, 0)
class ProfileSettings(Gtk.Grid):
@@ -3567,7 +3580,7 @@ class MPDActionGroup(Gio.SimpleActionGroup):
self._client.next()
def _on_prev(self, action, param):
- self._client.previous()
+ self._client.conditional_previous()
def _on_seek_forward(self, action, param):
self._client.seekcur("+10")
diff --git a/data/org.mpdevil.mpdevil.gschema.xml b/data/org.mpdevil.mpdevil.gschema.xml
index 040b5c3..aee191d 100644
--- a/data/org.mpdevil.mpdevil.gschema.xml
+++ b/data/org.mpdevil.mpdevil.gschema.xml
@@ -101,6 +101,11 @@
Provide MPRIS
+
+ false
+ Classic previous button behavior
+
+
[0, 1, 2, 3, 4, 5, 6, 7]
Column order in playlist