使っていますマウスコントロールアプリケーションを起動した後に移動して、たとえばいくつかのテキストエディタやウェブブラウザ、PDFビューアやターミナルを手動で移動しなくて済むようにしたい。次のwmctrlコマンドを発行してアプリケーションを移動している。
wmctrl -r <title> -e <x>,<y>,0,-1,-1
ここで、< x > と < y > は水平および垂直のターゲット座標であり、< title > は によって返されるアプリケーションの名前ですwmctrl -l
。以下のコマンドを使用して Google Chrome の 2 つのコピーを起動すると、
google-chrome &
google-chrome &
次にコマンドを発行する
wmctrl -l
返されるウィンドウ名は
0x03c06fd9 0 main New Tab - Google Chrome
0x03c0703d 0 main New Tab - Google Chrome
では、これらのうちの1つを任意の座標、例えば100,100に移動させようとすると、次のコマンドを実行します。
wmctrl -r "Google Chrome" -e 100,100,0,-1,-1
まだお気づきでないかもしれませんが、他の 2 つのウィンドウより前に開いたこの Google Chrome ウィンドウが、現在入力中のこのウィンドウを移動します。
コマンドラインから起動するときにこれらのウィンドウタイトルを割り当てる方法、または後でリセットする方法はありますか。名前を次のように変更する必要があります。
Google Chrome 1
Google Chrome 2
Google Chrome 3
この問題を回避する方法は私が知っている限り 2 つありますが、OS がバックグラウンドでプログラムを起動した場合に問題が発生する可能性があるため、どちらも好みではありません。
- タイトルを使用する代わりに、コマンド経由で数値のウィンドウ ID を使用します
-i
。 - 文字列を使用し
:ACTIVE:
てアクティブウィンドウを使用する
答え1
xttitle
パッケージのプログラムを使用しますxttitle
。x の 2 つの「t」に注意してください。ttタイトル。実は、「t」は 3 つあります... でも、最初の 2 つを間違って入力しただけで困ったことがあります。
~/.bashrc
以下は、組み込みをオーバーライドしcd
、 を使用してxttitle
現在のディレクトリをウィンドウ タイトルに配置する私の の例です。
# from the "xttitle(1)" man page - put info in window title
update_title()
{
[[ $TERM = xterm ]] || [[ $TERM = xterm-color ]] && xttitle "[$$] ${USER}@${HOSTNAME}:$PWD"
}
cd()
{
[[ -z "$*" ]] && builtin cd $HOME
[[ -n "$*" ]] && builtin cd "$*"
update_title
}