I'm looking for a method of reporting display resolution. I want to set up scripts to launch rdesktop
, and I want to launch it on several machines with different resolutions, so I want a way to dynamically determine it.
-
unix.stackexchange.com/questions/2672/…– Ciro Santilli OurBigBook.comCommented Oct 29, 2015 at 9:54
5 Answers
Use the command xrandr
. Without any argument it displays the available resolutions and the current one (with an asterisk), for instance:
$ xrandr | fgrep '*'
-
Could you append some sample output to the answer? And I'm guessing
xrandr |g grep \*
does the trick? Commented Apr 26, 2013 at 19:38 -
Given the example output for xrandr [--query] at askubuntu.com/q/1246654, this command would print just the line with the asterisk (` 1920x1200 59.95*+`). Commented May 30 at 8:34
Alternative solution: xdpyinfo | grep dimensions
. xdpyinfo
is older than xrandr
, so might be more portable if you happen to use a very old distribution or some different X server.
-
3Indeed, but some (all ?) multi-monitor setups appear as one screen in
xdpyinfo
whilexrandr
correctly enumerates screens and their resolution. This may or may not be a problem depending on the context. Commented May 7, 2015 at 14:51 -
Note: while
xdpyinfo
seems to report correct dimensions in pixels, it reports wrong resolution (DPI). E.g. on my monitor with dimesions 3840x2160 (native and actual) and size 708mm x 399mm as reported byxrandr
,xdpyinfo
says that resolution is 96x96 dots per inch.– RuslanCommented Sep 3, 2018 at 14:03
You can get the horizontal and vertical resolutions using the following command:
xdpyinfo | grep dimensions | awk '{print $2}' | awk -Fx '{print $1, $2}'
or, in more compact form (as suggested by Peter.O in this comment):
xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}'
For exmaple, on a 1600x900 display this will produce the following output:
1600 900
You can then place the values into separate variables using the command:
read RES_X RES_Y <<<$(xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}')
Display the values of the above variables using the command:
echo $RES_X, $RES_Y
On a 1600x900 display, the output is:
1600, 900
-
2
-
@Peter.O, thanks. This is a nice compact form of the command. I've updated the answer. Commented Apr 13, 2015 at 21:16
-
Indeed, but some (all ?) multi-monitor setups appear as one screen in xdpyinfo while xrandr correctly enumerates screens and their resolution. This may or may not be a problem depending on the context. Commented May 7, 2015 at 14:52
I should have looked a little harder before posting. xrandr
will echo the current display settings, if not given any other arguments.
By default, this will dump all possible display settings, this can be filtered as follows:
xrandr | egrep '^[^ ]|[0-9]\*\+'
Clean xrandr
output for imagemagick use
xrandr |awk '/\*/ {print $1}'
The /\*/
searches for the line containing an asterisk *
.
-
1To search with awk directly, instead of grep:
xrandr | awk '/\*/ {print $1}'
Commented Nov 23, 2020 at 14:03