예제 #1
0
    def update(self):
        try:
            self.__get_song()

            if self.__bus_name == "spotifyd":
                bus = self.__bus.get_object(
                    "org.mpris.MediaPlayer2.spotifyd", "/org/mpris/MediaPlayer2"
                )
            else:
                bus = self.__bus.get_object(
                    "org.mpris.MediaPlayer2.spotify", "/org/mpris/MediaPlayer2"
                )

            for widget in self.widgets():
                if widget.name == "spotify.pause":
                    playback_status = str(
                        dbus.Interface(
                            bus,
                            "org.freedesktop.DBus.Properties",
                        ).Get("org.mpris.MediaPlayer2.Player", "PlaybackStatus")
                    )
                    if playback_status == "Playing":
                        widget.set("state", "playing")
                    else:
                        widget.set("state", "paused")
                elif widget.name == "spotify.song":
                    widget.set("state", "song")
                    widget.full_text(self.__song)

        except Exception as e:
            self.__song = ""
예제 #2
0
 def update(self):
     try:
         playback_status = str(
             util.cli.execute(self.__cmd + "status 2>&1 || true",
                              shell=True)).strip()
         if playback_status == "No players found":
             playback_status = None
     except Exception as e:
         logging.exception(e)
         playback_status = None
     for widget in self.widgets():
         if playback_status:
             if widget.name == "playerctl.pause":
                 if playback_status == "Playing":
                     widget.set("state", "playing")
                 elif playback_status == "Paused":
                     widget.set("state", "paused")
                 elif playback_status == "Stopped":
                     widget.set("state", "stopped")
                 else:
                     widget.set("state", "")
             elif widget.name == "playerctl.next":
                 widget.set("state", "next")
             elif widget.name == "playerctl.prev":
                 widget.set("state", "prev")
             elif widget.name == "playerctl.song":
                 widget.full_text(self.__get_song())
         else:
             widget.set("state", "")
             widget.full_text(" ")
예제 #3
0
    def update(self):
        try:
            self.clear_widgets()
            self.__get_song()

            widget_map = {}
            for widget_name in self.__layout:
                widget = self.add_widget(name=widget_name)
                if widget_name == "spotify.prev":
                    widget_map[widget] = {
                        "button": core.input.LEFT_MOUSE,
                        "cmd": self.__cmd + "Previous",
                    }
                    widget.set("state", "prev")
                elif widget_name == "spotify.pause":
                    widget_map[widget] = {
                        "button": core.input.LEFT_MOUSE,
                        "cmd": self.__cmd + "PlayPause",
                    }
                    playback_status = str(
                        dbus.Interface(
                            dbus.SessionBus().get_object(
                                "org.mpris.MediaPlayer2.spotify",
                                "/org/mpris/MediaPlayer2",
                            ),
                            "org.freedesktop.DBus.Properties",
                        ).Get("org.mpris.MediaPlayer2.Player",
                              "PlaybackStatus"))
                    if playback_status == "Playing":
                        widget.set("state", "playing")
                    else:
                        widget.set("state", "paused")
                elif widget_name == "spotify.next":
                    widget_map[widget] = {
                        "button": core.input.LEFT_MOUSE,
                        "cmd": self.__cmd + "Next",
                    }
                    widget.set("state", "next")
                elif widget_name == "spotify.song":
                    widget.set("state", "song")
                    widget.full_text(self.__song)
                else:
                    raise KeyError(
                        "The spotify module does not have a {widget_name!r} widget"
                        .format(widget_name=widget_name))
            for widget, callback_options in widget_map.items():
                core.input.register(widget, **callback_options)

        except Exception:
            self.__song = ""
예제 #4
0
    def test_usedonly_parameter(self):
        module = build_module(['-p', 'memory.usedonly=true'])
        module.update()

        widget = memory_widget(module)

        assert widget.full_text() == '1.00MiB'
        assert module.state(widget) == None
예제 #5
0
    def test_custom_critical_parameter(self):
        module = build_module(['-p', 'memory.critical=50'])
        module.update()

        widget = memory_widget(module)

        assert widget.full_text() == '4.00MiB/8.00MiB (50.02%)'
        assert module.state(widget) == 'critical'
예제 #6
0
    def test_custom_warning_parameter(self):
        module = build_module(['-p', 'memory.warning=20'])
        module.update()

        widget = memory_widget(module)

        assert widget.full_text() == '1.00MiB/4.00MiB (25.10%)'
        assert module.state(widget) == 'warning'
예제 #7
0
    def test_default_critical_state(self):
        module = build_module()
        module.update()

        widget = memory_widget(module)

        assert widget.full_text() == '2.00MiB/2.00MiB (100.00%)'
        assert module.state(widget) == 'critical'
예제 #8
0
    def test_default_warning_state(self):
        module = build_module()
        module.update()

        widget = memory_widget(module)

        assert widget.full_text() == '7.00MiB/8.00MiB (87.51%)'
        assert module.state(widget) == 'warning'
예제 #9
0
    def test_default_healthy_state(self):
        module = build_module()
        module.update()

        widget = memory_widget(module)

        assert widget.full_text() == '1.00MiB/2.00MiB (50.00%)'
        assert module.state(widget) == None
예제 #10
0
    def test_gb_unit(self):
        module = build_module()
        module.update()

        widget = memory_widget(module)

        assert widget.full_text() == '1.00GiB/2.00GiB (50.00%)'
        assert module.state(widget) == None
예제 #11
0
    def test_format_parameter_with_percent(self):
        module = build_module(['-p', 'memory.format={percent}%'])
        module.update()

        widget = memory_widget(module)

        assert widget.full_text() == '50.0%'
        assert module.state(widget) == None
예제 #12
0
    def test_format_parameter(self):
        module = build_module(['-p', 'memory.format={used}.{total}'])
        module.update()

        widget = memory_widget(module)

        assert widget.full_text() == '1.00MiB.2.00MiB'
        assert module.state(widget) == None
예제 #13
0
    def update(self):
        try:
            self.__get_song()

            for widget in self.widgets():
                if widget.name == "playerctl.pause":
                    playback_status = str(
                        util.cli.execute(self.__cmd + "status")).strip()
                    if playback_status != "":
                        if playback_status == "Playing":
                            widget.set("state", "playing")
                        else:
                            widget.set("state", "paused")
                elif widget.name == "playerctl.song":
                    widget.set("state", "song")
                    widget.full_text(self.__song)
        except Exception as e:
            logging.exception(e)
            self.__song = ""
예제 #14
0
 def __update_widget(self, widget):
     if widget.get("field", "") == "":
         return  # nothing to do
     data = self.__data[widget.get("adapter")][widget.get("package")][
         widget.get("field")]
     if "temp" in widget.get("field"):
         widget.full_text("{:0.01f}°C".format(data["input"]))
     elif "fan" in widget.get("field"):
         widget.full_text("{:0.0f}RPM".format(data["input"]))
     else:
         widget.full_text("{:0.0f}".format(data["input"]))
예제 #15
0
def test_callable_fulltext(mocker):
    callback = mocker.MagicMock(return_value="callback returns")
    widget = core.widget.Widget(full_text=callback)
    assert widget.full_text() == "callback returns"
    callback.assert_called_once_with(widget)
예제 #16
0
def test_text_fulltext():
    widget = core.widget.Widget(full_text="this is some value")
    assert widget.full_text() == "this is some value"