当前位置:   article > 正文

ubuntu (20.04 LTS) 屏幕亮度调节无效解决方法_ubuntu20亮度无法调节

ubuntu20亮度无法调节

问题描述

  因为学习需要,在Win10系统的基础上安装了Ubuntu20.04 LTS 双系统,但遇到了各种各样的问题。经过一番搜索,解决了大部分的问题,但最难搞的就是屏幕亮度调不了的问题。虽然这并不是什么硬伤,但是这个刺眼的屏幕亮度太辣眼睛了,解决一下还是有必要的。网上看过了许多文章,许多办法都尝试过,但终究是没能很好的解决,最终经过一番努力找到了一个比较能让我满意的办法。这也许是你未曾看到过的一种解决方法,如果你也有这个问题,在你的系统上应该也可以适用。

尝试过的解决方法

我的尝试历程和这篇博文比较相似,除此之外还尝试了一些方法。

  1. 按照一些博主的说法尝试了升级内核,但是升级内核后仍无法调节
  2. 安装英伟达显卡的驱动,安装完成依旧无法调节
  3. 修改内核,使亮度控制的文件改为/sys/class/backlight/intel_backlight/brightness,但是这个是intel的CPU才有的,我是AMD的CPU加英伟达的显卡,所以没有这个文件夹
  4. 尝试按照英伟达显卡无法调节亮度的思路去解决问题,尝试过修改/etc/default/grub文件,也尝试过修改/usr/share/X11/xorg.conf.d/10-nvidia.conf文件,但是都没有效果。甚至按照某个博主的配置的修改了10-nvidia.conf文件后还启动系统黑屏了,费了好大功夫才又把屏幕点亮。
  5. 是确实可以解决问题的一种方法,就是下载Brightness Controller Simple软件进行调节,确实可行,就是有些麻烦,需要每次开机都调节一下,而且和系统亮度没有关联。

好像还试了几种方法来着,也不太记得了,主要就是这些。

解决方法发现历程

  虽然下载Brightness Controller Simple软件可以实现调节亮度,但是有些麻烦,还是希望能够像正常电脑一样用键盘或拖系统的亮度条完成控制。
  想到的第一个方法就是看能不能给这个控制程序传参数以便通过命令控制,如果可以的话就会好处理很多,但难受的是传参数并没有用。
  不过随后意外发现这个程序是用python写的,就用文本方式打开看了下源码,读了一下感觉还是很好理解的。最核心的就是调用系统的驱动,也被软件开发者封装成了一个函数,获取驱动后通过系统命令就可以进行控制。
  了解到这些后,马上打开控制台开始尝试调整亮度,果然凑效了!再结合之前读文章时发现存储系统亮度值的是/sys/class/backlight/acpi_video0/brightness这个文件,就写了一小段程序来实时监测这个文件并控制屏幕亮度。实验非常成功,然后将这个python脚本设置成开机自动运行就完美解决问题了~

解决方法

  1. 第一步先找到存储系统亮度值的文件,目前了解情况看来ubuntu应该都是有/sys/class/backlight/acpi_video0/brightness这个文件的吧,不是的话需要找一下对应的文件。使用cat命令看一下内容发现里面只有一个亮度值的整数文本,非常方便读取,调节系统亮度值也会刷新数值。

  2. 接着在/usr目录下新建个目录并创建python脚本,代码很简单,有额外需要的c友可以自行修改使用。

    cd /usr
    mkdir self_documents
    cd self_documents
    sudo gedit ubuntu_brightness_assistant.py
    
    • 1
    • 2
    • 3
    • 4

    打开文本后粘贴python代码如下,然后保存退出:

    import sys
    import subprocess
    import time
    from os import system
    import os
    
    # 这部分函数来自Brightness Controller Simple软件
    def detect_display_devices():
    	"""Detects available displays"""
        connected_devs = []
        xrandr_output = subprocess.check_output('xrandr -q', shell=True)
        lines = str(xrandr_output, encoding="utf-8").split('\n')
        for line in lines:
            words = line.split(' ')
            for word in words:
                if word == 'connected':
                    connected_devs.append(words[0])
        return connected_devs
    
    
    def get_system_brightness(path: str) -> int:
        brightness = 100
        if os.path.exists(path):
            with open(path, 'r') as f:
                brightness = int(f.readline())
        else:
            return brightness
        return brightness
    
    
    def main(argv):
        detected_device = detect_display_devices()[0]
        brightness = 100
        while True:
            time.sleep(0.1)
            if brightness != get_system_brightness(argv[1]):
                brightness = get_system_brightness(argv[1])
                system('xrandr --output %s --brightness %.2f' % (detected_device, brightness / 100))
    
    
    if __name__ == '__main__':
        main(sys.argv)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
  3. 这个python脚本需要传入一个参数,就是那个存着系统亮度值的文件路径,接下来只要用下面命令运行这个python脚本就可以通过系统改变屏幕亮度值了。

    python3 /usr/self_documents/ubuntu_brightness_assistant.py /sys/class/backlight/acpi_video0/brightness &
    
    • 1
  4. 为了不用每次都开机手动跑一下这个命令才能控制亮度,需要把这个命令添加到开机启动里面。
    在这里插入图片描述

总结

  装了Ubuntu双系统还是碰到了不少的问题,花费了好多的时间去找资料和解决,还是感谢许多c友的慷慨分享,节约了我许多时间。同时也把我自己探索的一点经历分享出来,希望能帮到遇到和我一样问题的c友,节省一点你们的时间,同时也记录一下排坑经历。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/72692
推荐阅读
相关标签
  

闽ICP备14008679号