Em este site , há um tempo atrás eu encontrei um bom roteiro de alguém. ISTO NÃO É MEU!
Estouusando-odesdeomeunetbook,rodandoXubuntu
eparecerodaremqualquercoisa.
Pormotivosdenãopostarumarespostasomentedelink,aquiestá:
#!/usr/bin/env python
from gi.repository import Gtk
import subprocess
class BrightnessScale:
def __init__(self):
# get active monitor and current brightness
self.monitor = self.getActiveMonitor()
self.currB = self.getCurrentBrightness()
def initUI(self):
# initliaze and configure window
window = Gtk.Window()
window.set_title('Brightness Scale')
window.set_default_size(250, 50)
window.set_position(Gtk.WindowPosition.CENTER)
window.set_border_width(10)
# slider configuration
self.adjustment = Gtk.Adjustment(self.currB, 0, 100, 1, 10, 0)
self.scale = Gtk.HScale()
self.scale.set_adjustment(self.adjustment)
self.scale.set_digits(0)
# close Gtk thread on closing window
window.connect("destroy", lambda w: Gtk.main_quit())
# setup event handler on value-changed
self.scale.connect("value-changed", self.scale_moved)
# add the scale to window
window.add(self.scale)
# show all components in window
window.show_all()
# close window on pressing escape key
accGroup = Gtk.AccelGroup()
key, modifier = Gtk.accelerator_parse('Escape')
accGroup.connect(key, modifier, Gtk.AccelFlags.VISIBLE, Gtk.main_quit)
window.add_accel_group(accGroup)
def showErrDialog(self):
self.errDialog = Gtk.MessageDialog(None,
Gtk.DialogFlags.MODAL,
Gtk.MessageType.ERROR,
Gtk.ButtonsType.OK,
"Unable to detect active monitor, run 'xrandr --verbose' on command-line for more info")
self.errDialog.set_title("brightness control error")
self.errDialog.run()
self.errDialog.destroy()
def initStatus(self):
if(self.monitor == "" or self.currB == ""):
return False
return True
def getActiveMonitor(self):
#Find display monitor
monitor = subprocess.check_output("xrandr -q | grep ' connected' | cut -d ' ' -f1", shell=True)
if(monitor != ""):
monitor = monitor.split('\n')[0]
return monitor
def getCurrentBrightness(self):
#Find current brightness
currB = subprocess.check_output("xrandr --verbose | grep -i brightness | cut -f2 -d ' '", shell=True)
if(currB != ""):
currB = currB.split('\n')[0]
currB = int(float(currB) * 100)
else:
currB = ""
return currB
def scale_moved(self, event):
#Change brightness
newBrightness = float(self.scale.get_value())/100
cmd = "xrandr --output %s --brightness %.2f" % (self.monitor, newBrightness)
cmdStatus = subprocess.check_output(cmd, shell=True)
if __name__ == "__main__":
# new instance of BrightnessScale
brcontrol = BrightnessScale()
if(brcontrol.initStatus()):
# if everything ok, invoke UI and start Gtk thread loop
brcontrol.initUI()
Gtk.main()
else:
# show error dialog
brcontrol.showErrDialog()
Como usar
-
Cole o script em um arquivo vazio, salve-o como
brightness_set
in~/bin
(provavelmente é necessário criar o diretório). Torne-o executável -
Adicione a uma tecla de atalho: Escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:
brightness_set
-
Faça logout e volte a funcionar e isso deve funcionar
Editar
Para criar um conjunto interessante, você pode disponibilizar o controle deslizante no Dash, no Launcher ou em qualquer outro menu do aplicativo, adicionando um arquivo .desktop
em ~/.local/share/applications
[DesktopEntry]Type=ApplicationName=BrightnessScaleIcon=/path/to/set_brightness.pngExec=brightness_setOnlyShowIn=Unity;
Nalinha
Icon=
,definaocaminhoparaoícone.OYopupodeescolherseupróprioíconeousalvaroíconeabaixocomoset_brightness.png
:- Na linha
Exec=
, a suposição é de que o script está em$PATH
(que inclui~/bin
no Ubuntu) e executável