phillipberndt / fakexrandr

Fake XRandR configurations for multi-head setups with crappy video drivers, like fakexinerama but with xrandr
270 stars 40 forks source link

Use with autorandr for dynamic automatic display configuration? #20

Closed nmschulte-aviture closed 9 years ago

nmschulte-aviture commented 9 years ago

I have a machine using an Intel HD Graphics 4600 graphics adapter. It has three display connectors; I'm using HDMI1 (miniDP->DVI), HDMI2 (HDMI->DVI), DP2 (DP -> active splitter), so I have four connected monitors.

The machine is a laptop and the preferred display configuration (layout, screen/monitor config) changes as I use it. The autorandr tool should solve this nicely (run it via keybind after I connect/disconnect things and it'll match the setup to my preferred layout).

I'm wondering if fakexrandr (and/or fakexinerama) are compatible with this setup. Can the tools be setup to change their configuration based upon detected monitors or such? Also, I'm curious how the virtual output bit works; I've no experience with virtual outputs except for the one that mysteriously appeared once in my Xrandr output.

phillipberndt commented 9 years ago

It currently is not, because it works on single outputs (identified by EDID + resolution) instead of whole configurations. This feature has been suggested before, and I'll definitely add it someday.

For now, what you could do was replace ~/.config/fakexrandr.bin from a postswitch autorandr script.

nmschulte-aviture commented 9 years ago

@phillipberndt I came to the postswitch script solution as well; I think that's a good one. I think if you wanted to add that capability here (dynamic configuration), it would be better to just add this dynamic configurability and configurable/virtual monitor boundaries straight to xrandr/X.org. I was told that new versions of X.org/X server can support this (configurable/programmable/virtual boundaries) in #xorg-devel@freenode.net via IRC, though I'm not sure how.

phillipberndt commented 9 years ago

It's a xrandr 1.5 feature, they refer to it as monitors if I remember correctly. I suppose it's going to be some time until this becomes broadly supported (programs have to switch from the old APIs explicitly) but I'm also looking forward to this..

nmschulte-aviture commented 9 years ago

Awesome, that's great. Does it replace the need for fakexrandr entirely, then? Does it include Xinerama support as well?

-- edit --

I see it's all answered in the protocol spec; thanks!

http://cgit.freedesktop.org/xorg/proto/randrproto/tree/randrproto.txt

phillipberndt commented 9 years ago

It does, and it makes xinerama obsolete as well. But this does not mean that former xinerama apps will automatically profit from the new API; they will still have to be manually updated to actually make use of it. I suspect that it will be some years until the major wm's and gui toolkits are available in all major distributions in versions that fully support it.

nmschulte-aviture commented 9 years ago

Section 1.5.1 seems to state that existing Xinerama clients (applications) can benefit without any update, as Xinerama will be updated to be driven from the new "monitors" support:

1.5.1. Relationship between Monitors and Xinerama

Xinerama's information now comes from the Monitors instead of directly from the CRTCs. The Monitor marked as Primary will be listed first.

It makes sense that applications using Xinerama won't be able to configure this ("they will still have to be manually updated to actually make use of it", it being "the new API"), but they should "benefit" from the capability none-the-less, correct?