Answers:
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
命令xdpyinfo
显示有关X服务器的各种信息。它在标准输出中写了很多东西,但是我们只需要以单词开头的行dimensions
,因此我们使用grep
。最后,我们使用sed
清理结果。
xdpyinfo
如果无法访问信息,则会显示一条错误消息,因此将错误重定向到/dev/null
。因此,您可能要添加错误重定向:xdpyinfo 2> /dev/null
。因此,全piple看起来是这样的:xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
。这将使您的脚本更加牢固。
xdpyinfo | grep dimensions
将为您提供总分辨率,如果您有多台显示器,则为所有显示器的总和。xrandr --current
将为您提供每台显示器的分辨率。
我使用此代码段查找rDesktop的最大可能分辨率,而无需进入全屏显示:
Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)
Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)
输出:
Xaxis = 1280
Yaxis = 1024
减窗户装饰(或多或少):
MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))
输出:
MaxRes = 1275x999
这是rDesktop的最大分辨率,而不需要全屏显示。
结束命令:
rdesktop -u $User -P -z -5 -g $MaxRes $Host &
到目前为止,它工作正常,但是我还没有进行全面测试。
另一个例子是使用以下内容进行屏幕录像avconv
:
avconv -f x11grab -r 15 -s `xrandr --current | grep '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4
xdpyinfo: Unable to open display "".
rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}')
。
xrandr --current | grep '*' | awk -v line="$SCREEN" 'NR==line{print $1}' | cut -d 'x' -f1
如果要指定屏幕(使用多显示器设置)(SCREEN
索引为1)
############################################# ##我在视频录制程序中使用它。 #window size --root选项-屏幕根窗口上的信息 echo $(xwininfo -root | grep'geometry'| awk'{print $ 2;}') #个输出:1024x768 + 0 + 0 #高度x宽度+ x + y位置。 ###################### ## 参考手册 ## 男子xwininfo
xwininfo -root|sed '/Height/!d;s/.* //'
高度和xwininfo -root|sed '/Width/!d;s/.* //'
宽度。
结合@ user31752和@ eliezer-e-vargas的答案产生了两种可能的替代方法
一个更简单的正则表达式:
$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900
或使用cut:
$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900
使用grep '*' | uniq
@ eliezer-e-vargas获得xrandr输出的另一行(例如“ 1440x900 59.90 * + 59.89”),而grep'connected'得到一个简单的行(例如“ LVDS1连接1440x900 + 0 + 0 .....“)。
@ user31752对regex的使用很好,因此我正在使用的行需要一个更简单的regex,或者可以用更简单的cut命令代替。
xrandr输出示例
$ xrandr --current
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
LVDS1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
1440x900 59.90*+ 59.89
1360x768 59.80 59.96
1152x864 60.00
1024x768 60.00
800x600 60.32 56.25
640x480 59.94
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
vesa标准提供了一种如何读取监视器屏幕分辨率的方法。
扩展显示标识数据(EDID):此标准定义了携带配置信息的数据格式,从而可以最佳地使用显示器。
监视器通常支持多种分辨率和刷新率。当然,有人会喜欢最大的(物理的)。
要读取此监视器数据,请尝试以下解决方案之一:
$( )
语法(即DIMENSIONS=$(xdpyinfo ...
)将上述命令的结果放入变量中。然后sed
再次使用获得两个:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')
和HEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
。