xfce4-terminalの起動後にWMCTRLが機能しない

xfce4-terminalの起動後にWMCTRLが機能しない

端末に次の2つのコマンドを入力した場合:

xfce4-terminal --hide-menubar --hide-borders --hide-toolbars --title=dt
wmctrl -r dt -e 0,10,10,720,720

目的の結果が得られました(タイトル付きウィンドウの位置とサイズdt、とは異なり、手動gnome-terminalxfce4-terminal割り当てられたタイトルは上書きされません)。

もちろん、これがうまくいくことを願っています。

#! /bin/bash
xfce4-terminal --hide-menubar --hide-borders --hide-toolbars --title=dt && wmctrl -r dt -e 0,10,10,720,720

端末はそれ自体正しい設定とタイトルを表示しますが、wmctrl何の効果もありません。

答え1

接続&&演算子は、最初のコマンド()が終了するまで2番目のコマンドが実行されないようにしますxfce4-terminal(短絡論理演算子であるため、終了ステータスが成功を示す場合のみ)。

&&スクリプトの別の行にコマンドを変更または; 入力すると、予想される動作が得られます。wmctrl

答え2

コマンドが終了したら、直接wmctrlを実行してくださいxfce4-terminal。ただし、すでに開いているXfceターミナルインスタンスがある場合は、実際のターミナルxfce4-terminal画面を設定するプロセスが進行中にそれ自体がバックグラウンドに置かれ、すぐにコマンドプロンプトに戻ります。したがって、wmctrl実行時にタイトルを含むウィンドウがrdまだ存在しない可能性があります。

(例のように)コマンドを入力する必要がない場合は、早すぎます&&wmctrl最初の例では、入力または履歴からの選択に遅延が発生した場合、端末ウィンドウに正しいタイトルが表示されます。

最初の例では、2つのコマンドライン入力を切り取って貼り付けると、この問題が発生することがあります。

sleepを呼び出す前にコマンドを入力する必要がありますwmctrl。期間を試してみてください。開始シェルが開始ファイルを処理する前にターミナルタイトルが設定されるため、1秒で十分です。 (検索する必要のあるURLを使用してFirefox / Chromeを実行している場合は、見出しのタイトルを待つまでに数秒かかることがあり、ネットワークエラーが発生したときに表示されないことがあります。)

一様な動作を得るには、xfce4-terminal最初に実行しているインスタンスでもブロックされないようにバックグラウンドで実行してください。

xfce4-terminal --hide-menubar --hide-borders --hide-toolbars --title=dt &
sleep 1
wmctrl -r dt -e 0,10,10,720,720

答え3

アントンの答え何が起こっているのか説明しました。wmctrlただし、後でウィンドウのサイズを変更または移動することは問題になります。タイマーに依存する必要があるため、ウィンドウが短時間間間違った位置にあると移動します(または、マシンが本当に遅い場合;ウィンドウがwmctrl早すぎるため、まったく動かない)。また、同じタイトルを持つ別のウィンドウがあります(任意の文字列やタイムスタンプを使用するなど、独自のタイトルを生成しない限り)。

幸い、xfce4-terminal初期位置とサイズを設定するオプションがあります。それは標準に従うX11幾何学構文。を呼び出す代わりにこれを使用してくださいwmctrl。サイズはピクセルではなく文字単位で表示されます。

xfce4-terminal --geometry 80x40+10+10 --hide-menubar --hide-borders --hide-toolbars --title=dt

関連情報