LINUX.ORG.RU

Настройка ввода KDE без использования GUI на Wayland

 , , ,


0

1

Это, конечно, здорово, что каждый композитор реализует по-своему (и тем самым ограничивает) настройки ввода, как ему пожелается, но рассмотрим именно KWin. В частности, меня интересует настройка графического планшета, а именно - переключение между несколькими профилями.

Имеем plasma-desktop/kcms/tablet, который не умеет в профили (в отличие от своего X11-прародителя, кстати) и ручное задание значений inputArea (как вообще можно было додуматься сделать полноценный мышиный редактор области, но при этом не дать возможность вбить нужные значения с клавиатуры?!). Некоторое время кое-как выставлял область мышкой, но что-то достало.

На коленке функционал профилей можно реализовать через скрипт, который бы менял какой-то конфигурационный файл и применял бы настройки в KWin. Здорово, есть kwriteconfig6, которым можно переписывать ~/.config/kcminputrc, где и хранятся нужные мне настройки. Но применить их никак без перезапуска.

В дело вступает D-Bus. Исследую дерево, которое выдаёт qdbus6 по команде

qdbus6 org.kde.KWin

получаю хренову тучу настроек, среди них ищу

qdbus6 org.kde.KWin | grep -i input

Заранее посмотрел, какой event* отвечает за перо графического планшета - event21. Делаю

qdbus6 \
    org.kde.KWin \
    /org/kde/KWin/InputDevice/event21 \
    org.freedesktop.DBus.Properties.Get \
    org.kde.KWin.InputDevice \
    inputArea

на что получаю

qdbus: I don't know how to display an argument of type '(dddd)', run with --literal.

C --literal получаю

[Variant: [Argument: (dddd) 0.33137, 0.340447, 0.337261, 0.339013]]

По значениям видно, как я отчаянно пытался мышкой на микроскопическом клочке монитора выставить значения 0.33, 0.33, 0.33, 0.33.

Теперь прикол: получить-то я получил, а вот отправить составной тип (в реальности это QRectF, aka структура из четырёх double) с нужными данными в терминале через dbus-send/qdbus нельзя (если убедите меня в обратном, буду премного благодарен).

Получаем два стула (чтобы сделать возможным хотя бы выставлять вручную нужные размеры и положение области):

  1. доделывать KCM (читай на Qt Quick патчить формочку, добавлять обработчики, собирать, тестить и потом ждать, пока примут PR);

  2. делать консольную утилиту, дублирующую функционал KCM на Си, Плюсах или Питоне (просто чтобы использовать API D-Bus для отправки непримитивных типов); да-да, xsetwacom, который будет работать только с KWin.

Есть ещё варианты кроме использования X11?

Ответ на: комментарий от masa

На Си сделал временное решение чисто под свои нужды, но так не годится, нужна полноценная утилита, позволяющая изменять все настройки, которые предоставляет KWin (а он через D-Bus предоставляет всё, что даёт libinput). Второй стул кажется не таким болезненным, как первый.

newpson
() автор топика

Держу в курсе, решил всё же делать по-нормальному, импортировал plasma-desktop в Qt Creator, удовлетворил зависимости, всё собирается. Запускаю собирающийся kcm_tablet.so через kcmshell6. Осталось только разобраться, что этот ваш Qt Quick из себя представляет.

p.s. тема топика постепенно перерастает в «Патчим KDE для поддержки задания значений с клавиатуры»

newpson
() автор топика
Последнее исправление: newpson (всего исправлений: 1)