Re:The Peculiarly Quiet Decline and Fall of the KVM
by uniformlyrandom on Thursday November 30, 2017 @10:15AM
(#15816336)
This comment deserves a github gist, and a separate top-level post.
Re:The Peculiarly Quiet Decline and Fall of the KVM
by upofadown on Thursday November 30, 2017 @08:27AM
(#15815511)
>At this point, i3 (my windowmanager) decides to move every single window onto the new offscreen surface area, and I go blind.
Xmonad can't do stuff like this because it treats each monitor as a separate virtual screen.
If I wanted a bigger monitor I would of just bought a bigger monitor, dammit …
1. Fake GPU software, which I haven't researched at all but probably exists
2. Forcing your graphics chipset to turn a specific head on and leave it on
Here's a Linux-specific example of how to do #2. Since I'm just talking to graphics hardware here, there should be equivalent operations for all of the following for other operating systems.
I don't connect an external display at any point.
First of all, how things look to begin with:
Now, `xrandr --output VGA-0 --auto` isn't going to do anything because --auto will tell the GPU to pick the best resolution. No screen is attached so there's no list of resolutions to pick from.So, I'll generate a generic CVT modeline that sets up the VGA output for 1024x768@60Hz.
Cool. Now I'll tell X11 about the modeline (note the copy-paste): ...And now do the XRandR dance to actually tell the output about the right modeline (this is Xorg-bureaucracy-specific): Let's review the xrandr output: At this point I can go ahead and and my screen displays garbage for a fraction of a second and then figures itself out.At this point I know the output is enabled (and the glitch didn't mean nothing) and in mirroring mode. I can prove this without a display attached by running xrandr again:
Two things: one, the mode has an asterisk next to it, meaning it's active (albeit without a screen attached), and two (the following will make sense in a minute if it doesn't straight away) Screen 0 has a "current" size of 1024x768. (Xorg "screens" represent a collection of video outputs you can move windows between.)So, let's disable mirroring mode and make this new Schrödinger-pseudo-existent area its own independent surface.
At this point, i3 (my windowmanager) decides to move every single window onto the new offscreen surface area, and I go blind. Isn't minimalist software wonderful? (A new windowmanager is on my todo list; i3 drives me nuts. Anyway.)Once I sort i3 out and get back to a terminal, xrandr shows something new and interesting:
Oh hey, the Screen size is now 2048x768! Proof that I have two 1024x... outputs configured side-by-side. If I wanted to I could do --above or --below and have a 1024x1536 display.Here's the technical moral of the story: since approximately the time of the dinosaurs monitors have used EDID to provide autodetection info to graphics chipsets, so forcing manual configuration is pretty deeply buried.
But that's what you need to do; "my screen is weird and needs a custom configuration" and "okay just set these parameters and leave the output head running" are analogous.
If you want to turn your screen off and have the GPU keep the head running, I recommend figuring out how to fish out the modeline your GPU is currently using, and then force the GPU to manually use that modeline. That should disable output autodetection and keep the output permanently active.
Despite the fact that I've demoed Linux output configuration here, you're (ironically) not too likely to have this problem on Linux as Xorg is fairly flexible, and wouldn't normally need these kinds of instructions provided to it under normal circumstances; for Linux it would be more "what's explicitly killing the output and how do I turn it off" as opposed to digging around in driver settings.
Also - I picked VGA for this example, honestly probably for nostalgic reasons. These instructions will work equivalently regardless of output type.