С появлением улучшенного апплета управления цветом и конфигуратора графических планшетов Wacom прогресс в GNOME 3.2 для творческих людей становится достаточно очевидным.
Апплет конфигурации Wacom для GNOME
Опубликованное на прошлой неделе интервью с разработчиком GNOME Color Manager Ричардом Хьюсом было, признаться, длинновато. Памятуя об этом, в случае с Питером Хаттерером (Petter Hutterer) редакция линуксграфикса искренне рассчитывала схалявить и обойтись коротким интервью, но как-то некстати осознала, что Питер ко всему прочему ещё и является активным разработчиком в проекте linuxwacom. Так судьба интервью была предрешена.
Привет, Питер! Буквально пару слов о себе для начала, если не сложно :)
Я работаю в подразделении Red Hat, занимающемся графической подсистемой. Правда, я в нём несколько выделяюсь, поскольку специализируюсь на устройствах ввода, а не на собственно графике. В любом случае, работы хватает, ведь я занимаюсь не только стеком ввода в X-сервере, но и драйверами evdev, synaptics и wacom, а также некоторыми другими.
Сейчас я живу в Брисбане, Австралия. Преимущество Австралии в том, что тут отличная погода, намного лучше, чем где-либо ещё (будем считать, что наводнения и циклон в этому году были просто мелким метеорологическим проколом). Недостаток же в том, что большинство других разработчиков живёт в другом часовом поясе. Поэтому когда европейцы пытаются до меня достучаться на IRC, обычно я уже сплю.
Как началась работа над конфигуратором планшетов Wacom для GNOME? Тебя к этому пытками принудили дизайнеры в проекте, или это твоя личная инициатива?
У конфигуратора есть своя предыстория.
Проект linuxwacom, на который мы опираемся, был начат довольно давно: в CVS история изменений ведёт отсчёт с 2002 года. Изначально драйвер wacom пытался делать всё сразу: в нём были патчи для ядра, драйвер для иксов, а также пользовательские инструменты для отладки и настройки, в частности, конфигуратор wacomcpl.
Когда два года назад я приступил к работе над linuxwacom, мы выделили код драйвера для X в отдельный проект xf86-input-wacom. Причиной тому послужила отсталость драйвера, который тащился в хвосте всех нововведений в сервере X.
Взять, к примеру, «горячее» подключение устройств ввода. Драйвер wacom ведёт себя совершенно особенным образом: он создаёт несколько устройств для X из одного устройства ядра: по одному на стилус, ластик и каждое прочее устройство. Это позволяет приложениям вроде GIMP назначать каждому физическому устройству свои инструменты с уникальными параметрами.
Раздельные параметры для каждого устройства в GIMP
Раньше для этого использовалось несколько секций InputDevice в конфиге xorg.conf, каждая из которых указывала на один и тот же файл устройства. Но в мире, где царит «горячее» подключение, этот подход попросту нежизнеспособен: механизм конфигурации (раньше это был HAL, а теперь это udev) просто единожды сообщает о подключении нового устройства.
После нескольких релизов драйвера и сервера мы наконец интегрировали в драйвер wacom поддержку подключения на лету, поэтому сейчас достаточно просто вставить планшет в USB, чтобы всё заработало. Однако оставалась проблема: стоило отключить устройство, как все применённые изменения конфигурации терялись.
Упомянутый ранее конфигуратор wacomcpl перестал работать, поскольку не мог обеспечивать постоянное хранение конфигурации. Мы могли бы написать демон, который работал бы с wacomcpl, но предпочли этого не делать. На то у нас было две веских причины. Во-первых, у wacomcpl были серьёзные архитектурные недочёты. Во-вторых, у нас и так уже был демон — gnome-settings-daemon.
Собственно, тут дело и дошло до интеграции. Ведь раз GNOME справляется с другими устройствами ввода, почему бы ему заодно не справляться и с графическими планшетами?
Кстати, в реальности GNOME тоже применяет конфигурацию на лету, но при этом он следит за появлением новых устройств и повторно применяет конфигурацию, чем успешно создаёт видимость её постоянного хранения (на самом деле она хранится в gsettings).
Тут возникает логичный вопрос, зачем был нужен новый апплет.
Когда у вас несколько устройств X для одного и того же устройства в ядре, графический конфигуратор обязан учитывать разные хитрости. Например, если вы решили переключить стилус в абсолютный режим, то с ластиком надо сделать то же самое, поскольку это два конца одного физического объекта.
Настройка кистевой динамики в GIMP
Кроме того, драйвер поддерживает различные дополнительные функции, доступ к настройке которых нужен пользователям. Так что мы бы не отделались добавлением просто ещё одной вкладки в диалог настройки мыши. Полагаю, что окончательная версия апплета будет весьма сложной.
Сейчас в апплете конфигурируются самые основные параметры: выбор между абсолютным и относительным режимами, переключатель для левшей и правшей, выбор действий для качающейся кнопки на стилусе и линейный отклик на силу нажатия кончиком пера и ластиком. При этом в gnome-settings-daemon уже явно реализованы функции, к которым просто нет графического интерфейса. Ты не мог бы прояснить этот момент?
Сейчас в апплете не реализован интерфейс к трём функциям. Речь идёт о настройке клавиш на корпусе, калибровке и проекции на монитор.
В драйвер wacom заложены достаточно мощные средства привязки клавиш к действиям, и хотя эти клавиши часто используются, интерфейса для их настройки в апплете действительно пока что нет.
Калибровка нужна планшетам со встроенным экраном, таким как Wacom Cintiq, но она же нужна и планшетным компьютерам, использующим устройства Wacom. Так что она не уникальна для графических планшетов, и мне бы хотелось видеть некий общий апплет, который заодно работает и для абсолютных устройств, использующих различные драйверы. Это было бы актуально, к примеру, для драйвера evdev, в котором тоже есть базовые средства калибровки.
Настройка проекции на монитор в апплете Wacom для KDE
Остаётся проекция на монитор, часто всплывающая в запросах пользователей. По умолчанию всякое абсолютное устройство проецируется на весь рабочий стол в многомониторных конфигурациях. Встроенным устройствам это явно не нужно, поэтому необходим способ связывать такие устройства только с одним монитором. Консольные приложения для этого существуют, а вот с графическими пока туго. У привязки к мониторам нет никакой драйверной специфики, так что здесь снова можно было бы придумать некое общее приложение.
Самое интересное здесь заключается в том, что нам в принципе не нужно заморачиваться привязкой к мониторам. У сервера уже есть функция, позволяющая спроецировать рабочую область абсолютного устройства на любую область экрана. Так что если пользователю надо привязать планшет, скажем, к правому монитору, нам нужно просто посчитать за пользователя смещение и размеры этого экрана относительно всего рабочего стола, а затем спроецировать область планшета на эту область.
Мы собираемся заняться этим вплотную как можно скорее, но жизнь может внести в эти планы свои коррективы. Пока что я собираюсь реализовать это в Fedora 17, следовательно, к выпуску этой версии можно ждать соответствующих изменений. Если, конечно, меня никто не опередит. Прямо даже не знаю, как бы я пережил такое горе ;)
У нас есть и более отдалённые планы. Например, можно определять модель планшета и показывать только специфичные для неё параметры. Но пока что у меня лично нет времени этим заниматься.
Название «Wacom Graphics Tablet» звучит как-то уж очень привязанным к определённому производителю планшетов. Всё-таки, в Linux поддерживаются и Genius, и Hanvon. Есть ли у апплета слой абстракции, позволяющий настраивать планшеты других производителей?
С точки зрения X для планшетов актуальны всего два драйвера: evdev и wacom. Любой простой планшет, у которого лишь один стилус и несколько осей, работает через evdev. Устройства, которые нужно разделять на несколько, работают через драйвер wacom. Из-за этого разделения между драйверами создание общего конфигуратора для всех возможных планшетов может оказаться непростой задачей, поскольку есть планшеты, которые драйвером wacom не поддерживаются.
Поддерживать оба типа планшетов в апплете GNOME в принципе можно. Дело лишь в том, что применимые параметры будут заметно различаться, а у нас прямо сейчас нет времени разбираться с этим. Есть и другой вариант: добавить поддержку прочих устройств в драйвер wacom. Когда нас об этом попросят, мы подумаем над реализацией обстоятельнее. До сих пор никто не просил.





Нет ответов на “Питер Хаттерер рассказывает о linuxwacom и новом конфигураторе для GNOME”