在 Manjaro Linux 上将iPad当做无线扩展副屏
设备信息
- Manjaro Linux KDE
- Nvidia 显卡
- 1920x1080 144hz显示屏
需要解决的问题
- 怎么创建虚拟显示屏
- 怎么自定义刷新率以及分辨率
- 通过什么方式进行无线投屏
解决
1. 创建虚拟显示屏
Intel 显卡
可以使用这个软件直接创建,具体步骤见README
AMD
目前没有找到途径,详见https://bugzilla.kernel.org/show_bug.cgi?id=203339
但是也许有上述消息已经过时,可以自行上网检索
Nvidia
https://github.com/dianariyanto/virtual-display-linux/issues/9
- 非 Manjaro 用户需要在终端中执行
sudo nvidia-xconfig
,以生产xorg.conf
文件
2.1 非 Manjaro 用户编辑/etc/X11/xorg.conf
文件中的Screen Section,添加如下内容:
2.2 注意!!! Manjaro 用户 编辑/etc/X11/mhwd.d/nvidia.conf
文件,因为 Manjaro 是由其独立的mhwd
程序进行管理
Section "Screen"
...
Option "MetaModes" "DP-0: 1920x1200_60 +0+0, HDMI-0: 1920x1080_60 +1920+120"
Option "ConnectedMonitor" "DP-0, HDMI-0"
...
EndSection
配置阐释:
You'll have to change DP-0: 1920x1200_60 +0+0, HDMI-0: 1920x1080_60 +1920+120 to suit your configuration. For me, DP-0 is connected to a primary (physical) monitor, and I and using HDMI-0 to trick the gpu to think there is a monitor connected (which I'll use for vnc secondary display). +0+0 and +1920+120 is the offset from the left topmost corner of the X screen. However, the resolution of the virtual screen does not seem to matter, and will default to the first option in xrandr unless commanded via xrandr --output.
DP-0
为主显示屏接口,可以通过执行xrandr
命令查看。1920x1200_60
: 需根据你的屏幕的分辨率和刷新率进行修改 如1920x1080_144+0+0
: 无需更改,该配置项是设置屏幕以左上角为原点的偏移量+x+y
HDMI-0
为需要作为虚拟显示屏的接口,原理是通过让GPU认为HDMI-0
接口接入一个实际存在的显示屏1920x1080_60
: 这里可以不用做修改,实际分辨率与刷新率会是xrandr
的默认选项+1920+120
: 这里也可以不用做修改,可以自己尝试是否有效果。HDMI-0
也可以为其他无占用接口(如DP-0, DP-1, ...) 可以通过xrandr
查看
2. 自定义刷新率以及分辨率
这里我以 1920x1080 144.00hz 进行配置
注意刷新率需要和主屏幕刷新率相匹,否则会导致桌面环境(如KDE)以最低刷新率作为最终刷新率,导致桌面动画以最低帧率绘制。
❯ cvt 1920 1080 144
# 1920x1080 143.88 Hz (CVT) hsync: 169.35 kHz; pclk: 452.50 MHz
Modeline "1920x1080_144.00" 452.50 1920 2088 2296 2672 1080 1083 1088 1177 -hsync +vsync
❯ xrandr --newmode "1920x1080_144.00" 452.50 1920 2088 2296 2672 1080 1083 1088 1177 -hsync +vsync
❯ xrandr --addmode HDMI-0 1920x1080_144.00
❯ xrandr --output DP-0 --mode "1920x1080_144.00"
如果运行xrandr --addmode HDMI-0 1920x1080_144.00
遇到Bad Match
错误,请详见 https://www.cnblogs.com/littleblacklb/p/17985967
3. 通过什么方式进行无线投屏
- vnc:
x11vnc -multiptr -clip 1920x1080+0+1080
-clip 1920x1080+0+1080
: 这是剪切屏幕的参数,这个参数表达的意思是以主显示屏坐上角为原点,向下偏移1080px个像素作为新的原点,裁剪一个1920x1080的屏幕大小
以下图为示例(上1920x1080 下1184x820):
x11vnc -multiptr -clip 1184x820+0+1080
- 通过
Deskreen
进行投屏,这里不多阐述