Answers:
wmctrl -lG
会给你类似的东西:
oli@bert:~$ wmctrl -lG
0x0384c0d5 -1 1590 1030 330 170 bert N/A
0x01200023 -1 0 0 3840 1200 bert x-nautilus-desktop
0x01000003 -1 3840 2352 1920 24 bert Bottom Expanded Edge Panel
0x01000028 -1 0 2352 1920 24 bert Bottom Expanded Edge Panel
0x0500003e 0 676 252 1404 1015 bert Chromium
0x02e00021 0 3860 160 1361 1084 bert Liferea
0x02000047 0 6650 940 506 683 bert Social broadcast messages
0x04600004 0 4546 460 1263 833 bert oli@bert: ~
有了这个你可以grep
和cut
打击这些,所以你留下了几何值(列3-6)。
要引用手册页,以便您确切了解各列是什么:
-l
列出由窗口管理器管理的窗口。每个窗口输出一行,该行分成多个空格分隔的列。第一列始终包含以十六进制整数表示的窗口标识,第二列始终包含桌面编号(使用-1表示粘性窗口)。如果指定了-p选项,则下一列将以十进制整数形式包含窗口的PID。如果指定了-G选项,则将跟随四个整数列:x-偏移,y-偏移,宽度和高度。下一列始终包含客户端计算机名称。该行的其余部分包含窗口标题(标题中可能有多个空格)。
我相信wmctrl并没有对找到任何选项活跃直接窗口ID。
如果有人知道该怎么做,我很想知道..
也就是说,这里有一些脚本可以打印出活动窗口的大小。
这是:wmctrl + xdotool ...(不使用sed)。
id=$(xdotool getactivewindow)
wmctrl -lpG | while read -a a; do w=${a[0]}; if (($((16#${w:2}))==id)) ; then echo -n "${a[5]} ${a[6]}"; break; fi; done
这是:xwininfo + xdotool + sed
xwininfo
是其一部分 x11-utils
set $(xwininfo -id $(xdotool getactivewindow) \
|sed -n -e "s/^ \+Width: \([0-9]\+\).*/\1/p" \
-e "s/^ \+Height: \([0-9]\+\).*/\1/p")
echo -n "$1 $2"
使用xprop
或xwininfo
。两者均为默认设置,无需安装
这两个命令都将光标变成正方形/十字形,以允许选择特定的窗口。
$ xprop _NET_WM_OPAQUE_REGION
_NET_WM_OPAQUE_REGION(CARDINAL) = 0, 0, 984, 377
$ xwininfo | awk -F ':' '/Width/ || /Height/{print $2}'
984
377
或者,可以以XID格式在命令行上指定窗口
$ xprop _NET_WM_OPAQUE_REGION -id 83886090
_NET_WM_OPAQUE_REGION(CARDINAL) = 0, 0, 984, 377
$ xwininfo -id 83886090 | awk -F ':' '/Width/ || /Height/{print $2}'
984
377
特别是,,xwininfo
已经被我积极地用于股票交易,例如以下AskUbuntu问题:
Shell脚本不了解Windows,也不关心Windows。它们充其量只能在终端中运行(可能会或可能不会在窗口中显示)。如果要以字符为单位获取终端的宽度和高度,请使用stty实用程序。