病気にかかった後Redshift のバグ素晴らしい代替品を見つけました。虹彩。
Iris
フォルダーを自分のディレクトリに配置しhome
、スタートアップ アプリケーションに次のコマンドを追加しましたsh /home/arun/Iris/Iris.sh
。
これらはすべてうまく機能しますが、起動時に設定 GUI ウィンドウも起動します。本当に必要なのは、小さなパネル インジケーター アイコンだけです。OS X の「ログイン項目」の「非表示」機能のようなものです。
これは達成できるでしょうか?
答え1
Iris設定ウィンドウ
でIrisの設定ウィンドウを閉じるとX
、一見閉まっている。
しかし、wmctrl
( )の助けを借りて同じことをすると、wmctrl -ic <window_id>
窓締め切られていますが、申請は完了しています。
私の結論は、窓は実際には閉まっている、 しかし未マッピングを押すとX
。
の助けを借りて同じことを行うことができますxdotool
。この回答の編集バージョンは次のとおりです。起動時にプログラムを最小化した状態で実行するにはどうすればよいですか?すると、Iris
設定ウィンドウが表示されずに起動できるようになります。
アイリスの起動それなし設定ウィンドウ(スクリプト)
スクリプトで
wmctrl
は と の両方を使用しますxdotool
。sudo apt-get install wmctrl xdotool
以下のスクリプトを空のファイルにコピーし、
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
ここで、元の起動コマンドの代わりに次のコマンドを実行します
Iris
。python3 /path/to/start_iris.py
設定ウィンドウは表示されなくなります。
説明
- このスクリプトは、独自のファイルのディレクトリを検索し
Iris.sh
、起動します。 WM_CLASS
Iris
その後、 (設定ウィンドウ)の新しいウィンドウの作成を監視します。目的のウィンドウが見つかった場合、マップ解除次のコマンドを含むウィンドウ
xdotool
:xdotool windowunmap <window_id>
ノート
当然ですが、
X
設定ウィンドウの をクリックしてもウィンドウのマップが解除されます。
どうやら、これは とは異なる方法で行われますxdotool
。 その結果、 を再起動しないと、(インジケーター メニューから) 設定ウィンドウにアクセスできなくなりますIris
。ただし、通常は設定ウィンドウは必要ありませんまったく。
スタートアップ アプリケーションから GUI アプリケーションを起動する場合 (特に画面設定が関係する場合)、正常に動作させるために少し中断を組み込む必要がある場合があることに注意してください。スタートアップ アプリケーションから動作しない場合は、スタートアップ アプリケーションに追加するコマンドを次のように変更します。
/bin/bash -c "sleep 10 && python3 /path/to/start_iris.py"