mierdatutis mi posted on Tue, 27 Apr 2010 16:32:25 +0200 as excerpted: > Well, my "problem" is that I have two monitors in clone mode. I have the > tv signal and the lc monitor connected to my ATI graphic card, because > with this way, I change my tv channel I can see the pc to can use XBMC. > The problem is that I have a resolution of 1440x900 60hz in my monitor > lcd (native resolution of my monitor LCD), and when I see in the tv is > too small and I cant see very well the letters. My main idea was that in > a virtual desktop have a 1440x900 resolution and in other virtual > desktop 1024x780 but now I know that is impossible. Do you help me to > can change the resolution from a bash script? > > Many thanks and sorry for my english! Your English is actually better than many native speakers speak (write) it! That's one reason I didn't spot what Tassilo Horn (referred to below as TH) has now mentioned, that your use of the term "virtual desktops" wasn't quite what I was thinking. The other was the lack of any real details of what you were trying to do. TH mentions the problem with differing resolutions in clone mode, that the lower resolution one then shows only a part of what the larger one shows, but xrandr is flexible enough to work around it using panning, if you wish. Of course, panning has its own issues, the biggest one being that it takes some getting used to, and it makes many folks a bit dizzy and disoriented until they do. Some folks never adapt, but used in a limited fashion, I find it useful, tho I'd not like to use it all the time as my main work mode. TH has reasonably basic script that looks like it should work fine in bash. It demonstrates the basic ideas, tho as he points out, doesn't quite do what you wish, clone mode. My script is a bit more complex, using a few more of the xrandr features, but still doesn't do exactly what you want, and I've not abstracted it to the point of general use yet, tho it should be reasonably clear what needs changing. You'll also want to refer to the xrandr manpage. Hopefully, it's installed on whatever distribution you run. You can load it with "man xrandr", run in konsole. That gives you an overview of the command and its command line options, explaining what each one does. I also have an ATI card, now a Radeon hd4650, tho I used the same script, with a couple slight changes (basically, the new card has two DVI outputs, DVI-0 and DVI-1, the old one had VGA-0 and DVI-0, so I had to change that in the script, you'll probably need similar changes, among others), on my old Radeon 9200. So the script should work well across all of them. The other detail to consider is that I'm running the xorg native xf86- video-ati driver, configured in xorg.conf to use radeon. If you're using the proprietary frglx, things may or may not work the same. You'll also want a reasonably new xorg and driver. RandR panning was only added in randr 1.3, IIRC, so for the xf86-video-ati 6.12 series (I'm running 6.13.0, now). You'll want xrandr 1.3 series and a reasonably new xorg- server as well, tho I don't know what's required there. (I'm running 1.8 but 1.7 worked, IDR whether 1.6 and 1.5 did, or not.) That's of course assuming you want panning. If you can do without panning, xrandr 1.2 and older versions of the other xorg related components may be fine, tho there was a bug in I believe the older xf86-video-ati drivers, that caused xrandr not to work as documented in terms of the --pos option, which I didn't need any more once panning worked, since I could just pan to where I wanted to be. Looking at the xrandr manpage, you might be interested in the --scale option. I've never used it here, as it wasn't what I needed, but it may well fix your problem without bothering with some of the other options that I use. Now explaining my script: My setup is two LCD monitors, same brand and model, so identical size (24 inch diagonal, 518x324 mm, according to the xorg log) and native resolution -- 1920x1200. Like TH, I create a bigger total desktop with them, not cloned. Unlike TH, I stack mine, doubling the vertical resolution for 1920x2400 total resolution at native. The script assumes a top/bottom orientation in its variable names, etc, but I've begun the process of abstracting the values into variables and from there into a config file, so it shouldn't be too difficult to change them, as necessary. As the comment in the script suggests, you'd make the changes in three places, the variable values at the top, the help text, and the case statement. You'll find the actual script copied in just below my sig. It's designed so it can be run from a konsole session for debugging purposes, thus the xrandr --verbose option. Once you get a script setup and working when invoked manually, if you wish, we can talk about invoking it with a hotkey and/or adding it to the applications menu, then. -- Duncan - List replies preferred. No HTML msgs. "Every nonfree program has a lord, a master -- and if you use the program, he is your master." Richard Stallman #!/bin/bash # xrandr helper script # command line parameter setup Size=${1:-0} # requested size factor or help trigger, default is "0" ################################################################################ ################################################################################ # Variables listed in this double-line demarked section are *.conf candidates # as they change with the graphics layout. But script isn't ready for that # yet as the case statement and help function need abstracted to variables first. # (IOW, change them too as necessary.) # total framebuffer size FBuf=1920x2400 ################################################################################ # monitor top/bottom settings #names (xrandr names) MonTopName=DVI-0 MonBotName=DVI-1 # panning # pan-area XxY, pan-offset X+Y MonTopPanArea=1920x1200 MonBotPanArea=$MonTopPanArea MonTopPanOffs=0+0 MonBotPanOffs=0+1200 # track-area XxY track-offset X+Y MonTopTrkArea=$MonTopPanArea MonBotTrkArea=$MonTopTrkArea MonTopTrkOffs=$MonTopPanOffs MonBotTrkOffs=$MonBotPanOffs # borders, left/top/right/bottom MonTopBrd=20/20/20/20 MonBotBrd=$MonTopBrd # mode (cleared here, set below) MonTopMode= MonBotMode= ################################################################################ ################################################################################ # These variables in ALLCAPS are xrandr literals and thus shouldn't need changed # all are xrandr 1.2 except panning, xrandr 1.3 FBUF=--fb MODE=--mode OPUT=--output PAN=--panning VERB=--verbose ################################################################################ helptxt() { echo echo Usage: "${0##*/} [-h|--help|<size>]" echo echo "Sets X dual-display size within a framebuffer of $FBuf." echo "Unless otherwise stated, monitor orientation is stacked, modes duplicated." echo echo "Where <size>is one of (first column)..." echo echo " size and resolut'n res notes" echo " aliases each total" echo echo "dup modes with x/y ratio 1.6 each, 0.8 total" echo " 19|1920|0 1920x1200 1920x2400 (default)" echo " 16|1680 1680x1050 1650x2100 " echo " 14|1440 1440x900 1440x1800 " echo " 12|1280 1280x800 1280x1600 " echo " 11|1120 1120x700 1120x1400 " echo " 9|960 960x600 960x1200 " echo " 8|840 840x525 840x1050 " # echo " 7|720 720x450 720x900 1/8" # echo " 6|640 640x400 640x800 1/7" # echo " 5|560 560x350 560x700 1/6" # echo " 4|480 480x300 480x600 1/6.5" # echo " 4|416 416x260 416x520 ~1/7" # echo " 3|360 360x225 360x450 1/8" # echo " 3|320 320x200 320x400 " echo "dup modes with ratio 1.33 each, 0.67 total" echo " 10x|1024x 1024x768 1024x1536 " echo " 8x|800x 800x600 800x1200 " echo " 6x|640x 640x480 640x960 " echo echo "non-dup modes res-top ratio res-bot ratio notes" echo "19-6|1920-640 1920x1200 1.6 640x480 1.33 Run old 640x480 games full bottom monitor" echo "19-9|1920-960 1920x1200 1.6 960x600 1.6 Run 320x200 games 3x, full bottom monitor" echo exit } ################################################################################ ################################################################################ # ModBotMode defaults to ModTopMode, below, other defaults set above. case $Size in # ratio x/y 1.6 each, 0.8 total 19|1920|0) MonTopMode=1920x1200;; # default 16|1680) MonTopMode=1680x1050;; 14|1440) MonTopMode=1440x900;; 12|1280) MonTopMode=1280x800;; 11|1120) MonTopMode=1120x700;; 9|960) MonTopMode=960x600;; 8|840) MonTopMode=840x525;; # 7|720) MonTopMode=720x450;; # 6|640) MonTopMode=640x400;; # 5|560) MonTopMode=560x350;; # 4|480) MonTopMode=480x300;; # ratio 1.33 each, 0.67 total 10x|1024x) MonTopMode=1024x768;; 8x|800x) MonTopMode=800x600;; 6x|640x) MonTopMode=640x480;; # special cases # top/bottom resolution not duped, DOSBOX/Master of Orion in bottom, MonBot borders zeroed 19-6|1920-640) MonTopMode=1920x1200 MonBotMode=640x480 MonBotBrd=;; 19-9|1920-960) MonTopMode=1920x1200 MonBotMode=960x600 MonBotBrd=;; # catch-all help entry *) helptxt;; esac ################################################################################ # If not specifically set above, MonBotMode defaults to MonTopMode [ $MonBotMode ] || MonBotMode=$MonTopMode # Do some pre-command var concatenation here FBuf="$FBUF $FBuf" MonTopName="$OPUT $MonTopName" MonBotName="$OPUT $MonBotName" MonTopMode="$MODE $MonTopMode" MonBotMode="$MODE $MonBotMode" MonTopPan="$PAN $MonTopPanArea+$MonTopPanOffs/$MonTopTrkArea+ $MonTopTrkOffs/$MonTopBrd" MonBotPan="$PAN $MonBotPanArea+$MonBotPanOffs/$MonBotTrkArea+ $MonBotTrkOffs/$MonBotBrd" ################################################################################ # DO IT!! set -x xrandr $VERB $FBuf $MonTopName $MonTopMode $MonTopPan \ $MonBotName $MonBotMode $MonBotPan ___________________________________________________ This message is from the kde mailing list. Account management: https://mail.kde.org/mailman/listinfo/kde. Archives: http://lists.kde.org/. More info: http://www.kde.org/faq.html.