最近把本科时用的一台垃圾笔记本重装了一个 ArchLinux 系统。这里简单记录了下我的配置过程,主要解决几个没有被系统很好兼容的 Fn 键,双显卡的使用。如果有不妥的地方也希望大家指正。

触控板

触控板的支持还是比较好的,基本上开箱即用。唯一的问题,也是老生常谈的问题,就是我需要根据我的习惯把触控板改成双指自然滚动,当然这些设置如果有桌面环境应该都可以在设置中心里配置,而我没有使用桌面环境,需要手动编辑配置文件。
安装 xf86-input-libinput 包,然后在 /etc/X11/xorg.conf.d 里配置 20-touchpad.conf ,写入以下内容:

  1. Section "InputClass"
  2. Identifier "libinput touchpad catchall"
  3. MatchIsTouchpad "on"
  4. MatchDevicePath "/dev/input/event*"
  5. Driver "libinput"
  6. Option "NaturalScrolling" "on"
  7. Option "Tapping" "on"
  8. Option "DisableWhileTyping" "on"
  9. EndSection

这样打开了自然滚动,敲击模拟单击,打字时临时禁用触控板的功能。

WIFI 开关键

笔记本电脑上有个 wifi 的开关,看起来它也不听话。因为它并不是一个在硬件上关闭无线网卡的按钮。
通过以下命令来捕获按键事件:

  1. $ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'

它能被识别为 246 , 也就是 XF86WLAN 键。
这样的话方案就很明确了,我只需要自己在 i3 的配置里加上这个按钮的功能(打开/关闭 wifi)。我的网络管理后端使用的是 NetworkManager, 所以我就搓了个脚本来控制无线网络,并在 i3 的配置里调用这个脚本:

  1. bindsym XF86WLAN exec --no-startup-id ~/.config/i3/toggle_wifi
  1. #!/bin/sh
  2. status=$(nmcli radio wifi)
  3. case $status in
  4. enabled)
  5. nmcli radio wifi off
  6. ;;
  7. disabled)
  8. nmcli radio wifi on
  9. ;;
  10. esac

DPMS

只要内核启用了 ACPI,DPMS 是会自动启用的。但是我发现在 lightdm 下,我默认启用 DPMS 似乎并没有生效,一晚上屏幕都没有自动关闭。
个人觉得可行的解决方法有两个,一个是在 lightdm 配置的 greeter-setup-script 里自己用 xset 强行设置 DPMS 的时间;另一个是手动设置 xorg.conf
我选择了第二种方式,/etc/X11/xorg.conf.d 下新建一个配置 10-monitor.conf

  1. Section "Monitor"
  2. Identifier "LVDS0"
  3. Option "DPMS" "true"
  4. EndSection
  5. Section "ServerFlags"
  6. Option "StandbyTime" "5"
  7. Option "SuspendTime" "5"
  8. Option "OffTime" "5"
  9. EndSection

双显卡

硬件型号:Intel HD Graphics 5500 & NVIDIA GeForce 910M

安装驱动

Intel 显卡驱动

安装 xf86-video-intel 包即可。

  1. $ sudo pacman -S xf86-video-intel

NVIDIA 显卡驱动

安装 nvidia 包即可。

  1. $ sudo pacman -S nvidia

不过我由于最新内核对我的部分硬件支持存在 bug,我暂时使用的是 lts 内核。所以我安装的是 nvidia-lts 驱动。

配置 PRIME render offload

安装 nvidia-prime 包,一般就行,不需要额外配置。

  1. $ pacman -S nvidia-prime

这时候重启系统,通过 prime-run 命令就能使指定程序在 NVIDIA 显卡上渲染了。
当然你可以这样测试来比较两次输出的不同:

  1. $ glxinfo | grep "OpenGL renderer"
  2. $ prime-run glxinfo | grep "OpenGL renderer"

亮度调节

不过,这样配置还是出现了一些问题。 我发现,我的笔记本上的亮度调节按键并没有作用。由于我使用的 i3wm 不是桌面环境,调节亮度需要自己手动设置。
安装 xorg-xbacklight 包,在 i3 的配置中添加以下内容:

  1. bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 5.0 #increase screen brightness
  2. bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 5.0 #decrease screen brightness

并在 /etc/X11/xorg.conf.d 下新建一个配置 20-nvidia.conf

  1. Section "Device"
  2. Identifier "iGPU"
  3. Driver "intel"
  4. Option "Backlight" "intel_backlight"
  5. EndSection
  6. Section "Screen"
  7. Identifier "iGPU"
  8. Device "iGPU"
  9. EndSection
  10. Section "Device"
  11. Identifier "dGPU"
  12. Driver "nvidia"
  13. EndSection

这样就可以在使用双显卡的同时使用 intel_backlight 了。