Welcome to the news archive. Here you'll find all the news items, ordered by date. You can use the links below to read other news items, or go back to the archive overview.
2008-05-24 21:33 - Selecting NVidia screens on commandline
NVidia has a nice program to manage display devices like monitors, TVs etc. I've used this often to play movies on my PC and watch them on our big wide screen LCD TV. What I wanted to do, is automate switching between monitor and TV. The final goal is that I can push a button on a remote to switch the output. Hey, I'm a software engineer, I automate things.
The easiest way to do that would be two write a shell script that can perform the switch for me. NVidia has be so kind as to provide us with software that can do that. It's nv-control-dpy, packaged in the nvidia-settings source, combined with xrandr.
Here is a step-by-step guide of how I managed to get things running.
-
Hook up your TV if you haven't done so.
-
Let X detect the TV:
nv-control-dpy --probe-dpys nv-control-dpy --build-modepool -
Tell X to include the TV in the current set of displays. You do this by getting a list of numbers from
nv-control-dpy --get-associated-dpys:Using NV-CONTROL extension 1.14 on :0 Connected Display Devices: CRT-0 (0x00000001): Acer AL1906 CRT-1 (0x00000002): SAMSUNG associated display device mask: 0x00000001Add the two (0x...) numbers together and include them in the next call:
nv-control-dpy --set-associated-dpys 0x00000003 -
Add a metamode so that X knows which device to enable/disable. The above command gave you the names and numbers of the display devices - they could be TV-0, CRT-1, DPY-4, etc. To enable the device, set it to "nvidia-auto-select". To disable a device, set it to "NULL". Here is the command that I gave to disable my Acer monitor and enable my Samsung TV:
nv-control-dpy --add-metamode \ 'CRT-0: NULL, CRT-1: nvidia-auto-select' -
The last step is to tell X to actually perform the switch. You use the
xrandrcommand for this. First, get a list of possible resolutions usingxrandr:Screen 0: minimum 320 x 240, current 1280 x 1024 default connected 1280x1024+0+0 0mm x 0mm 1280x1024 50.0* 51.0 1280x960 52.0 1280x800 53.0 1280x768 54.0 1152x864 55.0 56.0 1152x768 57.0 1024x768 58.0 59.0 60.0 832x624 61.0 800x600 62.0 63.0 64.0 65.0 800x512 66.0 720x450 67.0 700x525 68.0 69.0 640x480 70.0 71.0 72.0 576x384 73.0 512x384 74.0 75.0 400x300 76.0 320x240 77.0 78.0 1360x768 79.0 -
The last resolution in that list is the metamode we just added. To switch to it, use
xrandr -s resolution@refreshrate:xrandr -s 1360x768@79
To switch back, use the same xrandr -s resolution@refreshrate trick, in my case xrandr -s 1280x1024@50
Once you've figured out the names of the devices, the bit masks and the meta mode lines, you can of course place the commands in shell scripts and really get to automate stuff. I'll leave that as an exercise for the reader.
Comments
I found a very easy way to switch between both monitors to a single monitor, using xorg.conf and xrandr. It's described here:
http://ubuntuforums.org/showthread.php?p=6480694
Sam
by Sam Watkins - 1 year, 7 months ago.
Post a comment
All fields are required, except when otherwise noted. You can use a limited subset of Restructured Text to markup the comment.
It might take up to five minutes for your comment to show up, due to caching of the pages.
Thanks SO much! I automated my stuff in a shell script as you suggest, and it works like a dream.
For anyone who's interested, the post is here:
http://ubuntuforums.org/showthread.php?t=940932
by Nickzeff - 1 year, 9 months ago.