使用argos调用ddcutil修改显示亮度和对比度
本教程在Ubuntu 18.04和Gnome 3.28.4下测试通过,更新版本的Gnome没有测试,欢迎测试!
- 安装ddctuil和i2c-tools
sudo apt install ddcutil i2c-tools
- 将当前用户加入i2c用户组
sudo usermod -a -G i2c $(whoami)
- 安装Argos
https://extensions.gnome.org/extension/1176/argos/
在终端中执行
ddctuil detect
记录显示器的I2C bus地址,后边会用到地址中的编号,对于下边的结构,/dev/i2c-8
则是DELL U2414H的地址,此处的编号为8
Display 1
I2C bus: /dev/i2c-8
EDID synopsis:
Mfg id: DEL
Model: DELL U2414H
Serial number: 4CWX758KDN0L
Manufacture year: 2015
EDID version: 1.3
VCP version: 2.1
Display 2
I2C bus: /dev/i2c-9
EDID synopsis:
Mfg id: AOC
Model: 22B2W
Serial number: Unspecified
Manufacture year: 2020
EDID version: 1.3
VCP version: 2.2
假设我们想控制DELL U2414H,其对应的I2C bus编号为8
,则需要在~/.pam_environment
中添加相关的环境变量,注意修改对应的编号,如下
BUS_DELL=8
此处选择~/shell_scripts
目录存放相关脚本
mkdir -p ~/shell_scripts/brightness
- 建立名为
brightness_and_contrast.sh
的脚本文件
touch ~/shell_scripts/brightness/brightness_and_contrast.sh
chmod +x ~/shell_scripts/brightness/brightness_and_contrast.sh
- 添加脚本内容
在
brightness_and_contrast.sh
中添加如下内容
#!/bin/bash
# shell for adjust brightness and contrast
BUS_NO=$1
BRIGHTNESS=$2
CONTRAST=$3
ddcutil -b $BUS_NO setvcp 10 $BRIGHTNESS
ddcutil -b $BUS_NO setvcp 12 $CONTRAST
echo $BRIGHTNESS > ~/shell_scripts/brightness/val_brightness_$BUS_NO
echo $CONTRAST > ~/shell_scripts/brightness/val_contrast_$BUS_NO
假设我们想控制Dell显示器,注意将脚本的dell和对应的编号替换成你想要控制的显示器。
- 新建脚本文件
touch ~/.config/argos/dell.sh
chmod +x ~/.config/argos/dell.sh
- 添加脚本内容
#!/usr/bin/env bash
# shell for argos, placed in ~/.config/argos with x permission
BUS_NO=$BUS_DELL
BRIGHTNESS=$(< ~/shell_scripts/brightness/val_brightness_$BUS_NO)
CONTRAST=$(<~/shell_scripts/brightness/val_contrast_$BUS_NO)
BRIGHTNESS_UP_5=$((BRIGHTNESS + 5))
BRIGHTNESS_UP_2=$((BRIGHTNESS + 2))
BRIGHTNESS_UP_1=$((BRIGHTNESS + 1))
BRIGHTNESS_DOWN_5=$((BRIGHTNESS - 5))
BRIGHTNESS_DOWN_2=$((BRIGHTNESS - 2))
BRIGHTNESS_DOWN_1=$((BRIGHTNESS - 1))
CONTRAST_UP_5=$((CONTRAST + 5))
CONTRAST_UP_2=$((CONTRAST + 2))
CONTRAST_UP_1=$((CONTRAST + 1))
CONTRAST_DOWN_5=$((CONTRAST - 5))
CONTRAST_DOWN_2=$((CONTRAST - 2))
CONTRAST_DOWN_1=$((CONTRAST - 1))
echo "DELL:$BRIGHTNESS%-$CONTRAST%|iconName=display-brightness-symbolic"
echo "---"
echo "UP| iconName=display-brightness-symbolic"
echo "--+5 | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO $BRIGHTNESS_UP_5 $CONTRAST_UP_5' terminal=false refresh=true"
echo "--+2 | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO $BRIGHTNESS_UP_2 $CONTRAST_UP_2' terminal=false refresh=true"
echo "--+1 | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO $BRIGHTNESS_UP_1 $CONTRAST_UP_1' terminal=false refresh=true"
echo "DOWN| iconName=display-brightness-symbolic"
echo "---5 | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO $BRIGHTNESS_DOWN_5 $CONTRAST_DOWN_5' terminal=false refresh=true"
echo "---2 | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO $BRIGHTNESS_DOWN_2 $CONTRAST_DOWN_2' terminal=false refresh=true"
echo "---1 | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO $BRIGHTNESS_DOWN_1 $CONTRAST_DOWN_1' terminal=false refresh=true"
echo "20% | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO 20 20' terminal=false refresh=true"
echo "25% | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO 25 25' terminal=false refresh=true"
echo "30% | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO 30 30' terminal=false refresh=true"
echo "35% | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO 35 35' terminal=false refresh=true"
echo "40% | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO 40 40' terminal=false refresh=true"
echo "50% | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO 50 50' terminal=false refresh=true"
echo "60% | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO 60 60' terminal=false refresh=true"
echo "70% | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO 70 70' terminal=false refresh=true"
echo "80% | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO 80 80' terminal=false refresh=true"
echo "90% | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO 90 90' terminal=false refresh=true"
echo "100% | bash='~/shell_scripts/brightness/brightness_and_contrast.sh $BUS_NO 100 100' terminal=false refresh=true"
- 重启电脑生效 此时在Gnome的顶端会出现Argos的插件,点击对应的选项即可更改显示器亮度 如下图