什么情况?※
我买了款XR眼镜,相当于一副内嵌了显示器的眼镜,带着它躺着看视频很爽。
但没有止步于此,我想躺着coding,于是我把眼镜的TypeC口插到了我的电脑上。
xrandr检查发现了新的设备连接,很好。我给设置成与主屏复制的模式
xrandr --output DP-1-1 --same-as eDP-1
Good,奏效了。但是我要是躺着用,笔记本自己的屏幕就没用了,我准备关掉它。
xrand --output eDP-1 --off
问题来了,主屏幕的确是黑了,但眼镜里只有鼠标可以动,键盘操作过一会才响应,卡的很。
什么情况??
排查※
按CapsLock 大写灯还有反应,说明键盘连接良好,Kernel也没挂。
先试着切tyy,Ctrl+Alt+F4 幸运的是tty还在主屏幕工作。重启Xorg后恢复正常了
切回tty2,sddm自动恢复了,再次登陆进去关闭主屏幕,又复现了。
检查Xorg状态也正常。我试了plasma/X11、xfce、i3wm和plasma/Wayland,只有plasma/wayland工作正常。
说明还是Xorg到显示器这个环节有问题,于是我去/etc/X11/下检查xorg.conf 。
里面配置了Intel和nvidia两张显卡,现在默认是nvidia,怀疑是nvidia驱动问题,
我切换为Intel显卡modesetting驱动,重启Xrog 。
主屏幕好了,但找不到DP设备了。怪。
这说明DP接口和nvidia设备有关。检索了一下,大概和Optimus配置有关。
游戏笔记本通常都是双显卡,默认情况下使用核心显卡,因为核心显卡在功耗和发热较低,低负载时更合适,所以核心显卡是直接连接笔记本内屏的,而外部视频接口通常连接在独立显卡上,因为外接显示器通常比内屏更高端,需要更强的性能。
那么就产生了一个问题,同时使用内置显示器和独立显卡时怎么办?不能说没有外接显示器就不能用独显吧。
厂商也早就设计好了,在独立显卡和内置显示器之间加入了一个叫“复用交换机”(MUX switch)的东西,
这玩意把显示器和显卡解耦了,有内屏时输出到内屏,插入外屏时也可以输出外屏。
常见的双显卡架构是i+n即Intel核心显卡+Nvidia独立显卡,NVIDIA显卡通过技术称为"Optimus"来与Intel核心显卡进行切换。
这个技术在Windows上默认已经配置好了,所以大多数人都没有感知这个东西。
但在Arch上就需要手动配置了,当然一些发行版封装了一些显卡切换工具可以开箱即用(Manjaro好像就有显卡切换工具
解决※
Optimus※
ArchWiki——>NvidiaOptimus 有目前Optimus的几种实现,
Optimus-manager的开发者好像是Archuser,对arch的支持可能更好,另外还支持Prime分别渲染程序。
optimus-manager和他的前端optimus-manager-qt均在AUR中
paru -S optmus-manager optimus-manager-qt
先保证你的系统驱动是可用的,比如安装了nvidia或nvidia-beta。
然后启用它
sudo systemctl enable optimus-manager
重启系统,不出意外的话,它应该正常工作
systemctl status optimus-manager
● optimus-manager.service - Optimus Manager Commands >
Loaded: loaded (/usr/lib/systemd/system/optimus->
Active: active (running) since Tue 2025-04-15 20>
Invocation: 145c9ea5ccf445708690f923b77191a0
Process: 730 ExecStartPre=/usr/bin/python3 -u -m >
Process: 784 ExecStartPre=/usr/bin/python3 -u -m >
Main PID: 946 (python3)
Tasks: 1 (limit: 18834)
Memory: 220K (peak: 124.1M, swap: 6.4M, swap pea>
CPU: 2.519s
CGroup: /system.slice/optimus-manager.service
└─946 /usr/bin/python3 -u -m optimus_man>
然后你就可以通过前端或指令切换显卡了
optimus-manager --switch [nvidia\integrated\hybrid]
需要注销Session才可以生效。
我切换到混合模式Hybrid后,开启第二屏关闭主屏
Ok~,一切正常~
参考※
https://bbs.archlinuxcn.org/viewtopic.php?id=10940
https://wiki.archlinuxcn.org/wiki/NVIDIA_Optimus#可用方法