端末に次の2つのコマンドを入力した場合:
xfce4-terminal --hide-menubar --hide-borders --hide-toolbars --title=dt
wmctrl -r dt -e 0,10,10,720,720
目的の結果が得られました(タイトル付きウィンドウの位置とサイズdt
、とは異なり、手動gnome-terminal
でxfce4-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