web-dev-qa-db-ja.com

wmctrlでアクティブウィンドウのサイズを50%に変更するにはどうすればよいですか?

ウィンドウのサイズを画面の左半分に合わせたいのですが。

これを実現するための解決策は、 wmctrl を使用し、適切なコマンドをキーボードショートカットにキーバインドすることです。

ただし、 manpage は、特定の高さと幅にサイズ変更する方法のみを示しています。次に例を示します。

wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -e 0,0,0,800,1040

これにより、ウィンドウが左上隅に移動し、800x1040ピクセルにサイズ変更されます。

しかし奇妙なことに初めてだけです。同じコマンドをもう一度実行すると、画面の右上にあるvery右上に移動し、上部のツールバーは無視されます。

また、絶対値の代わりに高さ100%、幅50%のコマンドを使用すると便利です。

7
rubo77

私は答えを得ました ここ

これは、画面の右半分まで最大化するスクリプトです。

#!/bin/bash
# resizes the window to full height and 50% width and moves into upper right corner

#define the height in px of the top system-bar:
TOPMARGIN=27

#sum in px of all horizontal borders:
RIGHTMARGIN=10

# get width of screen and height of screen
SCREEN_WIDTH=$(xwininfo -root | awk '$1=="Width:" {print $2}')
SCREEN_HEIGHT=$(xwininfo -root | awk '$1=="Height:" {print $2}')

# new width and height
W=$(( $SCREEN_WIDTH / 2 - $RIGHTMARGIN ))
H=$(( $SCREEN_HEIGHT - 2 * $TOPMARGIN ))

# X, change to move left or right:

# moving to the right half of the screen:
X=$(( $SCREEN_WIDTH / 2 ))
# moving to the left:
#X=0; 

Y=$TOPMARGIN

wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -e 0,$X,$Y,$W,$H

左に移動するには、X-LineをX=0に変更します。 (Ubuntu Unityを使用している場合は、RIGHTMARGINも適応する必要があります。私はRIGHTMARGIN=102を使用します)

これでバグを解決し、2回目に呼び出したときに上部ツールバーを無視して画面の最上部に移動するという、右マージンを定義します。

6
rubo77

xrandr を使用して画面の解像度を取得(または設定)してから、 wmctrl を使用してウィンドウのサイズを変更できます。

1