Merge pull request #846 from DTan13/main

added module
This commit is contained in:
tobi-wan-kenobi 2022-03-10 02:52:51 +01:00 committed by GitHub
commit fd1eb6e790
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 113 additions and 1 deletions

View file

@ -0,0 +1,97 @@
"""Displays temperature of blugon and Controls it.
Use wheel up and down to change temperature, middle click to toggle and right click to reset temprature.
Default Values:
* Minimum temperature: 1000 (red)
* Maximum temperature: 20000 (blue)
* Default temperature: 6600
Requires the following executable:
* blugon
Parameters:
* blugon.step: The amount of increase/decrease on scroll (default: 200)
contributed by `DTan13 <https://github.com/DTan13>`
"""
import core.module
import core.widget
import util.cli
import util.format
import os
class Module(core.module.Module):
def __init__(self, config, theme):
super().__init__(config, theme, core.widget.Widget(self.full_text))
self.__state = True
self.__default = 6600
self.__step = (
util.format.asint(self.parameter("step")) if self.parameter("step") else 200
)
self.__max, self.__min = 20000, 1000
file = open(os.path.expanduser("~/.config/blugon/current"))
self.__current = int(float(file.read()))
events = [
{
"type": "toggle",
"action": self.toggle,
"button": core.input.MIDDLE_MOUSE,
},
{
"type": "blue",
"action": self.blue,
"button": core.input.WHEEL_UP,
},
{
"type": "red",
"action": self.red,
"button": core.input.WHEEL_DOWN,
},
{
"type": "reset",
"action": self.reset,
"button": core.input.RIGHT_MOUSE,
},
]
for event in events:
core.input.register(self, button=event["button"], cmd=event["action"])
def set_temp(self):
temp = self.__current if self.__state else self.__default
util.cli.execute("blugon --setcurrent={}".format(temp))
def full_text(self, widget):
return self.__current if self.__state else self.__default
def state(self, widget):
if not self.__state:
return ["critical"]
def toggle(self, event):
self.__state = not self.__state
self.set_temp()
def reset(self, event):
self.__current = 6600
self.set_temp()
def blue(self, event):
if self.__state and (self.__current < self.__max):
self.__current += self.__step
self.set_temp()
def red(self, event):
if self.__state and (self.__current > self.__min):
self.__current -= self.__step
self.set_temp()
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4

View file

@ -94,6 +94,12 @@ class Module(core.module.Module):
"cmd": "mpc toggle" + self._hostcmd, "cmd": "mpc toggle" + self._hostcmd,
} }
widget.full_text(self.description) widget.full_text(self.description)
elif widget_name == "mpd.toggle":
widget_map[widget] = {
"button": core.input.LEFT_MOUSE,
"cmd": "mpc toggle" + self._hostcmd,
}
widget.full_text(self.toggle)
elif widget_name == "mpd.next": elif widget_name == "mpd.next":
widget_map[widget] = { widget_map[widget] = {
"button": core.input.LEFT_MOUSE, "button": core.input.LEFT_MOUSE,
@ -127,6 +133,9 @@ class Module(core.module.Module):
def description(self, widget): def description(self, widget):
return string.Formatter().vformat(self._fmt, (), self._tags) return string.Formatter().vformat(self._fmt, (), self._tags)
def toggle(self, widget):
return str(util.cli.execute("mpc status %currenttime%/%totaltime%", ignore_errors=True)).strip()
def update(self): def update(self):
self._load_song() self._load_song()

View file

@ -9,6 +9,7 @@ Parameters:
* title.max : Maximum character length for title before truncating. Defaults to 64. * title.max : Maximum character length for title before truncating. Defaults to 64.
* title.placeholder : Placeholder text to be placed if title was truncated. Defaults to '...'. * title.placeholder : Placeholder text to be placed if title was truncated. Defaults to '...'.
* title.scroll : Boolean flag for scrolling title. Defaults to False * title.scroll : Boolean flag for scrolling title. Defaults to False
* title.short : Boolean flag for short title. Defaults to False
contributed by `UltimatePancake <https://github.com/UltimatePancake>`_ - many thanks! contributed by `UltimatePancake <https://github.com/UltimatePancake>`_ - many thanks!
@ -35,6 +36,7 @@ class Module(core.module.Module):
# parsing of parameters # parsing of parameters
self.__scroll = util.format.asbool(self.parameter("scroll", False)) self.__scroll = util.format.asbool(self.parameter("scroll", False))
self.__short = util.format.asbool(self.parameter("short", False))
self.__max = int(self.parameter("max", 64)) self.__max = int(self.parameter("max", 64))
self.__placeholder = self.parameter("placeholder", "...") self.__placeholder = self.parameter("placeholder", "...")
self.__title = "" self.__title = ""
@ -66,7 +68,9 @@ class Module(core.module.Module):
def __pollTitle(self): def __pollTitle(self):
"""Updating current title.""" """Updating current title."""
try: try:
self.__full_title = self.__i3.get_tree().find_focused().name focused = self.__i3.get_tree().find_focused().name
self.__full_title = focused.split(
"-")[-1].strip() if self.__short else focused
except: except:
self.__full_title = no_title self.__full_title = no_title
if self.__full_title is None: if self.__full_title is None:

View file

@ -0,0 +1,2 @@
def test_load_module():
__import__("modules.contrib.zpool")