Яркость представляет Ubuntu 14.04.5

Обычно, экраны ноутбука являются тусклым набором к самому низкому уровню яркости, когда зарядное устройство не присутствует, и прояснитесь до макс. уровня, если зарядное устройство является существующим/связанным. Однако на моем ноутбуке Skylake Dell Inspiron 7559, этого не происходит. Мой ноутбук всегда находится на 100%-й яркости. Как я могу получить эту "функцию"?

0
задан 1 November 2016 в 16:20

1 ответ

Введение

Сценарий ниже является измененной версией моих предыдущих сценариев, записанных в Python и использующий dbus исключительно для опроса ac_adapter присутствие и установка яркости экрана.

Использование

Использование просто: звоните из командной строки как

python ./brightness_control.py

Значения по умолчанию сценария к 100%-й яркости на AC, 10% на батарее. Пользователи могут использовать -a и -b установить их желаемые уровни яркости на ac и батарее соответственно.

AS, данный -h опция:

$ ./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()
1
ответ дан 28 September 2019 в 06:53

Другие вопросы по тегам:

Похожие вопросы: