Display
This page could use some expansion. If you'd like to help out, feel free to edit this article!
In particular: All of this is Xorg-related. Move relevant bits to Xorg and rewrite. |
Landscape mode
All these fixes need device reboot.
Rotate the screen
You can rotate adding the following configuration file: /etc/X11/xorg.conf.d/00-fbdev-rotate.conf
Section "Device" Identifier "LCD" Driver "fbdev" Option "Rotate" "CW" EndSection
Valid values for "Rotate" are "CW" (clockwise, 90 degrees), "UD" (upside down, 180 degrees) and "CCW" (counter clockwise, 270 degrees), see fbdev(4) man page.
Reboot, then open the display app and set the correct resolution.
Rotate the touchscreen
In order to also rotate the touchscreen you need to add an udev rule.
First, list your device with
libinput list-devices
look for your touchscreen, it should look something like this:
Device: Elan Touchscreen Kernel: /dev/input/event0 Group: 1 Seat: seat0, default Capabilities: touch Tap-to-click: n/a Tap-and-drag: n/a Tap drag lock: n/a Left-handed: n/a Nat.scrolling: n/a Middle emulation: n/a Calibration: 0.00 1.00 0.00 -1.00 0.00 1.00 Scroll methods: none Click methods: none Disable-w-typing: n/a Accel profiles: n/a Rotation: n/a
now, get the device name from udevadm (change event0 according to the Kernel output before):
udevadm info -a -p /sys/class/input/event0
in the output find your touchscreen, copy the exact ATTRS{name} line:
looking at parent device '/devices/soc0/7000c400.i2c/i2c-1/1-0010/input/input0': KERNELS=="input0" SUBSYSTEMS=="input" DRIVERS=="" ATTRS{uniq}=="" ATTRS{properties}=="2" ATTRS{phys}=="" ATTRS{name}=="Elan Touchscreen"
create a new udev file under:
/etc/udev/rules.d/98-touchscreen-cal.rules
Add the ATTRS{name} line you copied with a comma:
ATTRS{name}=="Elan Touchscreen",
And add one of the following lines after the comma:
# Left - 90 degree clockwise ENV{LIBINPUT_CALIBRATION_MATRIX}="0 -1 1 1 0 0" # 180 degree clockwise ENV{LIBINPUT_CALIBRATION_MATRIX}="-1 0 1 0 -1 1" # Right - 270 degree clockwise ENV{LIBINPUT_CALIBRATION_MATRIX}="0 1 0 -1 0 1" # reflect along y axis ENV{LIBINPUT_CALIBRATION_MATRIX}="-1 0 1 1 0 0"
So you end up with something like this:
ATTRS{name}=="Elan Touchscreen", ENV{LIBINPUT_CALIBRATION_MATRIX}="0 1 0 -1 0 1"
Reboot your device and you are good to go. (a force reload of udevadm isn't enough!)
Note: If you use the rotate screen code as it is, use the # Right option to rotate the touch on the direction of rotated screen.
Scaling
Xfce4 and Mate Desktop supports gtk apps scaling out of the box. As for Qt apps, you need to set up environment variables by
sudo nano /etc/environment
and pasting these lines after comments
QT_SCALE_FACTOR=2 QT_AUTO_SCREEN_SCALE_FACTOR=2
Display Power Management
To control display from a terminal, first set DISPLAY environment variable:
export DISPLAY=:0.0
The xset command can be used to turn display on and off, or set a display timeout value.
xset dpms force off # To turn off display
xset dpms force on # To turn the display back on
xset q # Prints current display status info
Troubleshooting
Check the logs with logread -f | grep x11
or see the dedicated Troubleshooting page