Gnu-Screen
在考慮菜單欄和啟動器使用的空間後獲取可用的螢幕尺寸
我正在使用 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')
用法
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 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$$
更多資訊
要了解*_NET_WORKAREA*等 X11 屬性,請參閱 freedesktop.org 上的擴展視窗管理器提示規範。