起動時に自動起動した後、プログラムの GUI を非表示にする

起動時に自動起動した後、プログラムの GUI を非表示にする

病気にかかった後Redshift のバグ素晴らしい代替品を見つけました。虹彩。

Irisフォルダーを自分のディレクトリに配置しhome、スタートアップ アプリケーションに次のコマンドを追加しましたsh /home/arun/Iris/Iris.sh

これらはすべてうまく機能しますが、起動時に設定 GUI ウィンドウも起動します。本当に必要なのは、小さなパネル インジケーター アイコンだけです。OS X の「ログイン項目」の「非表示」機能のようなものです。

これは達成できるでしょうか?

答え1

Iris設定ウィンドウ

でIrisの設定ウィンドウを閉じるとX一見閉まっている。

しかし、wmctrl( )の助けを借りて同じことをすると、wmctrl -ic <window_id>締め切られていますが、申請は完了しています。

私の結論は、窓は実際には閉まっている、 しかし未マッピングを押すとX

の助けを借りて同じことを行うことができますxdotool。この回答の編集バージョンは次のとおりです。起動時にプログラムを最小化した状態で実行するにはどうすればよいですか?すると、Iris設定ウィンドウが表示されずに起動できるようになります。

アイリスの起動それなし設定ウィンドウ(スクリプト)

  1. スクリプトでwmctrlは と の両方を使用しますxdotool

    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 アプリケーションを起動する場合 (特に画面設定が関係する場合)、正常に動作させるために少し中断を組み込む必要がある場合があることに注意してください。スタートアップ アプリケーションから動作しない場合は、スタートアップ アプリケーションに追加するコマンドを次のように変更します。

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

関連情報