通过软件控制外接显示器亮度

通过软件控制外接显示器亮度

大家好,Ubuntu 社区,

我可以通过以下命令控制通过 DisplayPort 连接的 DELL U2713HM 的亮度:

ddccontrol -p -r 0x10 -w 53

在此示例中,数字 53 代表亮度级别(范围为 0 到 100)。但我不知道如何将命令链接到键盘上的亮度键。

我已经搜索过了,但刚刚找到了有关集成笔记本电脑屏幕的答案。/sys/class/backlight文件夹中acpi_video0有一些子文件夹和文件。文件 actual_brightness 包含一个从 0 到 20 的数字,当我按下亮度键时,它会发生变化。

如何将我的外接显示器列为 /sys/class/backlight 中的设备?

附言:我正在运行全新安装的 Ubuntu 12.10,带有集成显卡 Intel HD4000。

答案1

我认为您所期望的外接显示器的解决方案/sys/class/backlight不会起作用,但好消息是您可以获得漂亮的亮度动画!

尝试

notify-send " " -i notification-display-brightness-low -h int:value:50 -h string:x-canonical-private-synchronous:brightness &

现在我们可以编写一个模拟 Ubuntu 亮度变换器的脚本:

#!/bin/bash
#get current brightness
presbright=$(ddccontrol -p | grep -A1 0x10 | tr -d '\n\t' | sed 's/.*value=\([^a-zA-Z]*\),.*/\1/')
#stepsize for the brightness change
stepsize=10

case "$1" in
        up)
          newbright=$(( ${presbright}+${stepsize} ))
          newbright=$(echo $newbright | awk '{if($1 < 100){if($1 > 0) print $1; else print 0;} else print 100;}')

          notify-send " " -i notification-display-brightness-low -h int:value:$newbright -h string:x-canonical-private-synchronous:brightness &
          ddccontrol -p -r 0x10 -w $newbright
        ;;
        down)
          newbright=$(( ${presbright}-${stepsize} ))
          newbright=$(echo $newbright | awk '{if($1 < 100){if($1 > 0) print $1; else print 0;} else print 100;}')

          notify-send " " -i notification-display-brightness-low -h int:value:$newbright -h string:x-canonical-private-synchronous:brightness &
          ddccontrol -p -r 0x10 -w $newbright            
        ;;
        status)
          echo $presbright
        ;;
        *)
          echo "Accepted arguments are: up, down, status."
        ;;
esac

exit 0

如您所见,它将值限制在 0 到 100 之间。现在,您可以将脚本的updown调用绑定到您选择的一些键盘快捷键上,系统设置 > 键盘 > 快捷键,就像 fotomonster 建议的那样。


笔记:
我不知道ddccontrol -p需要多长时间,如果时间太长,您还可以sync在脚本中添加一个选项,将显示器的亮度值保存到文件中。然后,ddccontrol您无需从中获取当前亮度,只需从文件中获取即可,这样应该会快得多。当然,您需要更新updown调用以将新亮度写入文件...


剧本灵感来自这篇关于 archlinux 的文章

相关内容