0

EDIT: After asking on the Linux IRC channel on FreeNode,I found out that X11 doesn't support per-monitor scaling. My 4k embedded display is at 200% scaling, and my external 1080p monitor was also at 200% scaling. It was suggested that I switch to GNOME as GNOME on Wayland supports per monitor scaling. Unfortunately, it seems like my system is still defaulting to X11 when I choose GNOME at login. Apparently there should be two GNOME options, one "default" GNOME, and another for "GNOME on Xorg". I do NOT see that, I just have the "default" option.

The vast, vast majority of search results I've seen are for people trying to disable Wayland and go to Xorg. I have the Wayland packages that were installed when I installed the GNOME group: dnf group install "GNOME Desktop Environment"

QUESTIONS:

  1. How do I make Wayland the default windowing system?

ORIGINAL POST BELOW

I run Fedora 30 on my laptop with a Nvidia GTX 1050 Mobile dGPU. I've got an Intel i7-7700HQ CPU with an iGPU. I use Cinnamon DE.

I recently got Nvidia drivers installed and working and I'm able to have a second monitor work via my HDMI port, unfortunately, this monitor is being displayed at something like 980x540, whereas the monitor is 1920x1080.

xrandr -q output shows that the external monitor is supposedly displaying at 1920x1080:

Screen 0: minimum 8 x 8, current 5760 x 2160, maximum 32767 x 32767
HDMI-0 connected 1920x1080+3840+0 (normal left inverted right x axis y axis) 476mm x 268mm
  1920x1080     60.00*+
  <other resolutions and refresh rates>
eDP-1-1 connected primary 3840x2160+0+0(normal left inverted right x axis y axis) 345mm x 194mm
   3840x2160     60.02*+  60.00    60.01   59.98    40.05    59.97
  <other resolutions and refresh rates>

I've tried creating my own xorg.conf files, using Xorg -configure, using nvidia-xconfig, the nvidia-settings GUI, and the built-in display management GUI. I've read several posts here, Ubuntu guides, Arch guides, and Debian guides on this. At most I can get the external monitor to display correctly when the laptop lid is closed, or with the nvidia-xconfig-produced xorg.conf, but when that happens, the embedded monitor doesn't appear in xrandr -q output at all. Xorg -configure produces a xorg.conf file, but complains that Number of created screens does not match number of detected devices. Configuration failed.

I have serveral attempt xorg.conf files both generated and ones I wrote or composed with bits of generated files and my attempts. I'm not sure how to display all of them here without making a giant wall of text...

Questions:

  1. How do I make my external monitor display at the correct resolution and refresh rate - 1920x1080 60Hz
  2. I've heard in conversation with friends that Xorg is basically trash in implementation, but beautiful in concept. One friend in particular talked about it being possible for other clients to the X server being able to "see" the displays for other clients, basically data being able to leak through. Is this true; the data leak and the bit about it being a trash implementation of the X standard?
  3. Is there are a different windowing manager that I can/should use that is easier to work with or "better" than X? I don't know how to define better as I'm new to dealing with X. Or is there a "better" implementation of the X standard that I can use.
  • xrandr. Your friend is wrong, answer is Yes. X is the name of protocol, it's not a "windowing manager". – 炸鱼薯条德里克 Aug 4 '19 at 22:07
  • 1
    @炸鱼薯条德里克 As mentioned in the post, xrandr is incorrectly showing that the monitor attached via the HDMI port is displaying at the correct resolution. How can I use xrandr to fix what it doesn't think is broken? – Ungeheuer Aug 5 '19 at 17:11
0

X11 does not support per-monitor scaling. This means that whatever scaling is set is applied to the output from the GPU to each monitor. According to the folks on ##linux IRC on freenode, Wayland + EGLStreams + Nvidia is a mess. I'm not sure if this is the reality.

The fix to get appropriately scaled output to an my external, non-HiDPI monitor is the following:

xrandr --output eDP-1-1 --auto --output HDMI-0 --auto --scale 2x2 --right-of eDP-1-1

The important bit is the --scale for the HDMI output. It appears this shrinks the output from the GPU destined for the HDMI output before it gets there. The manpage specifically says:

--scale XxY
Changes the dimensions of the output picture. Values superior to 1 will lead to a compressed screen (screen dimension bigger than the dimension of the output mode), and values below 1 leads to a zoom in on the output.

So it appears some notion of per-monitor scaling is present. When you set you scale to 200% to accommodate your HiDPI output, everything will look correctly scaled. I'm not certain, but this may lead to colors looking awful on the external monitor, or it might be that my monitor needs some calibration for Linux, because it's fine with Windows.

There are other ways to do this that I'm experimenting with, but this is the quickest. I'm pretty sure I found it on Arch forum post or wiki, but I don't have the link anymore.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.