現在のウィンドウのサイズが%ifを使用して調整されていない場合は、tmuxコマンドを実行してください。

現在のウィンドウのサイズが%ifを使用して調整されていない場合は、tmuxコマンドを実行してください。

tmuxのマニュアルページによると、%if条件付きでコマンドを実行するために使用できます。したがって、現在のウィンドウのサイズがまだ調整されていない場合は、それを使用して現在のウィンドウのサイズを変更しようとします(それ以外の場合はサイズが変更されます)。

いくつかのバリエーションを試しました。

%if '#{window_zoomed_flag}' resize-pane -Z %endif

成功しませんでした。どんなアイデアがありますか?

使用したいもののいくつかの例があるようですが、if-shell「ネイティブ」tmuxコマンドを使用して実行したいと思います。 「ネイティブ」とは、他のプロセスを生成しないという意味です。

ベストアンサー1

使用したいもののいくつかの例があるようですが、if-shell「ネイティブ」tmuxコマンドを使用して実行したいと思います。 「ネイティブ」とは、他のプロセスを生成しないという意味です。

if-shellケースは生産される場合もありません。説明を参照してください。

if-shell [-bF] [-t target-pane] shell-command command [command]

(別名if:)

command成功が返されるとshell-command最初のコマンドが実行され、そうでない場合は2番目のコマンドが実行されます。実行前に一緒に使用する場合shell-commandを含む、FORMATSセクションで指定された規則を使用して拡張しますtarget-pane-bシェルコマンドはバックグラウンドで実行されます。

-F与えられたshell-command場合、実行されないが空でなくゼロでもない(形式拡張後)、成功したと見なされます。

源泉)

表示されるすべてのコマンドcommandは、シェルを必要としないtmuxコマンドです。提供されない限り、shell-commandシェルが必要です。-Fすべてのテストを実行することはできませんが、-Fあなたの場合は簡単です。これは他のプロセスを生成しません。

tmux if-shell -F '#{window_zoomed_flag}' '' 'resize-pane -Z'

他のプロセスが作成されていないことを確認するには、if-shell -F次の手順を実行します。

  1. tmux内部で動作するため、tmuxサーバーが存在します。 2つのウィンドウを事前に作成する必要があります。
  2. tmux サーバーの PID を保存します。

    pid="$(pgrep 'tmux: server')"
    
  3. 次の場合に変数が空でないことを確認してください。

    echo "$pid"
    
  4. straceサーバーが新しいプロセスを作成するかどうかを判断するために使用されます(参照:この回答):

    strace -e fork,vfork,clone,execve -fb execve -p "$pid"
    
  5. 別のウィンドウを選択し、次を呼び出します。

    tmux if-shell -F '#{window_zoomed_flag}' '' 'resize-pane -Z'
    # now similar command to unzoom
    tmux if-shell -F '#{window_zoomed_flag}' 'resize-pane -Z'
    
  6. strace印刷された内容を観察してください。出力があってはなりません。 *これは、追加のプロセスが作成されないことを意味します。

  7. -F比較のために、以下はシェルを生成しない同じコマンドです。

    tmux if-shell '[ #{window_zoomed_flag} -eq 1 ]' '' 'resize-pane -Z'
    # now similar command to unzoom
    tmux if-shell '[ #{window_zoomed_flag} -eq 1 ]' 'resize-pane -Z'
    

    各コマンドがexecve("/bin/sh", …出力に表示されますstrace


*拡大またはサイズ変更されたウィンドウによってトリガーされるフックを使用しない限り、そのフックは別のプロセスを作成します。テストを妨げないように、フックを一時的に取り外します。

おすすめ記事