Opensuse
在 systemd 服務文件中設置 DISPLAY
我試圖通過嘗試將 xclock 作為服務啟動來學習 systemd 服務;服務文件如下
[Unit] Description=clock [Service] Environment=DISPLAY=:0 ExecStart=/usr/bin/xclock [Install] WantedBy=graphical.target
有什麼想法嗎?我收到一條錯誤消息,提示“無法連接到顯示器”。
應用程序需要兩件事才能在 X 顯示器上打開一個視窗。它需要知道 X 顯示器的位置;
DISPLAY
這是由環境變數傳達的。它還需要通過 X 伺服器進行身份驗證。這是通過 cookie 傳達的,cookie 是 X 伺服器在啟動時生成的秘密值,並儲存在只有啟動 X 伺服器的使用者才能訪問的文件中。預設的 cookie 文件是~/.Xauthority
.如果您的 X 伺服器使用預設的 cookie 文件位置,那麼添加
Environment=XAUTHORITY=/home/dogs/.Xauthority
將起作用(假設/home/dogs
是在 X 下登錄的使用者的主目錄)。如果您需要查找該位置,請參閱我可以以 root 身份在其他使用者的桌面上啟動圖形程序嗎?在遠端 X 顯示器上打開一個視窗(為什麼“無法打開顯示器”)?或者,如果 cookie 文件位於預設位置(如果不是,您必須找到 cookie 文件,就像在根目錄中一樣),以執行 X 伺服器的使用者身份執行程序。添加
User
指令(例如User=dogs
)。當然,如果您指定的使用者擁有的那個號碼沒有 X 顯示,則該服務將不會執行。
從 Systemd 啟動 GUI 程序是相當奇怪的。它不是為此而設計的。GUI 程序存在於由使用者啟動的 X 會話中。Systemd 用於系統程序。您應該嘗試使用守護程序。