我刚刚在实时模式下运行了 Ubuntu 21.04,以便在配备 OLED 屏幕的 XPS 15 9510 上进行完整安装之前进行测试,但我无法控制屏幕亮度,我知道 OLED 屏幕存在多年前的问题,尽管如此,我认为此时它已经解决了。戴尔通过终端提供了一种临时解决方法,但不太实用:
有什么建议可以解决这个问题吗?谢谢
答案1
我创建了一个脚本,使您能够使用建议的戴尔解决方案创建自定义键盘快捷键来调整屏幕亮度:
https://gist.github.com/lagerone/1568ea6fbb98fd90a3495f9e51e26c8c
您可能需要修改它,因为脚本假定笔记本电脑的屏幕名称是eDP-1
。运行xrandr
以找出您的屏幕名称并相应地修改此行:
subprocess.run(["xrandr", "--output", "eDP-1", "--brightness", str(adjusted_level)])
以下是完整脚本:
#!/usr/bin/python3
import logging
import os
import subprocess
import sys
from typing import Literal
logging.basicConfig(level=logging.DEBUG)
FILE_PATH = os.path.join(
os.path.dirname(os.path.realpath(__file__)), ".screen-brightness"
)
def read_current_level() -> float:
if not os.path.isfile(FILE_PATH):
return 1
with open(
file=FILE_PATH,
mode="r",
encoding="utf-8",
) as file:
current_level = file.readline().strip()
return float(current_level)
def save_level(level: float) -> None:
with open(
file=FILE_PATH,
mode="w",
encoding="utf-8",
) as file:
file.write(str(level))
def adjust_level(method: Literal["up", "down"]) -> None:
adjuster = 0.05 if method == "up" else -0.05
current_level = read_current_level()
adjusted_level = current_level + adjuster
if adjusted_level > 1:
adjusted_level = 1
if adjusted_level < 0.2:
adjusted_level = 0.2
logging.debug(f"Setting screen brightness to {adjusted_level}.")
subprocess.run(["xrandr", "--output", "eDP-1", "--brightness", str(adjusted_level)])
save_level(level=adjusted_level)
if __name__ == "__main__":
METHOD = sys.argv[1] if len(sys.argv) > 1 else "up"
adjust_level(method=METHOD)
答案2
我的 Precision 5550 破电脑也遇到了同样的问题,它与 XPS 9500 几乎相同。在最新的 Fedora 38 和最新的 1.22 BIOS 中,我的亮度键可以正常工作。这是内核 6.2.12-300.fc38.x86_64,因此,如果使用 Ubuntu 上的最新内核和最新的 BIOS,它很可能也可以在 9510 上正常工作。