X11

如何使用 lightdm 設置 x11vnc 以在啟動時啟動?

  • June 8, 2021

我有一台 X 伺服器,全部配置並執行 LightDM 和 GNOME 桌面。我安裝了 x11vnc 來訪問 X 伺服器。我在 GNOME 中打開一個終端並執行x11vnc. 這讓我可以通過 VNC 訪問真正的 X 伺服器,但是我想自動啟動它。我可以x11vnc~/.xprofile登錄 LightDM 後啟動,但我更希望在啟動 LightDM 後立即啟動它,這樣當我登錄 VNC 時,我可以看到 LightDM 提示。我該怎麼做呢?

您可以通過添加 systemd 服務來啟動 x11vnc 伺服器After=LightDM 來完成此操作。確保服務在使用者下執行,lightdm這樣您就不會遇到討厭的 XAuthorityNo protocol specified錯誤。

/etc/systemd/system/x11vnc@.service:

[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表示該程序是非分叉的,下面的命令在ExecStartVNC 伺服器的生命週期內保持執行。

User=lightdm表示下面的程序ExecStart應該由 user 執行lightdm,這是一個系統使用者,其目的是在 LightDM 登錄提示期間執行 X 客戶端。該使用者擁有 X 伺服器,因此為了讓應用程序在登錄提示符下執行,您需要以該使用者身份執行它們。

ExecStart=/usr/bin/x11vnc -display %i是啟動此服務時要執行的命令,它表示 start x11vncon display %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和、:259005901、 和5902、和上執行多個 VNC 伺服器。x11vnc@:0``x11vnc@:1``x11vnc@:2

引用自:https://unix.stackexchange.com/questions/653221