Введение
Сенсорные экраны на устройствах под управлением Linux, таких как KUbuntu, иногда требуют ручной калибровки. Например, на планшетах Chuwi с сенсорным экраном Goodix Capacitive TouchScreen координаты касаний могут быть перевёрнуты. Для исправления этого можно использовать утилиту xinput
, но настройки сбрасываются после перезагрузки. В этой статье мы разберём, как настроить автозапуск скрипта для калибровки сенсорного экрана в KUbuntu двумя способами: через «Системные настройки» KDE и как сервис systemd
. Это руководство подойдёт для пользователей KUbuntu 24.04 и других версий KDE Plasma.

Что нужно для калибровки сенсорного экрана
Для настройки сенсорного экрана в KUbuntu тебе понадобится:
- Утилита
xinput
(обычно предустановлена в KUbuntu). - Имя устройства сенсорного экрана (в нашем случае — Goodix Capacitive TouchScreen).
- Матрица преобразования координат (в данном примере:
0 1 0 -1 0 1 0 0 1
). - Базовые знания работы с терминалом и редактором, например
nano
.
Проблема: после перезагрузки настройки, заданные через xinput
, сбрасываются. Мы автоматизируем их применение, чтобы сенсорный экран работал корректно сразу после входа в систему.
Создание скрипта для калибровки
Шаг 1: Создай файл скрипта
Открой терминал и создай файл скрипта:
sudo nano /usr/local/bin/fix-touchscreen.sh
Шаг 2: Добавь код скрипта
Вставь следующий код:
#!/bin/bash # Устанавливаем переменные окружения для X-сервера export DISPLAY=:0 export XAUTHORITY=/home/$USER/.Xauthority # Ждём, пока устройство появится sleep 15 # Находим ID устройства Goodix Capacitive TouchScreen DEVICE_ID=$(xinput list | grep "Goodix Capacitive TouchScreen" | grep -o "id=[0-9]*" | grep -o "[0-9]*" | head -n 1) if [ -n "$DEVICE_ID" ]; then xinput set-prop "$DEVICE_ID" "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1 fi
sleep 15
даёт системе время на инициализацию.- Скрипт автоматически определяет ID устройства через
xinput list
.
Шаг 3: Сделай скрипт исполняемым
Задай права на выполнение:
sudo chmod +x /usr/local/bin/fix-touchscreen.sh
Шаг 4: Проверь работу скрипта
Запусти скрипт вручную:
/usr/local/bin/fix-touchscreen.sh
Убедись, что сенсорный экран работает корректно, проверив матрицу:
xinput list-props <ID устройства> | grep "Coordinate Transformation Matrix"
Настройка автозапуска через «Системные настройки» KDE
Этот способ идеально подходит для пользователей KDE Plasma, так как скрипт запускается в контексте графической сессии.
Шаг 1: Открой «Системные настройки»
- Нажми на меню приложений (в левом нижнем углу).
- Выбери «Системные настройки».
Шаг 2: Перейди в раздел «Автозапуск»
- Найди раздел «Автозапуск» (или «Запуск и завершение» → «Автозапуск»).
Шаг 3: Добавь новый скрипт
- Нажми «Добавить» → «Скрипт».
- В поле «Команда» укажи:
/usr/local/bin/fix-touchscreen.sh
- В поле «Имя» укажи «Fix Touchscreen».
- Убедись, что опция «Запускать при входе в систему» включена.
- Нажми «ОК» или «Применить».

Настройка автозапуска через сервис systemd
Если ты хочешь запускать скрипт на этапе загрузки системы, используй systemd
. Этот метод требует дополнительных настроек для доступа к X-серверу.
Шаг 1: Создай файл сервиса
Создай файл сервиса:
sudo nano /etc/systemd/system/fix-touchscreen.service
Шаг 2: Добавь описание сервиса
Вставь код:
[Unit] Description=Fix touchscreen orientation on boot After=graphical.target [Service] Type=oneshot User=<твоё_имя_пользователя> Environment="DISPLAY=:0" Environment="XAUTHORITY=/home/<твоё_имя_пользователя>/.Xauthority" ExecStartPre=/bin/sleep 60 ExecStart=/usr/local/bin/fix-touchscreen.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target
- Замени
<твоё_имя_пользователя>
на своё имя (например,drslon
). ExecStartPre=/bin/sleep 60
добавляет задержку, чтобы графическая сессия успела загрузиться.
Шаг 3: Обнови конфигурацию systemd
sudo systemctl daemon-reload
Шаг 4: Запусти и включи сервис
Запусти сервис:
sudo systemctl start fix-touchscreen.service
Включи автозапуск:
sudo systemctl enable fix-touchscreen.service
Проверка работы после перезагрузки
Шаг 1: Перезагрузи систему
sudo reboot
Шаг 2: Проверь настройки
После входа в систему (или загрузки, если используешь systemd
) убедись, что матрица применилась:
xinput list-props <ID устройства> | grep "Coordinate Transformation Matrix"
Ожидаемый результат: 0.000000, 1.000000, 0.000000, -1.000000, 0.000000, 1.000000, 0.000000, 0.000000, 1.000000
.
Решение возможных проблем
Скрипт запускается слишком рано
Увеличь задержку в скрипте (с sleep 15
на sleep 30
) или в сервисе (с ExecStartPre=/bin/sleep 60
на ExecStartPre=/bin/sleep 90
).
Нет доступа к X-серверу
Проверь наличие файла ~/.Xauthority
:
ls -l ~/.Xauthority
Если его нет, удали строку export XAUTHORITY
из скрипта или Environment="XAUTHORITY"
из сервиса.
ID устройства меняется
Скрипт автоматически определяет ID через xinput list
, так что это не должно быть проблемой.
Драйвер libinput
сбрасывает настройки
Попробуй увеличить задержку или настроить запуск через udev
(дополнительная настройка).
Заключение
Автозапуск скрипта для калибровки сенсорного экрана в KUbuntu можно настроить через «Системные настройки» KDE или как сервис systemd
. Первый способ проще и надёжнее для графических сессий, второй даёт больше контроля на системном уровне. Теперь твой сенсорный экран Goodix Capacitive TouchScreen на Chuwi будет работать корректно сразу после загрузки или входа в систему!