我有一台运行 Fedora 36 KDE 的台式机。我使用 systemd 服务文件对其进行了设置x11vnc
。每当我通过 mac 上的 realvnc 连接到桌面时,桌面的显示器也会打开并镜像我在 realvnc 上执行的操作。有没有办法配置x11vnc
为不这样运行?
systemd 服务文件:
[Unit]
Description=x11vnc service
After=display-manager.service network.target syslog.target
[Service]
Type=simple
ExecStart=/bin/bash -c "/usr/bin/x11vnc -display :0 -auth guess -rfbauth /home/user/.vnc/passwd -noxdamage -shared"
#ExecStop=/usr/bin/killall x11vnc
User=user
Group=user
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
- 我尝试删除
User=
和Group=
,但服务出现错误:
(code=exited, status=1/FAILURE)
如果我首先模拟这个su root
,然后运行这个命令,它就会起作用(但我不知道为什么它不适用于 systemd 服务):
/usr/bin/x11vnc -display :0 -auth guess -rfbauth /home/user/.vnc/passwd -noxdamage -shared
- 然后我改变了 systemd
ExecStart
来运行它User=
并Group=
注释掉:
/usr/bin/x11vnc -display :1 -auth guess -rfbauth /home/user/.vnc/passwd -noxdamage -shared
还是同样的错误:
(code=exited, status=1/FAILURE)
我现在已经不知道该做什么了,欢迎提出任何意见!
编辑:我将 systemd 文件更改为此,它工作正常,尽管它仍然使用我的桌面显示器镜像 vnc 屏幕。我认为这与设置有关-display :0
。
[Unit]
Description=x11vnc service
After=display-manager.service network.target syslog.target
[Service]
Type=simple
ExecStart=/bin/bash -c "/usr/bin/x11vnc -display :0 -auth /home/user/.Xauthority -rfbauth /home/user/.vnc/passwd -noxdamage -shared"
#ExecStop=/usr/bin/killall x11vnc
#User=user
#Group=user
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
EDIT1:我把-auth
选项改成了$(find /var/run/sddm/ -type f)
,因为我认为它需要这样才能登录到用户会话。User=
并且Group=
仍然被注释掉,因为否则会抛出错误。然后将显示编号更改为 1 仍然出错。我现在采取的折衷方法是关闭显示器但保持 HDMI 电缆连接,所以x11vnc
仍然认为有一个物理显示器:0。我可能不得不研究x11vnc
无头设置。
答案1
我意识到这x11vnc
是为了控制你的物理桌面会话,你必须配置 x 以输出到虚拟显示器,以便欺骗x11vnc
它认为你正在控制物理会话。我不想那样做。我需要的本质上是一个无头的 vnc 机器。
因此我决定systemctl disable sddm
,然后安装tigervnc-server
并使用它。
现在,如果我真的需要,我可以在桌面上使用 TTY 控制台,如果 vnc 失败,总会有 ssh。