如何使用 lightdm 设置 x11vnc 以在启动时启动?

如何使用 lightdm 设置 x11vnc 以在启动时启动?

我有一个 X 服务器,全部配置并运行 LightDM 和 GNOME 桌面。我安装了 x11vnc 来访问 X 服务器。我在 GNOME 中打开一个终端并运行x11vnc.这使我可以通过 VNC 访问真正的 X 服务器,但我想自动启动它。我可以在登录 LightDM 后输入启动,但我更喜欢在 LightDM 启动后立即启动它,这样当我登录 VNC 时,我可以看到 LightDM 提示符x11vnc~/.xprofile我该怎么做呢?

答案1

您可以通过添加 systemd 服务来启动 x11vnc 服务器After=LightDM 来完成此操作。确保该服务在用户下运行,lightdm这样您就不会遇到讨厌的 XAuthorityNo protocol specified错误。

/etc/systemd/系统/[电子邮件受保护]:

[Unit]
Description=Remote desktop service (VNC)
After=display-manager.service

[Service]
Type=simple
User=lightdm
ExecStart=/usr/bin/x11vnc -display %i                      
Restart=always
RestartSec=3

[Install]
WantedBy=graphical.target

After=display-manager.service告诉 systemd 在启动此服务之前需要运行显示管理器 (LightDM)。

Type=simple表示该进程是非分叉的,因此下面的命令ExecStart在 VNC 服务器的生命周期内保持运行。

User=lightdm表示下面的进程ExecStart应该由 user 运行lightdm,该系统用户的目的是在 LightDM 登录提示期间运行 X 客户端。该用户拥有 X 服务器,因此为了让应用程序在登录提示符下运行,您需要以该用户身份运行它们。

ExecStart=/usr/bin/x11vnc -display %i是激活该服务时运行的命令,它表示x11vnc在显示时启动%i,这是指启动该服务时“@”符号后面的任何内容。

Restart=always表示每当服务无法启动时,请重试。

RestartSec=3表示每次重试时等待 3 秒。

WantedBy=graphical.target表示每当 systemd 启动图形系统时就运行该服务(旧版运行级别 5)。

要加载该单元(使 systemd“看到”它),请运行命令

# systemctl daemon-reload

要启用它(使其在启动时启动),请运行命令

# systemctl enable x11vnc@<your-$DISPLAY-here>

<your-$DISPLAY-here>您想要授予 VNC 访问权限的 X 显示在哪里(通常:0
要启动它,请运行命令

# systemctl start x11vnc@<your-$DISPLAY-here>

关于 的同上<your-$DISPLAY-here>

请注意,您可以通过在“@”后传递不同的显示来在同一单元文件下运行多个独立的服务。例如,您可以在 X 显示器:0:1:2、 端口59005901、 以及5902x11vnc@:0x11vnc@:1和 上运行多个 VNC 服务器x11vnc@:2

相关内容