如何使用 wmctrl 将活动窗口的大小调整为 50%?

rub*_*o77 9 keyboard-shortcuts window-management wmctrl

我想将窗口大小调整到屏幕的左半部分。

实现这一目标的解决方案是使用wmctrl并将正确的命令键绑定到键盘快捷键。

但是联机帮助页只显示了如何调整到一定的高度和宽度,例如:

wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -e 0,0,0,800,1040
Run Code Online (Sandbox Code Playgroud)

将窗口移动到左上角并调整为 800x1040 像素。

但奇怪的是只有第一次。如果您在移动再次,执行相同的命令将非常屏幕的右上角,忽略顶部的工具栏。

另外,让该命令具有高度 100% 和宽度 50% 而不是绝对值也会很好。

rub*_*o77 8

我在这里得到了答案。

这将是将其最大化到屏幕右半部分的脚本:

#!/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
Run Code Online (Sandbox Code Playgroud)

要向左移动,只需将 X-Line 更改为X=0。(如果你使用 Ubuntu Unity,你也需要调整 RIGHTMARGIN 我使用RIGHTMARGIN=102

定义右边距这解决了错误,第二次调用它时,它移动到屏幕的最顶部,忽略顶部工具栏。