bumblebee-status/modules/core/brightness.py

66 lines
1.9 KiB
Python

# pylint: disable=C0111,R0903
"""Displays the brightness of a display
Parameters:
* brightness.step: The amount of increase/decrease on scroll in % (defaults to 2)
"""
import glob
import shutil
import core.module
import core.widget
import core.input
import core.decorators
import util.cli
class Module(core.module.Module):
@core.decorators.every(seconds=30)
def __init__(self, config):
super().__init__(config, core.widget.Widget(self.brightness))
self.__brightness = 'n/a'
self.__readcmd = None
step = self.parameter('step', 2)
if shutil.which('light'):
self.__readcmd = self.__light
self.register_cmd('light -A {}%'.format(step),
'light -U {}%'.format(step))
elif shutil.which('brightnessctl'):
self.__readcmd = self.__brightnessctl
self.register_cmd('brightnessctl s {}%+'.format(step),
'brightnessctl s {}%-'.format(step))
else:
self.__readcmd = self.__xbacklight
self.register_cmd('xbacklight +{}%'.format(step),
'xbacklight -{}%'.format(step))
def register_cmd(self, up_cmd, down_cmd):
core.input.register(self, button=core.input.WHEEL_UP, cmd=up_cmd)
core.input.register(self, button=core.input.WHEEL_DOWN, cmd=down_cmd)
def brightness(self, widget):
return self.__brightness
def __light(self):
return util.cli.execute('light').strip()
def __brightnessctl(self):
m = util.cli.execute('brightnessctl m').strip()
g = util.cli.execute('brightnessctl g').strip()
return float(g)/float(m)*100.0
def __xbacklight(self):
return util.cli.execute('xbacklight -get').strip()
def update(self):
try:
self.__brightness = '{:3.0f}%'.format(float(self.__readcmd()))
except:
self.__brightness = 'n/a'
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4