xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

classic Classic list List threaded Threaded
24 messages Options
12
Reply | Threaded
Open this post in threaded view
|

xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Tyler-2
Hi,

I am using ArchLinux with i3 on my Dell XPS 13" 9370 @ 3840x2160) HiDPI
and everything works great with:

.Xresources:

! xft fonts
!----------------------------------------------------------------------
Xft.dpi: 220
Xft.autohint: 0
Xft.lcdfilter:  lcddefault
Xft.hintstyle:  hintfull
Xft.hinting: 1
Xft.antialias: 1
Xft.rgba: rgb

! urxvt
!---------------------------------------------------------------------
URxvt*font:     xft:DejaVu Sans Mono for Powerline:size=12: \
                     minspace=False:antialias=true, \
                 xft:Segoe UI Emoji:size=12:minspace=False:antialias=true

URxvt*boldFont: xft:DejaVu Sans Mono for Powerline:size=12: \
                     minspace=False:antialias=true, \
                 xft:Segoe UI Emoji:size=12:minspace=False:antialias=true

URxvt.letterSpace: -1



and in /etc/profile.d/hidpi.sh

export GDK_SCALE=2
export GDK_DPI_SCALE=0.5
export QT_AUTO_SCREEN_SCALE_FACTOR=0
export QT_SCREEN_SCALE_FACTORS=2
export QT_QPA_PLATFORMTHEME=qt5ct



However recently I bought a Dell DA300 Mobile Adapter and decided I
wanted to use my external Dell 30" 3000WFP (2560x1600) over DisplayPort.

I found this blog article
https://blog.summercat.com/configuring-mixed-dpi-monitors-with-xrandr.html 
which explains exactly what I am trying to do. The only difference is
the placement of the external screen (mine is on the left of the laptop)
and the screen size and resolution.

In that article he uses his HiDPI on both screens and then scales down
on the external screen, which is why he doubles the resolution of the
external display. The reason he does that is so he doesn't have to touch
.Xresources or fiddle with toolkit scaling options.

Using this command I was able to get it working great with a single
external monitor ie the Dell 30" 3000WFP @ (2560x1600)

xrandr --dpi 220 --fb 5120x3200 \
     --output eDP1 --off \
     --output DP1 --scale 2x2 --panning 5120x3200

With the dual-monitor setup I'm struggling to understand the panning
option. I have looked at https://wiki.archlinux.org/index.php/xrandr and
the man file and still couldn't figure that track x track y part out.
It's not very easy to understand.

So far for the external monitor I have this:

xrandr --dpi 220 --fb 8960x5360 \
     --output eDP1 --mode 3840x2160 \
     --output DP1 --scale 2x2 --pos -2560x0 --panning 5120x3200+2560+0

What I want is to be able to access the whole area of both screens. In
his example he has a laptop at 3200x1800 and an external monitor at
1920x1080

> Dual monitors
>
> When I want to use both monitors, this is the command I run:
>
> xrandr --dpi 276 --fb 7040x3960 \
>     --output eDP-1 --mode 3200x1800 \
>     --output DP-1-2 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0
>
> Here's an explanation of the options:
>
>     Global options:
>         --dpi 276 sets the DPI to 276.
>         --fb 7040x3960 creates one screen with resolution 7040x3960. This is the combined resolution of the two monitors. The high DPI monitor has 3200x1800 resolution. The lower DPI monitor has 1920x1080 resolution, but I double it as I scale it by 2 (see below). Combine these like so: 3200+1920*2 x 1800+1080*2 = 7040x3960. Both monitors share this screen.
>     High DPI monitor options (--output eDP-1):
>         --mode 3200x1800 says to use resolution 3200x1800. This is the default, but specifying it is necessary if the monitor is disabled (as it is when using the external monitor by itself) as it enables the monitor.
>     Lower DPI monitor options (--output DP-1-2):
>         --scale 2x2 is similar to zooming out. This is necessary as we set the DPI globally to that of the high DPI monitor.
>         --pos positions it to the right of the laptop monitor.
>         --panning allows our pointer to access the whole area.

Any help or tips would be much appreciated!

--
Tyler
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Ralph Corderoy
Hi Tyler,

> With the dual-monitor setup I'm struggling to understand the panning
> option. I have looked at https://wiki.archlinux.org/index.php/xrandr
> and the man file and still couldn't figure that track x track y part
> out.  It's not very easy to understand.

Have a look at the RRSetPanning protocol request in
https://www.x.org/releases/X11R7.5/doc/randrproto/randrproto.txt and see
if that helps.

--
Cheers, Ralph.
https://plus.google.com/+RalphCorderoy
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

ProgAndy
In reply to this post by Tyler-2
Am 31.07.2018 um 05:17 schrieb Tyler:
> With the dual-monitor setup I'm struggling to understand the panning
> option. I have looked at https://wiki.archlinux.org/index.php/xrandr 
> and the man file and still couldn't figure that track x track y part
> out. It's not very easy to understand.

The panning option might be there as a workaround for a bug in xorg.
Since xorg 1.20 the patch to resolve that should be included, so you can
try your configuration without panning.
https://wiki.archlinux.org/index.php/HiDPI#Side_display
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Tyler-2
> The panning option might be there as a workaround for a bug in xorg.
> Since xorg 1.20 the patch to resolve that should be included, so you can
> try your configuration without panning.
> https://wiki.archlinux.org/index.php/HiDPI#Side_display
The closest I have been able to get was with

xrandr --output eDP1 --auto --output DP1 --auto --scale 2x2 --right-of eDP1

Now everything appears correctly except my laptop screen is on the wrong
side.

https://i.imgur.com/EEJuNij.jpg

When I tried the reverse


xrandr --output eDP1 --auto --output DP1 --auto --scale 2x2 --left-of eDP1

I didn't just get a flipped result, I got my browser showing over the
middle https://i.imgur.com/QW0IHYw.jpg

also the black space in the first screenshot is supposed to be there,
that's where there is no screen space as my laptop has a higher
resolution than my external monitor.

It should look like screenshot 1 except that workspace 1 should be on
the opposite side.

I also noticed a problem where applications opened on my laptop screen
don't have correct scaling on my external monitor which is another thing
he spoke of in that blog article.

> Second, switching back and forth between dual monitors to one monitor
lead to interesting behaviour. For example, I kept losing the scale
setting on the lower DPI monitor.
exactly that, although it didn't seem to effect GTK3 applications, only
Qt5 ones.

Thankfully things in Wayland seem a lot simpler! In Sway it's as simple
as https://github.com/swaywm/sway/wiki#display-configuration

Have to wait for firefox and thunderbird to have Wayland patches before
I switch as the fonts were all blurry.

For some reason https://aur.archlinux.org/packages/firefox-wayland/ is
really out of date.

This has been a major pain for me.

--
Tyler
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

ProgAndy
Am 01.08.2018 um 04:20 schrieb Tyler:
> When I tried the reverse
>
>
> xrandr --output eDP1 --auto --output DP1 --auto --scale 2x2 --left-of eDP1
>
> I didn't just get a flipped result, I got my browser showing over the
> middle https://i.imgur.com/QW0IHYw.jpg
>
I guess --right-of/--left-of don't take the scale into account.
Try to position your monitors absolutely with --pos, probably 0x0 for
DP1 and 5120x0 for eDP1.
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Tyler-2
In reply to this post by Tyler-2
I also tried doing

xrandr --dpi 220 --output eDP1 --auto --output DP1 --auto --scale 2x2
--right-of DP1

but it resulted in:

xrandr: loop in relative position specifications

what I am trying to achieve (produced in gimp):

https://i.imgur.com/J83Fplt.jpg


As for moving to sway, doesn't look like this problem will be solved soon :(

https://github.com/swaywm/sway/issues/1047

--
Tyler
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Tyler-2
In reply to this post by ProgAndy
> I guess --right-of/--left-of don't take the scale into account.
> Try to position your monitors absolutely with --pos, probably 0x0 for
> DP1 and 5120x0 for eDP1.

xrandr --dpi 220 --output eDP1 --pos 5120x0 --auto \
       --output DP1 --pos 0x0 --auto --scale 2x2

https://i.imgur.com/pwcGct2.jpg success!

now I guess the only thing to do is to find a solution for Qt5. Windows
on my LowDPI screen don't change scale according to what screen they are
on eg everything is really small, on the laptop screen the scaling is
what it should be.

GTK3 works fine though.

i think that is why he didn't use auto

https://blog.summercat.com/configuring-mixed-dpi-monitors-with-xrandr.html

says:

> Second, switching back and forth between dual monitors to one monitor lead to interesting behaviour. For example, I kept losing the scale setting on the lower DPI monitor.

that's not exactly what is happening to me - because GTK2/3 works fine.

Maybe there are some more Qt vars I can play with besides

export QT_AUTO_SCREEN_SCALE_FACTOR=0
#export QT_SCALE_FACTOR=2
export QT_SCREEN_SCALE_FACTORS=2
export QT_QPA_PLATFORMTHEME=qt5ct

--
Tyler
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

arch general mailing list-2
Le 01/08/2018 à 12:00, Tyler a écrit :

>> Second, switching back and forth between dual monitors to one monitor lead to interesting behaviour. For example, I kept losing the scale setting on the lower DPI monitor.
> that's not exactly what is happening to me - because GTK2/3 works fine.
>
> Maybe there are some more Qt vars I can play with besides
>
> export QT_AUTO_SCREEN_SCALE_FACTOR=0
> #export QT_SCALE_FACTOR=2
> export QT_SCREEN_SCALE_FACTORS=2

Try setting the QT_SCREEN_SCALE_FACTORS per display like this for instance:
QT_SCREEN_SCALE_FACTORS=eDP-1=2;DP-1=1;HDMI-1=1;DP-2=1;HDMI-2=1;
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Tyler-2
> Try setting the QT_SCREEN_SCALE_FACTORS per display like this for instance:
> QT_SCREEN_SCALE_FACTORS=eDP-1=2;DP-1=1;HDMI-1=1;DP-2=1;HDMI-2=1;

I didn't even know that was possible.

I tried with: QT_SCREEN_SCALE_FACTORS=eDP1=2,DP1=1 to test but I am
noticing it seems to be truncating to when I look at:

env | grep QT_SCREEN_SCALE_FACTOR
QT_SCREEN_SCALE_FACTORS=eDP1=2

Thanks for the tip though!

--
Tyler
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Bastian Beischer
Tyler,

On Wed, Aug 1, 2018 at 1:58 PM, Tyler <[hidden email]> wrote:

> > Try setting the QT_SCREEN_SCALE_FACTORS per display like this for
> instance:
> > QT_SCREEN_SCALE_FACTORS=eDP-1=2;DP-1=1;HDMI-1=1;DP-2=1;HDMI-2=1;
>
> I didn't even know that was possible.
>
> I tried with: QT_SCREEN_SCALE_FACTORS=eDP1=2,DP1=1 to test but I am
> noticing it seems to be truncating to when I look at:
>
> env | grep QT_SCREEN_SCALE_FACTOR
> QT_SCREEN_SCALE_FACTORS=eDP1=2
>
> Thanks for the tip though!
>

use semicolon ";" not comma "," to separate.

Cheers
Bastian

>
> --
> Tyler
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

arch general mailing list-2
In reply to this post by Tyler-2
Le 01/08/2018 à 13:58, Tyler a écrit :

>> Try setting the QT_SCREEN_SCALE_FACTORS per display like this for instance:
>> QT_SCREEN_SCALE_FACTORS=eDP-1=2;DP-1=1;HDMI-1=1;DP-2=1;HDMI-2=1;
> I didn't even know that was possible.
>
> I tried with: QT_SCREEN_SCALE_FACTORS=eDP1=2,DP1=1 to test but I am
> noticing it seems to be truncating to when I look at:
>
> env | grep QT_SCREEN_SCALE_FACTOR
> QT_SCREEN_SCALE_FACTORS=eDP1=2
>
> Thanks for the tip though!
The separator is a ; not a comma. ;) And it is likely {E,}DP-1, not
{E,}DP1. And you probably have to use quotes around the whole value,
like this:

QT_SCREEN_SCALE_FACTORS="eDP-1=2;DP-1=1;HDMI-1=1;DP-2=1;HDMI-2=1;"



signature.asc (499 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Tyler-2
In reply to this post by Bastian Beischer
>
> On Wed, Aug 1, 2018 at 1:58 PM, Tyler <tylera at privatedemail.net> wrote:
>
>> > Try setting the QT_SCREEN_SCALE_FACTORS per display like this for
>> instance:
>> > QT_SCREEN_SCALE_FACTORS=eDP-1=2;DP-1=1;HDMI-1=1;DP-2=1;HDMI-2=1;
>>
>> I didn't even know that was possible.
>>
>> I tried with: QT_SCREEN_SCALE_FACTORS=eDP1=2,DP1=1 to test but I am
>> noticing it seems to be truncating to when I look at:
>>
>> env | grep QT_SCREEN_SCALE_FACTOR
>> QT_SCREEN_SCALE_FACTORS=eDP1=2
>>
>> Thanks for the tip though!
>>
>
> use semicolon ";" not comma "," to separate.

oops i copy pasted the wrong example.

tya99@host:~ $ export QT_SCREEN_SCALE_FACTORS=eDP1=2;DP1=1
tya99@host:~ $ env |grep QT_SCREEN_SCALE_FACTOR
QT_SCREEN_SCALE_FACTORS=eDP1=2

seems DP1=1 lost it's setting. I have noticed when using
xf86-intel-video displays are eDP1 and DP1 and when using modesetting
they're eDP-1 and DP-1.

--
Tyler
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

arch general mailing list-2
Le 01/08/2018 à 14:11, Tyler a écrit :

>> On Wed, Aug 1, 2018 at 1:58 PM, Tyler <tylera at privatedemail.net> wrote:
>>
>>>> Try setting the QT_SCREEN_SCALE_FACTORS per display like this for
>>> instance:
>>>> QT_SCREEN_SCALE_FACTORS=eDP-1=2;DP-1=1;HDMI-1=1;DP-2=1;HDMI-2=1;
>>> I didn't even know that was possible.
>>>
>>> I tried with: QT_SCREEN_SCALE_FACTORS=eDP1=2,DP1=1 to test but I am
>>> noticing it seems to be truncating to when I look at:
>>>
>>> env | grep QT_SCREEN_SCALE_FACTOR
>>> QT_SCREEN_SCALE_FACTORS=eDP1=2
>>>
>>> Thanks for the tip though!
>>>
>> use semicolon ";" not comma "," to separate.
> oops i copy pasted the wrong example.
>
> tya99@host:~ $ export QT_SCREEN_SCALE_FACTORS=eDP1=2;DP1=1
> tya99@host:~ $ env |grep QT_SCREEN_SCALE_FACTOR
> QT_SCREEN_SCALE_FACTORS=eDP1=2
>
> seems DP1=1 lost it's setting.

Try quoting then. ;)

> I have noticed when using
> xf86-intel-video displays are eDP1 and DP1 and when using modesetting
> they're eDP-1 and DP-1.

Ah that might be correct.
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Tyler-2
In reply to this post by arch general mailing list-2
> The separator is a ; not a comma. ;) And it is likely {E,}DP-1, not
> {E,}DP1. And you probably have to use quotes around the whole value,
> like this:
>
> QT_SCREEN_SCALE_FACTORS="eDP-1=2;DP-1=1;HDMI-1=1;DP-2=1;HDMI-2=1;"

Hmm sadly, it doesn't seem to help.

$ env |grep QT
QT_SCREEN_SCALE_FACTORS=eDP1=2;DP1=1;HDMI1=1;DP2=1;HDMI2=1;
QT_QPA_PLATFORMTHEME=qt5ct
QT_AUTO_SCREEN_SCALE_FACTOR=0

I rebooted and set:

xrandr --output eDP1 --pos 5120x0 --auto \
       --output DP1 --pos 0x0 --auto --scale 2x2

and applications Qt apps like wireshark and virtualbox are still
rendering with 2x scaling on both screens. (which looks normal on the
hidpi one, and small on the lowdpi one).

--
Tyler
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Ralph Corderoy
In reply to this post by Tyler-2
Hi Tyler,

> $ export QT_SCREEN_SCALE_FACTORS=eDP1=2;DP1=1
> $ env |grep QT_SCREEN_SCALE_FACTOR
> QT_SCREEN_SCALE_FACTORS=eDP1=2
>
> seems DP1=1 lost it's setting.

Others have pointed out the flaw, but to investigate next time,
`set -x' is useful.

    $ set -x
    $ export QT_SCREEN_SCALE_FACTORS=eDP1=2;DP1=1
    + export QT_SCREEN_SCALE_FACTORS=eDP1=2
    + QT_SCREEN_SCALE_FACTORS=eDP1=2
    + DP1=1
    $ set +x
    $

--
Cheers, Ralph.
https://plus.google.com/+RalphCorderoy
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

arch general mailing list-2
In reply to this post by Tyler-2
Le 01/08/2018 à 14:27, Tyler a écrit :

>> The separator is a ; not a comma. ;) And it is likely {E,}DP-1, not
>> {E,}DP1. And you probably have to use quotes around the whole value,
>> like this:
>>
>> QT_SCREEN_SCALE_FACTORS="eDP-1=2;DP-1=1;HDMI-1=1;DP-2=1;HDMI-2=1;"
> Hmm sadly, it doesn't seem to help.
>
> $ env |grep QT
> QT_SCREEN_SCALE_FACTORS=eDP1=2;DP1=1;HDMI1=1;DP2=1;HDMI2=1;
> QT_QPA_PLATFORMTHEME=qt5ct
> QT_AUTO_SCREEN_SCALE_FACTOR=0
>
> I rebooted and set:
>
> xrandr --output eDP1 --pos 5120x0 --auto \
>        --output DP1 --pos 0x0 --auto --scale 2x2
>
> and applications Qt apps like wireshark and virtualbox are still
> rendering with 2x scaling on both screens. (which looks normal on the
> hidpi one, and small on the lowdpi one).

OK, then maybe you’ve just stumbled upon one of the numerous HiDPI Qt bugs…
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Tyler-2
In reply to this post by Tyler-2
> https://phabricator.kde.org/D12405#251159

> graesslin.Apr 21 2018, 7:01 PM
> I also cannot imagine this to work due to the fact how X11 works. There is just no mapping from window to screen. No window can know on which screen it is. Not even KWin knows that as the window manager (screen is not a constant property, but evaluated every time it is accessed, it's based on the distance to closest screen). Especially for overlapping windows it's very difficult to try to get to which screen it belongs. It gets even more complicated when things like panning and overlapping screens get into it. So I wouldn't trust this thing in Qt to work due to the pain we have in KWin especially with these problems.

I wonder if it's possible?

--
Tyler
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Eric Blau
In reply to this post by Tyler-2
Hi Tyler,

I did a lot of experimenting a while back to find something that works well
for me. I have a MacBook Pro with a HiDPI screen connected to two 1080p
external monitors via ThunderBolt-to-DisplayPort adapters. I place my
MacBook Pro to the right of the two external monitors. I also run i3.
Here's what I found worked for me:

.Xresources contains:
Xft.dpi: 220

.xinitrc contains:
xrdb -merge ~/.Xresources
export QT_AUTO_SCREEN_SCALE_FACTOR=1
export GDK_SCALE=1.5
export GDK_DPI_SCALE=0.75
exec i3

xrandr command for external monitors:
xrandr --output DP1 --scale 1.5x1.5 --auto --pos 0x0 --primary --output DP2
--scale 1.5x1.5 --auto --pos 2880x0 --output eDP1 --mode 1920x1200 --pos
5760x0

xrandr command for switching back to internal laptop screen:
xrandr --output eDP1 --auto --primary --output DP1 --off --output DP2 --off

I tried playing with panning but I found it easier to just set similar
resolutions using whatever mode I want on the monitors and the proper scale
option  and then specifying the absolute positions with --pos. When
external monitors are enabled, I reduce the resolution of my laptop screen
because the laptop is on a stand further away from me so I need the text a
bit larger.

Good luck. Let us know how it goes.

Thanks,
Eric


On Mon, Jul 30, 2018 at 11:18 PM Tyler <[hidden email]> wrote:

> Hi,
>
> I am using ArchLinux with i3 on my Dell XPS 13" 9370 @ 3840x2160) HiDPI
> and everything works great with:
>
> .Xresources:
>
> ! xft fonts
> !----------------------------------------------------------------------
> Xft.dpi: 220
> Xft.autohint: 0
> Xft.lcdfilter:  lcddefault
> Xft.hintstyle:  hintfull
> Xft.hinting: 1
> Xft.antialias: 1
> Xft.rgba: rgb
>
> ! urxvt
> !---------------------------------------------------------------------
> URxvt*font:     xft:DejaVu Sans Mono for Powerline:size=12: \
>                      minspace=False:antialias=true, \
>                  xft:Segoe UI Emoji:size=12:minspace=False:antialias=true
>
> URxvt*boldFont: xft:DejaVu Sans Mono for Powerline:size=12: \
>                      minspace=False:antialias=true, \
>                  xft:Segoe UI Emoji:size=12:minspace=False:antialias=true
>
> URxvt.letterSpace: -1
>
>
>
> and in /etc/profile.d/hidpi.sh
>
> export GDK_SCALE=2
> export GDK_DPI_SCALE=0.5
> export QT_AUTO_SCREEN_SCALE_FACTOR=0
> export QT_SCREEN_SCALE_FACTORS=2
> export QT_QPA_PLATFORMTHEME=qt5ct
>
>
>
> However recently I bought a Dell DA300 Mobile Adapter and decided I
> wanted to use my external Dell 30" 3000WFP (2560x1600) over DisplayPort.
>
> I found this blog article
> https://blog.summercat.com/configuring-mixed-dpi-monitors-with-xrandr.html
> which explains exactly what I am trying to do. The only difference is
> the placement of the external screen (mine is on the left of the laptop)
> and the screen size and resolution.
>
> In that article he uses his HiDPI on both screens and then scales down
> on the external screen, which is why he doubles the resolution of the
> external display. The reason he does that is so he doesn't have to touch
> .Xresources or fiddle with toolkit scaling options.
>
> Using this command I was able to get it working great with a single
> external monitor ie the Dell 30" 3000WFP @ (2560x1600)
>
> xrandr --dpi 220 --fb 5120x3200 \
>      --output eDP1 --off \
>      --output DP1 --scale 2x2 --panning 5120x3200
>
> With the dual-monitor setup I'm struggling to understand the panning
> option. I have looked at https://wiki.archlinux.org/index.php/xrandr and
> the man file and still couldn't figure that track x track y part out.
> It's not very easy to understand.
>
> So far for the external monitor I have this:
>
> xrandr --dpi 220 --fb 8960x5360 \
>      --output eDP1 --mode 3840x2160 \
>      --output DP1 --scale 2x2 --pos -2560x0 --panning 5120x3200+2560+0
>
> What I want is to be able to access the whole area of both screens. In
> his example he has a laptop at 3200x1800 and an external monitor at
> 1920x1080
>
> > Dual monitors
> >
> > When I want to use both monitors, this is the command I run:
> >
> > xrandr --dpi 276 --fb 7040x3960 \
> >     --output eDP-1 --mode 3200x1800 \
> >     --output DP-1-2 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0
> >
> > Here's an explanation of the options:
> >
> >     Global options:
> >         --dpi 276 sets the DPI to 276.
> >         --fb 7040x3960 creates one screen with resolution 7040x3960.
> This is the combined resolution of the two monitors. The high DPI monitor
> has 3200x1800 resolution. The lower DPI monitor has 1920x1080 resolution,
> but I double it as I scale it by 2 (see below). Combine these like so:
> 3200+1920*2 x 1800+1080*2 = 7040x3960. Both monitors share this screen.
> >     High DPI monitor options (--output eDP-1):
> >         --mode 3200x1800 says to use resolution 3200x1800. This is the
> default, but specifying it is necessary if the monitor is disabled (as it
> is when using the external monitor by itself) as it enables the monitor.
> >     Lower DPI monitor options (--output DP-1-2):
> >         --scale 2x2 is similar to zooming out. This is necessary as we
> set the DPI globally to that of the high DPI monitor.
> >         --pos positions it to the right of the laptop monitor.
> >         --panning allows our pointer to access the whole area.
>
> Any help or tips would be much appreciated!
>
> --
> Tyler
>
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Tyler-2
>> https://phabricator.kde.org/D12405#251159
>
>> graesslin.Apr 21 2018, 7:01 PM
>> I also cannot imagine this to work due to the fact how X11 works. There is just no mapping from window to screen. No window can know on which screen it is. Not even KWin knows that as the window manager (screen is not a constant property, but evaluated every time it is accessed, it's based on the distance to closest screen). Especially for overlapping windows it's very difficult to try to get to which screen it belongs. It gets even more complicated when things like panning and overlapping screens get into it. So I wouldn't trust this thing in Qt to work due to the pain we have in KWin especially with these problems.

On 01/08/18 12:33, Bruno Pagani wrote:
> OK, then maybe you’ve just stumbled upon one of the numerous HiDPI Qt bugs…

Which brings me back to the original post.

If I could figure out how to do it this way,

https://blog.summercat.com/configuring-mixed-dpi-monitors-with-xrandr.html

because that sounds like it would avoid this problem.

> The tricky parts
>
> There were two aspects I found problematic:
>
> First, the fact that the two monitors have differing DPI means each monitor needs different settings to account for that. xrandr allows setting the DPI via --dpi, but this applies globally to all monitors. I dealt with this by setting the global DPI to that of the highest DPI monitor, and then used --scale to adjust the lower DPI monitor.
>
> Second, switching back and forth between dual monitors to one monitor lead to interesting behaviour. For example, I kept losing the scale setting on the lower DPI monitor.

Previously on the list ProgAndy said:
> The panning option might be there as a workaround for a bug in xorg.
> Since xorg 1.20 the patch to resolve that should be included, so you can try your configuration without panning.

I feel he might be right based on the results I had with

xrandr --output eDP1 --pos 5120x0 --auto \
       --output DP1 --pos 0x0 --auto --scale 2x2

> I had a semi-working setup with little trouble, but it involved restarting X when I wanted to switch between dual and single monitors. This worked, but obviously was inconvenient. I wanted a solution that would work without restarts.

I do think he might be right. It does seem like it might be also a
workaround for this Qt5 issue.

From that blog post:

> Single monitor (external)
>
> If I want to use only the lower DPI monitor, then I run this command:
>
> xrandr --dpi 276 --fb 3840x2160 \
>     --output eDP-1 --off \
>     --output DP-1-2 --scale 2x2 --panning 3840x2160
>
> Most of these options are similar to the first command's. The main difference is disabling the laptop monitor with --output eDP-1 --off.
>
> Note 3840x2160 comes from 1920*2 x 1080*2.
>
> You might wonder why I set high DPI and scale the lower DPI monitor here. Wouldn't it be simpler to set a lower DPI and use the monitor's native resolution? That's possible, but since I've configured other things (such as my X terminal fonts) to a size suitable for a high DPI screen, I'd have to adjust settings elsewhere. Keeping the DPI the same and continuing to scale allows me to avoid that. Since I'm scaling, I need to configure a large screen and set panning for the same reasons as before.

I was able to get that working using my numbers for the Dell 30" 3008WFP

xrandr --dpi 220 --fb 8960x5360 \
    --output eDP1 --mode 3840x2160 --pos 5120x0 \
    --output DP1 --scale 2x2 --pos 0x0 --panning 5120x3200+3840+0

However with the Dual Monitors not so much;

> Dual monitors
>
> When I want to use both monitors, this is the command I run:
>
> xrandr --dpi 276 --fb 7040x3960 \
>     --output eDP-1 --mode 3200x1800 \
>     --output DP-1-2 --scale 2x2 --pos 3200x0 --panning 3840x2160+3200+0
>
> Here's an explanation of the options:
>
>     Global options:
>         --dpi 276 sets the DPI to 276.
>         --fb 7040x3960 creates one screen with resolution 7040x3960. This is the combined resolution of the two monitors. The high DPI monitor has 3200x1800 resolution. The lower DPI monitor has 1920x1080 resolution, but I double it as I scale it by 2 (see below). Combine these like so: 3200+1920*2 x 1800+1080*2 = 7040x3960. Both monitors share this screen.
>     High DPI monitor options (--output eDP-1):
>         --mode 3200x1800 says to use resolution 3200x1800. This is the default, but specifying it is necessary if the monitor is disabled (as it is when using the external monitor by itself) as it enables the monitor.
>     Lower DPI monitor options (--output DP-1-2):
>         --scale 2x2 is similar to zooming out. This is necessary as we set the DPI globally to that of the high DPI monitor.
>         --pos positions it to the right of the laptop monitor.
>         --panning allows our pointer to access the whole area.


Using the numbers I calculated:

eDP1 (30"   @ 2560x1600)
DP1  (13.3" @ 3840x2160)

3840+2560*2=8960
2160+1600*2=5360

xrandr --dpi 220 --fb 8960x5360 \
    --output eDP1 --scale 1x1 --mode 3840x2160 --pos 5120x0 \
    --output DP1 --scale 2x2 --pos 0x0 --panning 5120x3200+3200+0

using that I am seeing https://i.imgur.com/gTAsRUe.jpg which is a bit
strange but getting closer.

I think i am messing up the last part of panning the +3200+0 bit.

Eric..

You have a very similar setup, to me. I shall give that a try soon.

--
Tyler
Reply | Threaded
Open this post in threaded view
|

Re: xrandr with XPS 13" (3840x2160) HiDPI and 30" (2560x1600) LowDPI

Tyler-2
> I was able to get that working using my numbers for the Dell 30" 3008WFP
>
> xrandr --dpi 220 --fb 8960x5360 \
>     --output eDP1 --mode 3840x2160 --pos 5120x0 \
>     --output DP1 --scale 2x2 --pos 0x0 --panning 5120x3200+3840+0

I made a mistake there that should have been:

xrandr --dpi 276 --fb 5120x3200 \
    --output DP1 --scale 2x2 --mode 2560x1600 --panning 5120x3200 \
    --output eDP1 --off

--
Tyler
12