端末の背景色を取得するために、https://github.com/rocky/bash-term-backgroundから抽出されたいくつかのシェルコードを示します。私はそれがあまりにも値を検索することができますので、Pythonでこの動作を模倣したいと思います:xtermと互換性のあるTTYカラークエリコマンドですか?
stty -echo
# Issue command to get both foreground and
# background color
# fg bg
echo -ne '\e]10;?\a\e]11;?\a'
IFS=: read -t 0.1 -d $'\a' x fg
IFS=: read -t 0.1 -d $'\a' x bg
stty echo
# RGB values are in $fg and $bg
私はこれのほとんどを翻訳することができますが、私はとの問題を抱えている部分がecho -ne '\e]10;?\a\e]11;?\a'
です。
私は、と思うだろう:
output = subprocess.check_output("echo -ne '\033]10;?\07\033]11;?\07'", shell=True)
は、Python 2.7で、合理的な翻訳になりますが、私は任意の出力を取得しておりません。
rgb:e5e5e5/e5e5e6
rgb:000000/000000
しかし、私は何も見ていません。
更新:Mark Setchellは、問題の一部がサブプロセスで実行されている可能性があると示唆しています。だから私はPythonコードを変更するとき:
print(check_output(["echo", "-ne" "'\033]10;?\07\033]11;?07'"]))
私は今、プログラムが終了した後にだけ、RGB値の出力を見る。これは、xtermが非同期で送信していると思われる出力を見るために問題が発生していることを示しています。
第二の更新:meuhのコードに基づいて、私はあなただけrawモードにそれを設定した後、stdoutにエスケープシーケンスを作成し、標準入力に応答を読み取る必要があるhttps://github.com/rocky/python-term-background
出力を読み取るために、別の完全に別のサブプロセスを次の行で開始していますか? –
'shell = True'は、yesを示しています。このパラメータを削除すると、xtermの出力が表示されます。変数には取り込まれません。だから、私がする必要があるのは、手前でstdoutをリダイレクトしてそれを待つか、端末から直接読み込む方法を見つけ出すことです。この新しい重要な情報を含めるように質問を改訂しました。おかげさまで – rocky