執行需要 xserver 會話的啟動腳本

執行需要 xserver 會話的啟動腳本

我有一個 python3 腳本,它使用Gtk-module (從 導入gi.repository,用於最近的管理器功能),需要連結到目前的 xserver 會話(lightdmUbuntu 中的服務)。

透過控制台(在 xserver 會話中)手動運行它是可行的,但我希望它自動運行。

init.d 腳本將無法運作(將 DISPLAY 變數設為 0.0)。使用xvfb-run使 init.d 腳本運行我的腳本,但按預期在虛擬 xserver 環境中運行(不是我的)。是否沒有等效的方法將 init.d 腳本連接到目前的 xserver-session?

到目前為止,我已經嘗試了一個.xinitrc文件(在 中~/,是的,它是可執行的),以及創建.xprofile, .xsession, .xsessionrc所有通過ln -s.我嘗試添加gnome-terminal &進行測試,但終端也沒有顯示,無論是重新啟動lightdm還是整個電腦並再次登入後。

我也嘗試過在 X 會話恢復時執行設定腳本,但這給了錯誤Can't open /usr/share/acpi-support/power-funcs

upstart按照建議使用使用 lightdm 執行啟動腳本也不會提供 xserver 顯示變數(或句柄?),只需在lightdm啟動後運行它,對嗎?

也許把它放在某個地方xorg.conf? (如何使 xrandr 自訂永久有效?) 打敗我..

(我的腳本建立最近文件的快速列表,並將它們添加到統一啟動器的右鍵選單中,類似於 Windows:https://github.com/thirschbuechler/ubuntu-recentquicklists

答案1

與許多情況一樣,時機是這裡的主要問題。

  1. 您的腳本需要在用戶級別運行登入後,因為它編輯啟動器項目,這是在使用者層級。
  2. 即使這樣,看看腳本應該做什麼(閱讀你的解釋),腳本需要等待一段時間才能完全加載桌面; Unity 啟動器並不是登入後第一個「準備好」的東西。

簡而言之

您需要執行腳本 appr。登入後 10-15 秒,可以透過新增以下任一方式來完成:

/bin/bash -c "sleep 15 && python /path/to/script.py"

(如果腳本不可執行),或者

/bin/bash -c "sleep 15 && /path/to/script.py"

(如果腳本執行檔)新增至使用者的啟動應用程式:Dash > 啟動應用程式 > 新增。

運行它全部用戶

如果您需要運行腳本對於所有用戶(登入後),您可以一次將其新增至所有使用者的啟動應用程式。

為此,請將以下程式碼複製到一個空文件中,編輯各行,從以下位置開始Name=並設定該行中腳本的正確路徑:

Exec=/bin/bash -c "sleep 15 && python /path/to/script.py"

然後將檔案儲存/etc/xdg/autostartlaunch_script.desktop(或任何你喜歡的,只要以 結尾.desktop

[Desktop Entry]
Name=Name
Exec=/bin/bash -c "sleep 15 && python /path/to/script.py"
Type=Application

相關內容