для смены ориентации экрана делаем скрипт
1. тело
создаём файл ~/.config/systemd/user/sensor.service
1. тело
#!/usr/bin/python3 import sys, os, gc, time, glob import subprocess #const #Touchscreen name_screen = "ELAN Touchscreen" inversion = "Evdev Axis Inversion" swap = "Evdev Axes Swap" #Touchpad name_pad = "DLL064D:00 06CB:2985" enab = "Device Enabled" angle = 7.0 def proc(cmd,time = 30,sh = True ): p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE, shell=sh) try: outs, errs = p.communicate(timeout=time) except subprocess.TimeoutExpired: p.kill() outs, errs = p.communicate() return outs,errs for device in glob.glob('/sys/bus/iio/devices/iio:device*'): if open(device + '/name').read() == 'accel_3d\n': scale = float(open(device + '/in_accel_scale').read()) break if __name__ == '__main__': x = open(device + '/in_accel_x_raw') y = open(device + '/in_accel_y_raw') position = "" try: while True: x.seek(0) y.seek(0) current_x = float(x.read()) * scale current_y = float(y.read()) * scale if current_y <= -angle and position != "normal": proc("xrandr -o normal") proc("xinput set-prop \"{}\" \"{}\" 0 0".format(name_screen,inversion)) proc("xinput set-prop \"{}\" \"{}\" 0".format(name_screen,swap)) proc("xinput set-prop \"{}\" \"{}\" 1".format(name_pad,enab)) position = "normal" elif current_y >= angle and position != "inverted": proc("xrandr -o inverted") proc("xinput set-prop \"{}\" \"{}\" 1 1".format(name_screen,inversion)) proc("xinput set-prop \"{}\" \"{}\" 0".format(name_screen,swap)) proc("xinput set-prop \"{}\" \"{}\" 0".format(name_pad,enab)) position = "inverted" elif current_x >= angle and position != "left": proc("xrandr -o left") proc("xinput set-prop \"{}\" \"{}\" 1 0".format(name_screen,inversion)) proc("xinput set-prop \"{}\" \"{}\" 1".format(name_screen,swap)) proc("xinput set-prop \"{}\" \"{}\" 0".format(name_pad,enab)) position = "left" elif current_x <= -angle and position != "right": proc("xrandr -o right") proc("xinput set-prop \"{}\" \"{}\" 0 1".format(name_screen,inversion)) proc("xinput set-prop \"{}\" \"{}\" 1".format(name_screen,swap)) proc("xinput set-prop \"{}\" \"{}\" 0".format(name_pad,enab)) position = "right" time.sleep(1) except KeyboardInterrupt: sys.exit(0)
2. делаем автозапуск
создаём файл ~/.config/systemd/user/sensor.service
[Unit] Description=sensor polozenia After=network.target After=display-manager.service [Service] Environment=DISPLAY=:0.0
#путь до скрипта меняем на свой ExecStart=/usr/bin/python3 /home/user/bin/sensor.py Restart=always RestartSec=10 [Install] WantedBy=default.target
systemctl --u daemon-reload
systemctl --u enable sensor.service
systemctl --u start sensor.service
systemctl --u status sensor.service