安装好50系列显卡驱动后,发现电脑还是不能调节屏幕亮度。于是找到了下面两个方法进行屏幕亮度调节。
方法一:使用nvidia自带的setting
nvidia-settings
然后进入GPU 0 --> DP-0 --> Color Correction就可以调节屏幕亮度了
方法二:直接改亮度那个配置文件
我的亮度配置文件是:/sys/class/backlight/nvidia_wmi_ec_backlight/brightness
于是我使用下面命令将亮度写到文件里面
sudo su //为了进入root环境
echo 150 > /sys/class/backlight/nvidia_wmi_ec_backlight/brightness
方法三:下载brightness-controllor
sudo add-apt-repository ppa:apandada1/brightness-controller
sudo apt update
sudo apt install brightness-controller
但是每一次都得打开这个软件,很麻烦。于是通过自己写脚本,添加到开机自动启动项让每次开机自己启动。
1:第一步先找到存储系统亮度值的文件,目前了解情况看来ubuntu应该都是有/sys/class/backlight/acpi_video0/brightness这个文件的吧,不是的话需要找一下对应的文件。
像我安装了nvidida显卡驱动,所以在下面图片路径下。
使用cat命令看一下内容发现里面只有一个亮度值的整数文本,非常方便读取,调节系统亮度值也会刷新数值。
接着在/usr目录下新建个目录并创建python脚本,代码很简单,有额外需要的c友可以自行修改使用。
使用以下命令创建一个python脚本
cd /usr
mkdir self_documents
cd self_documents
sudo gedit ubuntu_brightness_assistant.py
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):
# 确保提供了路径参数
if len(argv) < 2:
print("Error: Please provide the brightness file path as an argument.")
sys.exit(1)
detected_device = detect_display_devices()[0]
brightness = 100
# 设定亮度限制
min_brightness = 15
max_brightness = 90
while True:
time.sleep(0.1)
current_brightness = get_system_brightness(argv[1])
# 使用 max 和 min 函数简化亮度限制
current_brightness = max(min_brightness, min(max_brightness, current_brightness))
# 如果亮度发生变化,则更新
if brightness != current_brightness:
brightness = current_brightness
# 调整显示器亮度
system(f'xrandr --output {detected_device} --brightness {brightness / 100:.2f}')
if __name__ == '__main__':
main(sys.argv)
其中我使用current_brightness = max(min_brightness, min(max_brightness, current_brightness))来进行对亮度进行限制,如果亮度太小则连鼠标在哪都看不到,太大的话屏幕就像曝光过多一样。
我设置的亮度范围为15到90
这个python脚本需要传入一个参数,就是那个存着系统亮度值的文件路径,接下来只要用下面命令运行这个python脚本就可以通过系统改变屏幕亮度值了。
python3 /usr/self_documents/ubuntu_brightness_assistant.py /sys/class/backlight/nvidia_wmi_ec_backlight/brightness &
其中最后面的参数&是让这个程序后台运行,其中的/sys/class/backlight/nvidia_wmi_ec_backlight/brightness要改为自己进行亮度调节的那个路径
最后打开ubuntu的启动应用管理进行添加开机自动启动项
里面的命令为
python3 /usr/self_documents/ubuntu_brightness_assistant.py /sys/class/backlight/nvidia_wmi_ec_backlight/brightness &
重启后就发现那个亮度调节窗口可以调节亮度