w_resize - move/resize x11 app window
w_resize [
-hHV]
w_resize [
-w lv]
w_resize -R [
wid]
w_resize [
-mr val] [
wid]
([
wid] ==
0x1234|
-a|
none(==
mouse
select) )
~$ w_resize -a #>> output cmd for make window state
#>> wmctrl -ir 0x1234 -e 1,70,868,1718,946
~$ w_resize -m 10,100,3 0x1234 # move to x10,y100,pinpos=3
~$ w_resize -r 100,200,1 0x1234 # resize to w100,h200,pinpos=1
~$ w_resize -R 0x1234 # reset resize
- -hHV
- usage, version
- -w lv
- wmctrl/w_resize fails if CPU is too fast. add wait 0(dfl)-9
~$ w_resize -w 2 -m +10,y,1
- -a
- use active window instead of wid
- -m val
- move. val is x,y,p == 100,200,1 / p1,x100,y200 etc.
~$ w_resize -m 100,y,1 #>> no change y val
~$ w_resize -m x100a%-10,p9,y #>> scrwidth-10pix
- -r val
- resize. val is w,h,p == 10,20,5 / w10,h20,p5 etc
~$ w_resize -r w,200,1 #>> no change width
~$ w_resize -r h200,p1,ww
- -R
- reset resize
window resize/move helper. some app wmctrl/xdotool has the same function, but
cause gap by window flame. this pg adjusts the gap. select window if wid isnt.
-m/-r takes comma separated 3 values. basic seq is x,y,p / w,h,p.
if pfix 1 char 'x/y/m/h/p' is set, seq is ignored. y10,p3,x100 / p1,h10,w20 etc.
the last 'p' is resize/move pinning pos p=0-9. p0 is autopos. p0==p2 if -m opt.
p0==p1/3/7/9 if -r opt.
p1 *----*p2---* p3
| | (app window)
p4 * *p5 * p6
| |
p7 *----*p8---* p9
'xywh' takes coordinate values. each value takes 'num-like' token holds some
chars '%+-xywhab'.
(case p1)
+-----------------------+
| | 100y% | screen
| 100x% | | (workarea: taskbar is removed)
| -------- +---+ |
| |win| 100h% |
| +---+ | 100b%
| 100w% |
+-----------------------+
100a%
- 'x/y/w/h/a/b' == '100x%/100y%/100w%/100h%/100a%/100b%'
- '100%': treat as 100a/b/w/h%, depends on opt -m/r.
value examples are the below:
value token ERE: /[xymhp]?([-+]?[0-9]*[abxymh]?[%]?)+/
w_resize -m 100,200,3 #>> absolute, x=100,y=200. basic-syntax
w_resize -m p3,x100,y200 #>> sequence free if prefix is
w_resize -m x100,y200,p3
w_resize -m 0,0,1 #>> fit upper-left
w_resize -m a,0,p3 #>> fit upeer-right
w_resize -m 50a%,b,8 #>> fit bottom-center
w_resize -m xa,yb,p9 #>> fit bottom-right
w_resize -m p1 #>> special value p0-9/0-9 for -m opt
w_resize -m 9 #>> fit bottom-right
w_resize -m x100%,yy,p3 #>> fit p3 to screen right. keep y
w_resize -m 100%,y,3
w_resize -m x100a%,y,p3
w_resize -m yy,p3,x100a%
w_resize -m x100%-w,yy,p1 #>> same. calc with '-w', p1 <-> p3
w_resize -m +10,-0,p1 #>> relative: start with '-+'. now+10 pix
w_resize -m +10,yy,p1
w_resize -m y,p1,x+10
w_resize -m y100y%,p1,xx+10
w_resize -m x,y,p1 #>> no move
w_resize -m +0,-0,p1
w_resize -m +0,yy,p1
w_resize -m x+0,+0,p1
w_resize -m x+0,y+0,p1
w_resize -m +0%,y,p1
w_resize -m x+0%,y,p1
w_resize -m x+0x%,y,p1
w_resize -m p1,y,x+0%
w_resize -m x+20h%-10x%,yy+10w%,p1 #>> valid
w_resize -r 200w%+10,-0,1 #>> resize to width 200%+10 pix
w_resize -r w+w+10,h,1
w_resize -r w+100%+10,hh,p1
w_resize -r p1,w200w%+10,h-0
suc/fail == 0/not0
'wmctrl' fails to set resize. retry the same command to fix pos/size.
wmctrl, xprop, xwininfo
posix-shell
Copyright (C) 2018 Momi-g, AGPLv3+
2022-12-21 v2.0.3 (2018-XX-XX v1.0.0)
wmctrl(1), xprop(1), xwininfo(1)
https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html#idm140200472552416
http://xjman.dsl.gr.jp/X11R6/X11/CH14.html
https://www.x.org/releases/X11R7.7/doc/libX11/libX11/libX11.html#Setting_and_Reading_the_WM_NORMAL_HINTS_Property