libtmuxを使用し、libtmuxはセッション、ウィンドウおよびペインを制御するためにTmuxを呼び出すためにsubprocess.Popen()を使用します。ペインのタイトルを設定するには、Tmuxはエスケープシーケンスを送信する必要があります。このコマンドはsubprocess.Popen(によって発行された場合os.system()とsubprocess.Popen()はPythonのエスケープシーケンスを終了します
tmux send-keys -t 0 " printf '\033]2;%s\033\\' 'Pane Title'" C-m
)またはos.system() - あまりにも他のものとすることができ、私はこれらの2をテストしてみた - エスケープsquenceはありません:これは予想通り、コマンドラインで動作しますそれをシェルにしないでください。私は、ファイルに送信されたコマンドをloggし、ログファイル内の値が正しく表示されますが、送信された場合にのみ、これは生き残る:
printf '2;%s' 'Pane Title'
私は、このコマンドを実行することで、これをテストしてみた:
echo "printf '\033]2;%s\033\\' 'Pane Title'" > /tmp/setname
コンテンツ/ tmp/setnameは上記のものです。
最後に使用Methodeのはtmux_cmdであり、私はこのようなsend_keysを経由して、それを呼び出す:
p.send_keys("printf '\033]2;%s\033\\' '" + names[i] + "'")
"p" はペインのオブジェクトです。私の投稿hereを参照してください。
私の質問は、Pythonでエスケープシーケンスを使用してシェルコマンドを発行する方法ですか?
あなたは私達にあなたのpythonコードを表示することができますか? –
あなたはエスケープシーケンスに誤字があります: '[' 'の代わりに'] '。 FWIW、私は 'os.system'または' subprocess'のどちらかを使ってKDE konsole端末にエスケープシーケンスを送ることに問題はありません。ここに私のテストコードがあります。 'import os、subprocess'' cmd = 'echo "これは\ 033 [32mcoloured \ 033 [0mテキスト"'; os.system(cmd); subprocess.call(cmd、shell = True) 'です。 Python 2.6と3.6でテストされています。 –
@ PM2Ring OPが生の接頭辞を使用しているかどうかを確認するコードを見たいと思っていました(その場合は使用しません) –