I used to chuckle smugly whenever Liam wrote an article about yet another game that launches on the wrong monitor. That was never an issue for me on my single monitor set up, so continual woe for him was continual wry humour for me.
But in April this year, I did my first PC upgrade in over five years. It was a big upgrade, featuring both an epic graphics card and a shiny new Acer Predator monitor. But now I had a dilema... what do I do with the old 22" monitor I was using beforehand? You guessed it, I connected it up and placed it off to one side, the better to keep Chrome and Steam in view while gaming.
And of course, I immediately joined the "Wrong Monitor" crowd. If I'd known how frustrating this was, I'd have kept that smug grin off my face earlier. Clearly, karma likes to hit schadenfreude when it's down and Liam can consider this article my written and profuse apology.
It was pure torment. The order I connected them in was irrelevant. Display settings was irrelevant. Various xrandr endevours ended in frustration. In fact, the only thing I found that would make a difference was a tick box in Nvida Settings called "Make this the primary display for the X screen":
But while that largely worked, it didn't stick between reboots, even when you hit "Save to X configuration File". It saved, but the tick always reverted to the wrong monitor regardless. Infuriating!
But that led, eventually, after far too much googling, to a potential solution. It's courtesy of this Ask Ubuntu answer, which I'll summarise here too. It's really straightforward. In fact, if you already know the device names of your monitors, you can skip straight to the final step!
1. First, install the arandr tool, which is a little GUI app to show monitor device names:
sudo apt-get install arandr
2. Then run it:
arandr
...and note the name of the monitor you wish to be primary. For me that was DP-5.
3. Finally, run xrandr to make that monitor the primary display:
xrandr --output DP-5 --primary
As noted in the original article, you can easily put that exact command into your Startup Applications directly to run this every time you log in to your PC.
For me, problem solved. If this works for you, be sure to upvote Etron's answer on Ask Ubuntu!
However, some have reported that this is only half the battle! There is one more step you might want to try. Having run all of the above, you might also need to:
- Browse to ~/.config/ and take a copy of your original monitors.xml file (just in case!)
- Delete the original - the next step will recreate it anyway.
- Open your system's control panel and choose displays (or in Ubuntu's case, run unity-control-centre display), then hit "apply" to create a new monitors.xml.
You can open this file in a text editor (such as gedit, geany or nano) and just make sure that only one of the entries has a "yes" against its "primary" field.
Also, GOL editor BTRE has a novel approach to this problem, using a custom xorg.conf. I've included his personal xorg.conf in a spoiler below. Note that his xorg.conf is for his mesa set up and doesn't actually include any options regarding primary monitor. For example, he has a TV set up in there which is disabled by default, but ready to be used if he activates it manually. So if you go down this road, make sure to add
Option "Primary" "true"
...to one of your "Monitor" sections!
But if all else fails, or if you don't like the idea of running xrandr in a startup script on every login, maybe this will work for you.
Section "Monitor"
Identifier "DisplayPort-0"
Option "Primary" "true"
Option "DPMS" "false"
EndSection
Section "Monitor"
Identifier "DisplayPort-1"
Option "RightOf" "DisplayPort-0"
Option "DPMS" "false"
EndSection
Section "Monitor"
Identifier "TV"
# Option "Ignore" "true"
Option "Disable" "true"
Option "RightOf" "DVI-D-0"
Option "DPMS" "false"
EndSection
BTRE's note: The above is in /etc/X11/xorg.conf.d/10-monitor.conf The important bits are "Primary" and the positioning "RightOf", the rest is just stuff that may not apply to you (I prefer not to use DPMS and have a TV hooked up on HDMI I'd rather not get used until needed). This is just stuff you can find out more about in the Arch wiki.
If you have an alternative and/or bulletproof method, please (please!) share it in the comments. But so far, for me, the xrandr procedure I outline here has worked a treat.
Quoting: scaineUnity games in particular seem to offset the mouse slightly...If this happens consistently, please file a bug report. :)
Quoting: ripperThere is no bulletproof method, since you're setting only the default. Any app can still ignore it and implement its own logic. This might be better with Wayland.
Yeah, that's a really good point. What's odd though is that Liam is having trouble with DOTA2, but it works okay for me. Similarly, MayeulC noted above that there are issues with Payday2, but again, I'm alright. It's just so inconsistent. Maybe you're right about Wayland, but that still feels years away (for Nvidia people at least).
Quoting: scaineGotcha. Honestly, I'd have given KDE a shot if I'd known that. But I'm glad this fixes it for me, since I do prefer gnome to KDE. Although, my last KDE trip was back in the early KDE4 days so that's probably not a fair comparison.
I haven't used GNOME since like 3.22 or something, but last time I tried, KDE had way~ better multiscreen support.
Here's the older versions of the scripts. Haven't finalized the newer version. I gave up on GDM presession and am now writing the script for /etc/X11/xinit/xinitrc.d/ as it works from there. Note the set -- command is flawed, but you get the idea.
https://github.com/drlamb/caen-gdmscripts/blob/master/Default-presession
EDIT: Just in case anyone is interested, I have done a little housekeeping and uploaded my xorg.conf:
http://icculus.org/~hamish/configs/xorg.conf
Last edited by Hamish on 20 September 2017 at 3:52 pm UTC
For streaming games to a steam-link, can I somehow configure it to just mirror one specific monitor? I currently use an arandr script to switch to single-monitor, but don't really like this approach.
Quoting: tmtvlWell, you're assuming the application doesn't capture the mouse and doesn't behave weirdly when moved between monitors.Well, I'm assuming Alt+Tab is a thing (are there desktops where it's not?), but point taken about potential weird behavior when moving between windows.
I also occasionally dabble a bit in Python, I do Internet Security for a living and finally, I'm a big fan of Neil Degrasse Tyson. And not just because he has a cool first name.
See more from me