Multi-monitor orientation in slick-greeter

I’m evaluating Ubuntu MATE 18.04 to possibly replace my current 14.04-based install.

I have two displays, one above the other. MATE and LightDM/slick-greeter both start with the main display on the left, and the other on the right. In MATE, it’s easy to re-orient the displays. Is there a way to do so for LightDM/slick-greeter?

TL;DR:
I have an all-in-one touchscreen desktop from System76 that came with 14.04 preinstalled. I added the second monitor, and the whole thing has always worked fine in Unity. However, Unity is not my desktop of choice, and I use my system for audio production, so I added Ubuntu Studio packages and started using XFCE from there.

The big problem with XFCE was the touchscreen:

  1. XFCE window controls did not respond to touch. I tried several solutions, and finally landed on using Openbox as the window manager in the XFCE environment.
  2. But first, I had to solve the touchscreen mapping problem. In every desktop I tried except Unity, the touchscreen would map to the whole desktop, across both monitors, instead of just the built-in display. The solution was to manually map the display layout and touchscreen ratios in xorg.conf, then everything on top just followed along.

The same xorg.conf works in Ubuntu MATE 18.04, except that LightDM/slick-greeter still orients the displays horizontally, so the touch interface mapping is even more wonky than before.

I’m OK with some manual settings, but it sure would be nice if these things would just work together nicely.

I found my problem. The same xorg.conf file from 14.04 does not work in 18.04. Since 14.04, the enumeration of physical displays has changed. (It now includes a hyphen - my guess is that it’s because of systemd.) What was eDP1, HDMI1, HDMI2, etc becomes eDP-1, HDMI-1, HDMI-2, etc.

This shouldn’t be necessary, but I still consider Linux to be better than the alternatives.

Here is my working xorg.conf:

$ cat /etc/X11/xorg.conf.d/91-sable-touch.conf
#  Second monitor above touchscreen.

Section "Monitor"
        Identifier      "eDP-1"
        Option          "PreferredMode" "1920x1080"
        Option          "Position" "0 1080"
EndSection

Section "Monitor"
        Identifier      "HDMI-2"
        Option          "PreferredMode" "1920x1080"
        Option          "Position" "0 0"
EndSection

Section "InputClass"
        Identifier "evdev touchscreen catchall"
        MatchIsTouchscreen "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
        Option "TransformationMatrix" "1 0 0 0 0.5 0.5 0 0 1"
EndSection
1 Like