HiDPI

Last month, I replaced my fine Radeon HD 7870 with a newer RX 480 video card. This past week, I got a pair of LG 4K monitors using Vivo desk arms at the same time as Fedora 25 upgrades. Nice holiday timing.

I still have an HP LP2475w monitor hanging off the HDMI port with these new 4K monitors on DisplayPort. That introduced some nifty xrandr handling — which cannot be duplicated in gnome-control-center — to allow my over-under configuration to be to the right of the former display:

$ cat > bin/HiDPI.sh <<EOD
#!/bin/sh

gsettings set org.gnome.desktop.interface cursor-size 48

echo before:
xrandr

echo
echo changing:
xrandr --output DVI-D-1 --scale 2x2 --mode 1920x1200 --fb 7680x2400 --pos 0x800
xrandr --output DP-3 --scale 1x1 --pos 3840x0 --primary
xrandr --output DP-2 --scale 1x1 --pos 3840x2160

echo
echo after:
xrandr
EOD
$ chmod +x bin/HiDPI.sh

Then, adding this script to run on session startup:

$ cd .config/autostart
$ cp /usr/share/applications/org.gnome.Terminal.desktop HiDPI.desktop
$ vim HiDPI.desktop
Name=HiDPI
Exec=HiDPI.sh

After noticing some distinct mouse flickering, my googling led me to understand that a new Xorg driver amdgpu is available for Fedora 25:

$ sudo dnf install xorg-x11-drv-amdgpu
$ sudo reboot
$ grep AMDGPU -m10 .local/share/xorg/Xorg.0.log
$ grep DRI -m10 .local/share/xorg/Xorg.0.log

Yikes!! The new driver renamed the above xrandr ports differently. No worries, simply replaced them with DVI-D-0, DisplayPort-2, and DisplayPort-1 respectively. 😎
Unfortunately, there is still some mouse flickering, but looks like that’s a Wayland and not a driver issue.

2 thoughts on “HiDPI

  1. The mouse flicker issue is corrected for me by editing the /etc/X11/xorg.conf.d/20-amdgpu.conf to enable use of its tear-free option:

    Section "Device"
        Identifier "AMD"
        Driver "amdgpu"
        #Option "SWcursor" "true"
        Option "TearFree" "true"
    EndSection

    I added a commented-out option for the software cursor in case the TearFree did not work, you know, one change at a time?

    1. On occasion when Gnome Shell sleeps and powers down my display panels, its wake up sequence rearranges the layout to something terribly unusable. I crafted another autostart script to run in the background and monitor D-Bus for a wakeup emit and reinvoke my HiDPSH.sh preferences. So far, it’s been working consistently for me:

      #!/bin/bash
      #
      # monitor D-Bus for when lockscreen's deactivated signal emits,
      # then execute a gratuitous HiDPI.sh to restore my display panel setup,
      # without the manual fuss.  :)
      #
      
      PROG=$( basename $0 )
      
      Monitors() {
          have=$1
          active=$( xrandr --listactivemonitors | head -1 | awk -F: '{print $2}' )
          test $active -eq $have
      }
      
      while read -a line; do
      
          let "i = ${#line[@]} - 1"
          last=${line[$i]}
          [ "$last" != 'false' ] && continue
      
          echo -e "\n${PROG} SceenSaver wakeup event @ `date`"
          echo -en "\t${line[@]} "
      
          while ! Monitors 3; do
              echo -en "."
              sleep 0.5
          done
          echo ""
      
          # restore my display panel layout
          HiDPI.sh &> /dev/null
      
      done < <( dbus-monitor "type='signal',interface='org.gnome.ScreenSaver',member='ActiveChanged'" )
      
      exit

Comments are closed.