我在 System76 笔记本电脑上运行 Ubuntu 16.04。亮度控制(即Fn+F8和Fn+ F9)在 Unity/Compiz/Gnome/无论默认设置下都能很好地工作,但当我改为使用 i3wm 时,我什么也没有得到。
在默认情况下,xev 会报告一些不同的东西。在 i3 上,它会报告XF86MonBrightnessUp
和XF86MonBrightnessDown
,如果 xbacklight 能正常工作的话,那将非常酷,但它却不能。它只是没有任何效果。
wayne@waynego:~$ xbacklight -set 10
wayne@waynego:~$ echo $?
0
而且我的显示器仍然像以前一样亮/暗。
我唯一能做的事情就是:
sudo sh -c "cat /sys/class/backlight/intel_backlight/max_brightness > /sys/class/backlight/intel_backlight/brightness"
你可能同意这并不理想,因为我有涉及 sudo,我的意思是我可以gksudo
或其他什么,但这也很烦人。显然某物与 compiz/unity 配合良好...我只是不知道它在做什么。
有什么方法可以让 xbacklight 工作,或者有其他方法吗?我不想运行 sudo 来更改背光设置。
答案1
按照我在https://itsfoss.com/fix-brightness-ubuntu-1310/结合我已经知道的情况,我有一张英特尔卡,我做到了
sudo touch /usr/share/X11/xorg.conf.d/20-intel.conf
sudoedit /usr/share/X11/xorg.conf.d/20-intel.conf
在该文件中我输入了以下内容:
Section "Device"
Identifier "card0"
Driver "intel"
Option "Backlight" "intel_backlight"
BusID "PCI:0:2:0"
EndSection
现在我可以使用 xbacklight,因为mreq 提及:
我将以下内容添加到我的~/.config/i3/config
bindsym XF86MonBrightnessUp exec xbacklight -inc 10
bindsym XF86MonBrightnessDown exec xbacklight -dec 10
最好的部分是,我实际上可以完全关闭背光,所以如果我想像亚当·萨维奇那样将我的电脑用作梦想日记,我完全可以。
答案2
i3wm
我在笔记本电脑上全新安装时遇到问题,不知什么原因,我的XF86MonBrightnessUp/Down
按键没有被注册(我已检查过xev
)。我最终做的是创建与acpi
按下的按键相对应的动作和事件。
以下是我分别在/etc/acpi/actions
和中定义的动作/事件/etc/acpi/events
:
操作
/etc/acpi/actions/bl-down.sh
#!/bin/sh
bl_device=/sys/class/backlight/acpi_video0/brightness
echo $(($(cat $bl_device)-1)) | sudo tee $bl_device
/etc/acpi/actions/bl-up.sh
#!/bin/sh
bl_device=/sys/class/backlight/acpi_video0/brightness
echo $(($(cat $bl_device)+1)) | sudo tee $bl_device
活动
/etc/acpi/events/bl-down
event=video/brightnessdown BRTDN 00000087 00000000
action=/etc/acpi/actions/bl-down.sh
/etc/acpi/events/bl-up
event=video/brightnessup BRTUP 00000086 00000000
action=/etc/acpi/actions/bl-up.sh
您可以在终端中使用acpi_listen
然后按下相关的组合键来验证亮度调高/调低 acpi 事件代码(例如,对我来说,Fn + 向下箭头表示降低亮度)。
最后,不要忘记重新acpid
启动sudo /etc/init.d/acpid reload
笔记:您的背光设备可能定义在与我的位置不同的位置/sys/class/backlight/acpi_video0
- 而这正是我的位置。请仔细检查一下。
我还在我的程序中编写了一个小函数~/.bashrc
,让我可以从终端设置亮度。我的最大亮度值为 24000,所以我只需将 0 到 10 之间的数字乘以 2400。当我想立即调暗或调亮屏幕时,这个函数非常有用。
brs() {
inp=$1
echo $[inp * 2400] | sudo tee /sys/class/backlight/intel_backlight/brightness
}
(此外,出于好奇,您买了哪款 System76 机器,您觉得它怎么样?不久前我正考虑买一台。)
答案3
最简单的解决方案github/particleofmass:
i3wm-背光
映射您的热键以增加或减少 i3 wm 中的屏幕亮度。首先安装亮度控制使用:
sudo apt install brightnessctl
将这些行粘贴到您的 i3 配置文件中(
~/.config/i3/config
):bindsym XF86MonBrightnessUp exec --no-startup-id brightnessctl set +5% bindsym XF86MonBrightnessDown exec --no-startup-id brightnessctl set 5%-
注意:我是该代码的作者。
答案4
我发现这个,它可能会有帮助:)