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

С появлением улучшенного апплета управления цветом и конфигуратора графических планшетов Wacom прогресс в GNOME 3.2 для творческих людей становится достаточно очевидным.

GNOME configuration applet for Wacom tablets
Апплет конфигурации 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
Раздельные параметры для каждого устройства в GIMP

Раньше для этого использовалось несколько секций InputDevice в конфиге xorg.conf, каждая из которых указывала на один и тот же файл устройства. Но в мире, где царит «горячее» подключение, этот подход попросту нежизнеспособен: механизм конфигурации (раньше это был HAL, а теперь это udev) просто единожды сообщает о подключении нового устройства.

После нескольких релизов драйвера и сервера мы наконец интегрировали в драйвер wacom поддержку подключения на лету, поэтому сейчас достаточно просто вставить планшет в USB, чтобы всё заработало. Однако оставалась проблема: стоило отключить устройство, как все применённые изменения конфигурации терялись.

Упомянутый ранее конфигуратор wacomcpl перестал работать, поскольку не мог обеспечивать постоянное хранение конфигурации. Мы могли бы написать демон, который работал бы с wacomcpl, но предпочли этого не делать. На то у нас было две веских причины. Во-первых, у wacomcpl были серьёзные архитектурные недочёты. Во-вторых, у нас и так уже был демон — gnome-settings-daemon.

Собственно, тут дело и дошло до интеграции. Ведь раз GNOME справляется с другими устройствами ввода, почему бы ему заодно не справляться и с графическими планшетами?

Кстати, в реальности GNOME тоже применяет конфигурацию на лету, но при этом он следит за появлением новых устройств и повторно применяет конфигурацию, чем успешно создаёт видимость её постоянного хранения (на самом деле она хранится в gsettings).

Тут возникает логичный вопрос, зачем был нужен новый апплет.

Когда у вас несколько устройств X для одного и того же устройства в ядре, графический конфигуратор обязан учитывать разные хитрости. Например, если вы решили переключить стилус в абсолютный режим, то с ластиком надо сделать то же самое, поскольку это два конца одного физического объекта.

Настройка кистевой динамики в GIMP
Настройка кистевой динамики в GIMP

Кроме того, драйвер поддерживает различные дополнительные функции, доступ к настройке которых нужен пользователям. Так что мы бы не отделались добавлением просто ещё одной вкладки в диалог настройки мыши. Полагаю, что окончательная версия апплета будет весьма сложной.

Сейчас в апплете конфигурируются самые основные параметры: выбор между абсолютным и относительным режимами, переключатель для левшей и правшей, выбор действий для качающейся кнопки на стилусе и линейный отклик на силу нажатия кончиком пера и ластиком. При этом в gnome-settings-daemon уже явно реализованы функции, к которым просто нет графического интерфейса. Ты не мог бы прояснить этот момент?

Сейчас в апплете не реализован интерфейс к трём функциям. Речь идёт о настройке клавиш на корпусе, калибровке и проекции на монитор.

В драйвер wacom заложены достаточно мощные средства привязки клавиш к действиям, и хотя эти клавиши часто используются, интерфейса для их настройки в апплете действительно пока что нет.

Калибровка нужна планшетам со встроенным экраном, таким как Wacom Cintiq, но она же нужна и планшетным компьютерам, использующим устройства Wacom. Так что она не уникальна для графических планшетов, и мне бы хотелось видеть некий общий апплет, который заодно работает и для абсолютных устройств, использующих различные драйверы. Это было бы актуально, к примеру, для драйвера evdev, в котором тоже есть базовые средства калибровки.

Настройка проекции на монитор в апплете Wacom для KDE
Настройка проекции на монитор в апплете Wacom для KDE

Остаётся проекция на монитор, часто всплывающая в запросах пользователей. По умолчанию всякое абсолютное устройство проецируется на весь рабочий стол в многомониторных конфигурациях. Встроенным устройствам это явно не нужно, поэтому необходим способ связывать такие устройства только с одним монитором. Консольные приложения для этого существуют, а вот с графическими пока туго. У привязки к мониторам нет никакой драйверной специфики, так что здесь снова можно было бы придумать некое общее приложение.

Самое интересное здесь заключается в том, что нам в принципе не нужно заморачиваться привязкой к мониторам. У сервера уже есть функция, позволяющая спроецировать рабочую область абсолютного устройства на любую область экрана. Так что если пользователю надо привязать планшет, скажем, к правому монитору, нам нужно просто посчитать за пользователя смещение и размеры этого экрана относительно всего рабочего стола, а затем спроецировать область планшета на эту область.

Мы собираемся заняться этим вплотную как можно скорее, но жизнь может внести в эти планы свои коррективы. Пока что я собираюсь реализовать это в Fedora 17, следовательно, к выпуску этой версии можно ждать соответствующих изменений. Если, конечно, меня никто не опередит. Прямо даже не знаю, как бы я пережил такое горе ;)

У нас есть и более отдалённые планы. Например, можно определять модель планшета и показывать только специфичные для неё параметры. Но пока что у меня лично нет времени этим заниматься.

Название «Wacom Graphics Tablet» звучит как-то уж очень привязанным к определённому производителю планшетов. Всё-таки, в Linux поддерживаются и Genius, и Hanvon. Есть ли у апплета слой абстракции, позволяющий настраивать планшеты других производителей?

С точки зрения X для планшетов актуальны всего два драйвера: evdev и wacom. Любой простой планшет, у которого лишь один стилус и несколько осей, работает через evdev. Устройства, которые нужно разделять на несколько, работают через драйвер wacom. Из-за этого разделения между драйверами создание общего конфигуратора для всех возможных планшетов может оказаться непростой задачей, поскольку есть планшеты, которые драйвером wacom не поддерживаются.

Поддерживать оба типа планшетов в апплете GNOME в принципе можно. Дело лишь в том, что применимые параметры будут заметно различаться, а у нас прямо сейчас нет времени разбираться с этим. Есть и другой вариант: добавить поддержку прочих устройств в драйвер wacom. Когда нас об этом попросят, мы подумаем над реализацией обстоятельнее. До сих пор никто не просил.

Ну а что касается названия, сначала апплет назывался вообще «Wacom Tablet». Такое имя я выбрал просто потому, что так называется драйвер для X, который Wacom Inc. и написали. Сейчас в нём есть поддержка разных устройств — это Wacom, Waltop, разные совместимые планшетные компьютеры Fujitsu Tablet и, кажется, даже какие-то устройства N-Trig.

Насколько мне известно, Wacom Inc. по сути безраздельно властвует на рынке планшетов для профессионалов, так что я особенно и не задумывался о том, надо ли менять название на более общее. Для меня это просто название, не более того. Хотя если переименовать апплет в «Graphics Tablet», некоторые планшеты настроить не получится, и вот это уже будет проблемой. А так я эмоционально к названию не привязан. Если кому-то вздумается его поменять — ради бога.

По случайному совпадению, практически всё то же самое применимо к драйверу для тачпэдов, который до сих пор называется «synaptics», хотя сейчас он обеспечивает поддержку устройств более чем одного производителя.

Как сейчас выглядит поддержка Wacom в Linux? Просто подключаем планшет и начинаем работать? Без перезапуска приложений?

С большинством планшетов именно так дело и обстоит, хотя некоторые новейшие модели или поддерживаются частично, или не поддерживаются вовсе. Пока устройство не выпустят (и его не купит пользователь), нам о нём ничего не известно. Крис Бэгвелл (Chris Bagwell), к примеру, сейчас работает над кодом, который позволит драйверу обходиться без обновлений при появлении новых моделей планшетов, но эта работа пока не завершена.

Приложения перезапускать не надо, если, конечно, они не полагаются исключительно на X Input Extension. Словом, за все приложения и графические библиотеки не скажу, но сервер X уже точно не надо запускать заново.

Что сейчас происходит в проекте linuxwacom, и какие у вас приоритеты?

Для нас практически всегда актуальна работа по обеспечению поддержки новых устройств, но кроме этого есть ещё ряд важных задач. Патч Эдуарда Хазенляйтнера (Eduard Hasenleithner), добавляющий поддержку OLED из линейки Wacom Intuos4, только что приняли в ядро Linux, так что мы сейчас работаем над предоставлением доступа к этой функции сторонним приложениям через драйвер для X. Для тех, кто не в курсе дела, поясню: OLED — это такие крохотные дисплеи, показывающие значки рядом с кнопками на корпусе планшетов. Над этим кроме Эдуарда работает Пинь Чень (Ping Cheng).

Джейсон Гереке (Jason Gerecke) сейчас занят совершенствованием консольной утилиты xsetwacom. В частности, он возвращает туда функции, которые были потеряны после разделения кода. Напомню: до разделения в коде драйвера для X была масса функций, которые, на мой взгляд для драйвера устройства ввода совершенно излишни, например, работа с многомониторными конфигурациями. Эти функции были временно выкинуты, а теперь одна за другой добавляются обратно в переработанный код. Готов признать, что в течение некоторого времени драйвер был менее функционален, но сейчас он практически сравнялся со старой версией при том, что реализован заметно качественнее и поддерживает ряд новых возможностей.

Крис Бэгвелл (Chris Bagwell) работает над улучшением поддержки Bamboo, и там можно говорить о существенном прогрессе, причём в драйверах как для ядра, так и для X. Наконец, Дэвид Фоули (David Foley) отлично справляется с поддержкой и пополнением нашей вики.

В отдалённых планах есть создание библиотеки, которая позволила бы приложениям получать больше информации о планшете и его возможностях, но это пока на уровне разговоров.

Если ориентироваться на старый список изменений, в качестве основного разработчика lixnuwacom практически всегда фигурировала Пинь Чень. Затем, примерно к моменту начала работы над 0.10.х, к ней внезапно добавилось примерно полдесятка новых разработчиков. Это такое внезапное пополнение команды, или они участвовали и раньше, просто наконец попали в фокус?

Если коротко, то всё дело в репозитории исходного кода, для которого использовался CVS. Пинь сваливала туда присылаемые изменения изредка и сразу огромными кусками, разбирать которые впоследствии на более мелкие было практически нереально. Мне это быстро надоело, и я форкнул драйвер.

Так что твоё наблюдение верно и неверно одновременно. Неверно — поскольку то, что было одним коммитом от имени Пинь, было в реальности десятью коммитами от нашего имени. Но при этом к проекту действительно присоединилось несколько новых разработчиков.

Насколько я знаю, несмотря на то, что Пинь Чень работает в Wacom Inc., поддержка Linux для Wacom никогда не была официальным проектом. Но при этом, скажем, новая версия linuxwacom с поддержкой Bamboo Pen & Touch была выпущена буквально на следующий день после официального анонса о запуске этой линейки планшетов. Получаете ли вы какую-то поддержку от компании?

Да, Пинь всё ещё работает в Wacom Inc., но сейчас она занята преимущественно работой над драйвером для ядра и разными проектами для клиентов компании. Джейсон, недавно пришедший на работу в Wacom, занимается драйвером для X. Что касается поддержки Bamboo, ею занимается преимущественно Крис. Не уверен, помогают ли ему сотрудники компании, но, кажется, ему предлагали новые модели для тестирования.

Painting on Wacom Cintiq in Krita
Painting on Wacom Cintiq in Krita

Так что у Wacom сейчас два сотрудника, работающих над поддержкой Linux, которые, правда, занимаются также разными внутренними проектами, о которых мы почти ничего не знаем. Словом, компания Wacom Inc. определённо поддерживает проект. Она ведь его и начала.

Нуждаетесь ли вы в какой-то поддержке?

Определённо, да. Мне приятно сознавать, что мы смогли вырастить небольшое сообщество вокруг проекта linuxwacom, но нам всё ещё не хватает людей для тестирования планшетов, составления отчётов об ошибках и помощи в их исправлении. То же самое касается апплета для центра управления GNOME и связанных с ним фрагментов кода в gnome-settings-daemon. Я бы предпочёл не взваливать всё это на себя и дать заниматься этим кому-то ещё. У меня и без того хватает работы, так что помощь была бы не лишней.

Я себя возненавижу, если не спрошу… :) Возможно, поддержка Wacom Inkling выходит за рамки проекта linuxwacom, но считаешь ли ты её возможной для Linux в обозримом будущем?

По правде говоря, об Inkling я узнал от тебя. Судя по описанию устройства, нужно обеспечить конвертирование передаваемого устройством файла в формат, который мы можем читать.

Это заметно отличается от того, что сейчас делает linuxwacom, но совсем необязательно выходит за рамки проекта. Если кто-то сейчас занимается этим вопросом, свяжитесь со мной: у нас есть инфраструктура, которую можно использовать.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*


Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.