bumblebee-status/modules/contrib/gpmdp.py
tobi-wan-kenobi 9cd9ff626d [core] make widget name an attribute
first, this fixes #607

also, i think it slightly simplifies code to make "simple" stuff like
names, etc. attributes instead of methods all the time.

so, expect this to be extended to other components, as well.
2020-04-30 12:42:34 +02:00

53 lines
1.6 KiB
Python

# pylint: disable=C0111,R0903
"""Displays information about the current song in Google Play music player.
Requires the following executable:
* gpmdp-remote
"""
import core.module
import core.widget
import core.input
import util.cli
class Module(core.module.Module):
def __init__(self, config, theme):
widgets = [
core.widget.Widget(name='gpmdp.prev'),
core.widget.Widget(name='gpmdp.main', full_text=self.description),
core.widget.Widget(name='gpmdp.next'),
]
super().__init__(config, theme, widgets)
core.input.register(widgets[0], button=core.input.LEFT_MOUSE,
cmd='playerctl previous')
core.input.register(widgets[1], button=core.input.LEFT_MOUSE,
cmd='playerctl play-pause')
core.input.register(widgets[2], button=core.input.LEFT_MOUSE,
cmd='playerctl next')
self.__status = None
self.__tags = None
def description(self, widget):
return self.__tags if self.__tags else 'n/a'
def update(self):
self.__load_song()
def state(self, widget):
if widget.name == 'gpmdp.prev':
return 'prev'
if widget.name == 'gpmdp.next':
return 'next'
return self.__status
def __load_song(self):
info = util.cli.execute('gpmdp-remote current', ignore_errors=True)
status = util.cli.execute('gpmdp-remote status', ignore_errors=True)
self.__status = status.split('\n')[0].lower()
self.__tags = info.split('\n')[0]
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4