亮度配置文件Ubuntu 14.04.5

通常,当充电器不存在时,笔记本电脑屏幕会调暗至最低亮度,如果充电器存在/连接,则会将亮度调至最高水平。 但是,在我的戴尔Inspiron 7559 Skylake笔记本电脑上,这种情况不会发生。 我的笔记本电脑始终处于100%亮度。 如何检索此“function”?

介绍

下面的脚本是我之前脚本的修改版本,用python编写并使用dbus专门用于轮询ac_adapter存在并设置屏幕亮度。

用法

用法很简单:从命令行调用为

python ./brightness_control.py 

该脚本在AC上默认为100%亮度,在电池上默认为10%。 用户可以使用-a-b分别在交流电和电池上设置所需的亮度等级。

-h选项给出的AS:

 $ ./brightness_control.py -h usage: brightness_control.py [-h] [-a ADAPTER] [-b BATTERY] Simple brightness control for laptops, depending on presense of AC power supply optional arguments: -h, --help show this help message and exit -a ADAPTER, --adapter ADAPTER brightness on ac -b BATTERY, --battery BATTERY brightness on battery 

例如,可以执行以下任何操作:

 # set non default for brightness on ac $ ./brightness_control.py -a 80 # set non-default value for brightness on battery $ ./brightness_control.py -b 20 # set non-default values for both $ ./brightness_control.py -a 80 -b 20 

资源

也可以在GitHub上找到

 #!/usr/bin/env python """ Author: Serg Kolo <1047481448@qq.com> Date: Nov 3rd , 2016 Purpose:Brightness control depending on presence of ac adapter Written for: http://askubuntu.com/q/844193/295286 """ import argparse import dbus import time import sys def get_dbus_property(bus_type, obj, path, iface, prop): """ utility:reads properties defined on specific dbus interface""" if bus_type == "session": bus = dbus.SessionBus() if bus_type == "system": bus = dbus.SystemBus() proxy = bus.get_object(obj, path) aux = 'org.freedesktop.DBus.Properties' props_iface = dbus.Interface(proxy, aux) props = props_iface.Get(iface, prop) return props def get_dbus_method(bus_type, obj, path, interface, method, arg): """ utility: executes dbus method on specific interface""" if bus_type == "session": bus = dbus.SessionBus() if bus_type == "system": bus = dbus.SystemBus() proxy = bus.get_object(obj, path) method = proxy.get_dbus_method(method, interface) if arg: return method(arg) else: return method() def on_ac_power(): adapter = get_adapter_path() call = ['system','org.freedesktop.UPower',adapter, 'org.freedesktop.UPower.Device','Online' ] if get_dbus_property(*call): return True def get_adapter_path(): """ Finds dbus path of the ac adapter device """ call = ['system', 'org.freedesktop.UPower', '/org/freedesktop/UPower','org.freedesktop.UPower', 'EnumerateDevices',None ] devices = get_dbus_method(*call) for dev in devices: call = ['system','org.freedesktop.UPower',dev, 'org.freedesktop.UPower.Device','Type' ] if get_dbus_property(*call) == 1: return dev def set_brightness(*args): call = ['session','org.gnome.SettingsDaemon.Power', '/org/gnome/SettingsDaemon/Power', 'org.gnome.SettingsDaemon.Power.Screen', 'SetPercentage', args[-1] ] get_dbus_method(*call) def parse_args(): info = """ Simple brightness control for laptops, depending on presense of AC power supply """ arg_parser = argparse.ArgumentParser( description=info, formatter_class=argparse.RawTextHelpFormatter) arg_parser.add_argument( '-a','--adapter',action='store', type=int, help='brightness on ac', default=100, required=False) arg_parser.add_argument( '-b','--battery',action='store', type=int, help='brightness on battery', default=10, required=False) return arg_parser.parse_args() def main(): args = parse_args() while True: if on_ac_power(): set_brightness(args.adapter) while on_ac_power(): time.sleep(1) else: set_brightness(args.battery) while not on_ac_power(): time.sleep(1) if __name__ == "__main__": main()