我使用的是 Ubuntu 14.04。我知道如何使用 xrandr 或 xdpyinfo 获取屏幕分辨率。但通过这些工具,我获得了最大可用桌面尺寸......
我的顶部有一个菜单栏,可以使用一些可用的桌面。我的左侧有一个启动器,它占用了一些可用的桌面。如何使用 bash 脚本找到实际可用的桌面大小,该脚本说明了菜单栏和启动器所使用的空间?
答案1
解决方案
由于使用 指定了问题bash
,因此有一种简洁的方法可以做到这一点:
IFS=', =' read -a area < <(xprop -root '_NET_WORKAREA')
用法
这X和y坐标,宽度, 和高度都在区域大批。然后你可以像这样使用它们:
echo "Top left of usable space: X is ${area[1]} and Y is ${area[2]}"
echo "Width is ${area[3]} and height is ${area[4]}"
普通 Bourne 外壳
如果您仅限于普通 Bourne shell,则可以通过命名变量来解决缺少数组的问题X,y,w, 和H:
xprop -root _NET_WORKAREA > /tmp/workarea$$
IFS=, read x y w h sluff < /tmp/workarea$$
x=${x#*=}
rm /tmp/workarea$$
更多信息
要了解 X11 属性,例如_NET_工作区,请参阅扩展窗口管理器提示规范位于 freedesktop.org。
答案2
我发现获取宽度和高度的最可靠方法是:
#!/bin/bash
WINDOW_ID=$(wmctrl -a :ACTIVE: -v 2>&1 | grep -Eo "0x[0-9a-f]{8}")
wmctrl -ir $WINDOW_ID -b add,maximized_vert,maximized_horz
sleep 1
echo Width is $(wmctrl -lG | grep $WINDOW_ID | awk -v N=5 '{print $N}')
echo Height is $(wmctrl -lG | grep $WINDOW_ID | awk -v N=6 '{print $N}')
wmctrl -ir $WINDOW_ID -b remove,maximized_vert,maximized_horz
您必须小心 的值sleep
,它可能会有所不同。
答案3
经过多次搜索,我找到了 xprop 命令,它返回我正在寻找的信息。
available_screen=$(xprop -root | grep -e 'NET_WORKAREA(CARDINAL)') #get available screen dimensions
available_screen=${available_screen##*=} #strip off beginning text
current_screen_width=$(echo $available_screen | cut -d ',' -f3 | sed -e 's/^[ \t]*//')
current_screen_height=$(echo $available_screen | cut -d ',' -f4 | sed -e 's/^[ \t]*//')