コマンドラインを介してウィンドウを中央に配置する


19

ウィンドウを開いた後に画面の中央にウィンドウを配置する方法、または画面の中央にウィンドウを開く方法はありますか?

これは、コマンドラインを使用して行う必要があります。

回答:


33

wmctrlツールは、 EWMH(拡張ウィンドウマネージャーヒント)仕様で定義されているほぼすべての機能へのコマンドラインアクセスを提供します。それがために、使用することができますし、デスクトップとWindows管理の詳細なリストを取得するには、ウィンドウマネージャについての情報を取得するには、例の切り替えサイズを変更ウィンドウにするために、デスクトップをフルスクリーンを常に、上記または粘着性、およびにアクティブ閉じる移動サイズ変更最大化最小化

あなたはそれをインストールすることができます

sudo apt-get install wmctrl

以下を使用して、仮想デスクトップ(ワークスペース)に関する情報を取得できます。 wmctrl -d

one@onezero:~$ wmctrl -d
0  * DG: 2720x1536  VP: 0,0  WA: 0,24 1360x744  N/A

開いているウィンドウをでリストしwmctrl -lます。この-Gオプションは、ウィンドウのジオメトリを表示します:

one@onezero:~$ wmctrl -l
0x02000004  0 onezero Desktop
0x02e00002  0     N/A DNDCollectionWindow
0x02e00003  0     N/A launcher
0x01e00004  0 onezero cairo-dock
0x02e00004  0     N/A panel
0x04800061  0 onezero Transmission
0x02e0000a  0     N/A Dash
0x03a00044  0 onezero arranging windows from the gnu/linux command line with wmctrl ~ Moving to Freedom - Chromium
0x04400006  0 onezero one@onezero: ~
0x04c000e9  0 onezero Google - Mozilla Firefox

wmctrl -lG

one@onezero:~$ wmctrl -lG
0x02000004  0 0    0    1360 768  onezero Desktop
0x02e00002  0 -1460 -868 1360 768      N/A DNDCollectionWindow
0x02e00003  0 0    24   58   744      N/A launcher
0x01e00004  0 290  653  780  115  onezero cairo-dock
0x02e00004  0 0    0    1360 24       N/A panel
0x04800061  0 408  95   732  500  onezero Transmission
0x02e0000a  0 -1402 -844 1302 744      N/A Dash
0x03a00044  0 0    24   1360 744  onezero Center a window via command line - Ask Ubuntu - Stack Exchange - Chromium
0x04400006  0 127  94   983  434  onezero one@onezero: ~
0x04c000e9  0 5    47   1349 715  onezero Google - Mozilla Firefox

-rの後にタイトルまたはタイトルの一部を参照することにより、ウィンドウを指定できます。-eは、移動およびサイズ変更のためのものです

wmctrl -r "Mozilla Firefox" -e <G>,<X>,<Y>,<W>,<H>

<G>: Gravity specified as a number. The numbers are defined in the EWMH specification. The value of zero is particularly
     useful, it means "use the default gravity of the window".
<X>,<Y>: Coordinates of new position of the window.
<W>,<H>: New width and height of the window.

したがって、ウィンドウを左上隅に移動し、幅1000ピクセル、高さ700にするには、0,0,0,1000,700を使用します

one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 0,0,0,1000,700

ここに画像の説明を入力してください

移動/サイズ変更するには。そのため、最初に「最大化解除」という回避策を使用し、-bオプションを使用しました

wmctrl -r "Mozilla Firefox" -b add、maximized_vert、maximized_horz

wmctrl -r "Mozilla Firefox" -b remove、maximized_vert、maximized_horz

one@onezero:~$ wmctrl -r "Mozilla Firefox" -b add,maximized_vert,maximized_horz

ここに画像の説明を入力してください

理解するために必要なもの

The -e option expects a list of comma separated integers: "gravity,X,Y,width,height"

ここに画像の説明を入力してください

thatsは私の画面解像度なのでx = 1360&y = 786

ウィンドウを画面の左半分に揃える

one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,0,0,680,768

ウィンドウを画面の右半分に揃える

one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,680,0,680,768

ウィンドウを1360/4 center of screen= 340に揃える

one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,340,0,680,768

ここに画像の説明を入力してください

画面設定の時点で操作します

さらにヘルプが必要な場合1 2 3 4


7

現在アクティブなウィンドウで動作します

IFS='x' read screenWidth screenHeight < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)

width=$(xdotool getactivewindow getwindowgeometry --shell | head -4 | tail -1 | sed 's/[^0-9]*//')
height=$(xdotool getactivewindow getwindowgeometry --shell | head -5 | tail -1 | sed 's/[^0-9]*//')

newPosX=$((screenWidth/2-width/2))
newPosY=$((screenHeight/2-height/2))

xdotool getactivewindow windowmove "$newPosX" "$newPosY"

このニーズbashzsh実行するために、平野はsh動作しません。
-wingedsubmariner

動作します。1/ 2または1/4のスクリーンタイルのウィンドウのUnityを除きます(たとえば、ウィンドウを右側にドラッグすると、画面の右半分に表示されます)。これらのウィンドウは特別なようで、xdotoolを呼び出す前に最初に「通常の」ウィンドウにするために呼び出すアクションがわからないwindowmove。アイデア?
ローナンジュシェ

このaskubuntuスレッドで私の問題の解決策を見つけました。呼び出しwmctrlも含まれ、より良いソリューションを歓迎します。TL; DR:wmctrl -ir "$(xdotool getactivewindow)" -b remove,maximized_vert,maximized_horz最終xdotool getactivewindow windowmove呼び出しの前に呼び出します。
ローナンジュシェ

4

これを行うためにコードスニペットをコピー/貼り付けする場合は、次のとおりです。

winname='foo'
IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
read wx wy ww wh < <(wmctrl -lG | grep $winname | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;')
wmctrl -r $winname -e 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh

fooもちろん、最初の行の中央に配置するウィンドウの名前に置き換えます。


説明(サンプルのコンソールセッションの形式の内訳):

画面の寸法を取得する

llama@llama:~$ xdpyinfo | grep dimensions
  dimensions:    1920x1080 pixels (508x285 millimeters)
llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*'
1920x1080
x
508x285
llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1
1920x1080
llama@llama:~$ IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1)
llama@llama:~$ echo $sw $sh
1920 1080

ウィンドウのジオメトリ情報を取得する

llama@llama:~$ wmctrl -lG | grep foo
0x00a0000c  0 1113 510  722  475  llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]*//;'
  0 1113 510  722  475  llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]*//;'
 1113 510  722  475  llama foo
llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;'
1143 505  722  475  
llama@llama:~$ read wx wy ww wh < <(wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;')
llama@llama:~$ echo $wx $wy $ww $wh
1143 505 722 475

ウィンドウを移動する

llama@llama:~$ echo 0,foo,bar,$ww,$wh
0,foo,bar,722,475
llama@llama:~$ echo 0,$(($sw/2)),bar,$ww,$wh                                    
0,960,bar,722,475
llama@llama:~$ echo 0,$(($sw/2-$ww/2)),bar,$ww,$wh
0,599,bar,722,475
llama@llama:~$ echo 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh
0,599,303,722,475

0

ほとんどのアプリケーションは、起動時に--geometryパラメーターを尊重する必要があります(-geometryを好む場合があります。最初のパラメーターが機能しない場合は、2番目のパラメーターを試してください)。

gnome-terminal --geometry 80x25+100+100

ジオメトリパラメータの形式は次のとおりです。

WIDTHxHEIGHT+XOFF+YOFF

不要な部分は除外できます。

gnome-terminal --geometry +20+50 #No size, just offsets

詳細については:

man X

次に「/」を押して、ジオメトリ仕様を検索します

またはこちらをご覧くださいhttp : //www.cotse.com/dlf/man/xwindows/geometry.htm

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.