Gnu-Screen

在考慮菜單欄和啟動器使用的空間後獲取可用的螢幕尺寸

  • October 27, 2017

我正在使用 Ubuntu 14.04。我知道如何使用 xrandr 或 xdpyinfo 獲得我的螢幕解析度。但是使用這些工具,我可以獲得最大的可用桌面大小….

我在頂部有一個菜單欄,其中包含一些可用的桌面。我在左側有一個啟動器,它佔用了一些可用的桌面。如何使用佔菜單欄和啟動器使用空間的 bash 腳本找到實際可用的桌面大小?

經過大量搜尋後,我找到了 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]*//')

解決方案

由於使用指定的問題bash,有一種簡潔的方法可以做到這一點:

IFS=', =' read -a area < <(xprop -root '_NET_WORKAREA')

用法

xy座標、寬度高度區域數組中。然後你可以像這樣使用它們:

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 shell,則可以通過命名變數xywh來解決缺少數組的問題:

xprop -root _NET_WORKAREA > /tmp/workarea$$
IFS=, read x y w h sluff < /tmp/workarea$$
x=${x#*=}
rm /tmp/workarea$$

更多資訊

要了解*_NET_WORKAREA*等 X11 屬性,請參閱 freedesktop.org 上的擴展視窗管理器提示規範。

引用自:https://unix.stackexchange.com/questions/233860