для смены ориентации экрана делаем скрипт
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