From ec31f28ff1aaf777aedc74970b9b752141114ad3 Mon Sep 17 00:00:00 2001 From: rixx Date: Mon, 30 Mar 2015 15:11:39 +0200 Subject: adds VLC support uses only dbus and communicates via the MPRIS MusicPlayer2 interface --- py3status/modules/player_control.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'py3status') diff --git a/py3status/modules/player_control.py b/py3status/modules/player_control.py index 062db49..acae24a 100644 --- a/py3status/modules/player_control.py +++ b/py3status/modules/player_control.py @@ -15,6 +15,7 @@ Provides an icon to control simple functions of audio/video players: from syslog import syslog, LOG_INFO from time import time, sleep +import dbus import os import subprocess @@ -33,7 +34,7 @@ class Py3status: """ debug = False - supported_players = 'audacious' + supported_players = 'audacious vlc' volume_tick = 1 def __init__(self): @@ -83,6 +84,10 @@ class Py3status: player_name = self._detect_running_player() if player_name == 'audacious': self._run(['/usr/bin/audacious', '-p']) + elif player_name == 'vlc': + player = self._get_vlc() + if player: + player.Play() def _stop(self): self.status = 'stop' @@ -90,6 +95,10 @@ class Py3status: player_name = self._detect_running_player() if player_name == 'audacious': self._run(['/usr/bin/audacious', '-s']) + elif player_name == 'vlc': + player = self._get_vlc() + if player: + player.Stop() def _pause(self): self.status = 'pause' @@ -97,6 +106,10 @@ class Py3status: player_name = self._detect_running_player() if player_name == 'audacious': self._run(['/usr/bin/audacious', '-u']) + elif player_name == 'vlc': + player = self._get_vlc() + if player: + player.Pause() def _change_volume(self, increase): """Change volume using amixer @@ -135,6 +148,13 @@ class Py3status: return None + def _get_vlc(self): + mpris = 'org.mpris.MediaPlayer2' + mpris_slash = '/' + mpris.replace('.', '/') + bus = dbus.SessionBus() + proxy = bus.get_object(mpris+'.vlc', mpris_slash) + return dbus.Interface(proxy, dbus_interface=mpris+'.Player') + def player_control(self, i3s_output_list, i3s_config): return dict( full_text=self.icon, -- cgit v1.3