啟動時自動啟動後隱藏程式的 GUI

啟動時自動啟動後隱藏程式的 GUI

在遭受了一場紅移中的錯誤,我找到了一個很好的替代品,鳶尾花。

我已將該Iris資料夾放入我的home目錄中,並將以下命令新增至 Startup Applications sh /home/arun/Iris/Iris.sh

這一切都運作良好,但在啟動時,設定 GUI 視窗也會啟動。我真正需要的是小面板指示器圖示。有點像是 OS X 的「登入項目」中的「隱藏」功能。

這能實現嗎?

答案1

虹膜設定視窗

如果我們用 關閉 Iris 的設定窗口X似乎關閉。

wmctrl然而,如果我們在( )的幫助下做同樣的事情wmctrl -ic <window_id>,結果不僅是窗戶已關閉,但完整的應用程式。

我的結論是窗戶實際上並不是關閉, 但未映射的當我們按下X.

我們可以在 的幫助下做同樣的事情xdotool。對此答案的編輯版本:如何在啟動時運行程式並最小化?,然後我們就可以Iris在不出現設定視窗的情況下啟動。

啟動虹膜沒有設定視窗(腳本)

  1. 該腳本同時使用wmctrlxdotool

    sudo apt-get install wmctrl xdotool
    
  2. 將下面的腳本複製到一個空文件中,儲存到Iris.sh與您的檔案相同的目錄(因此它們位於同一目錄中),如start_iris.py.

    #!/usr/bin/env python3
    import subprocess
    import time
    import sys
    import os
    
    command = os.path.dirname(sys.argv[0])+"/Iris.sh"
    subprocess.Popen(["/bin/bash", "-c", command])
    
    def get(cmd):
        return subprocess.check_output(cmd).decode("utf-8").strip()
    
    t = 0
    
    while t < 12:
        time.sleep(1)
        try:
            w_list = [l.split()[0] for l in get(["wmctrl", "-l"]).splitlines() if "Iris" in l]
            for w in w_list:
                check = [l for l in get(["xprop", "-id", w]).splitlines()\
                         if "WM_CLASS(STRING)" in l][0]
                if "Iris" in check:
                    subprocess.Popen(["xdotool", "windowunmap", w])
                    break
            break
        except (IndexError, subprocess.CalledProcessError):
            pass
        t += 1
    
  3. 現在運行以下命令而不是原來的命令來啟動Iris

    python3 /path/to/start_iris.py
    

設定視窗將不再出現!

解釋

  • 該腳本研究它自己的文件的目錄Iris.sh,然後啟動它。
  • WM_CLASS Iris隨後,它會監視(您的設定視窗)的新視窗的建立。
  • 如果它找到目標窗口,它取消映射帶有命令的視窗xdotool

    xdotool windowunmap <window_id>
    

筆記

  1. 顯然,按一下X設定視窗的 也會取消映射該視窗。
    顯然,這是以與 不同的方式完成的xdotool。結果是,如果不重新啟動,您將無法存取設定視窗(從指標選單)Iris

    您提到過,但是您通常不需要設定窗口根本不

  2. 請注意,當從啟動應用程式啟動 GUI 應用程式時(特別是當它涉及螢幕設定時),您可能需要稍微休息一下才能正常工作。如果它在啟動應用程式中不起作用,請將添加到 Stratup 應用程式的命令更改為:

    /bin/bash -c "sleep 10 && python3 /path/to/start_iris.py"
    

相關內容