Вопрос или проблема
В некоторых приложениях GTK (например, nautilus, GNOME Tweaks и т. д.) при проведении пальцами вверх или вниз по трекпаду и отпускании он продолжает прокрутку, и в конце концов ускорение снижается и останавливается. Я хотел бы сделать так, чтобы прокрутка останавливалась мгновенно, когда вы снова положите оба пальца на трекпад. Это функция есть на телефонах и в некоторых других операционных системах.
Как я могу реализовать это в Ubuntu 20.04 с окружением рабочего стола GNOME?
Похоже, что libinput
добавила поддержку “жестов удержания” в прошлом году, см. https://gitlab.freedesktop.org/libinput/libinput/-/issues/300. Изменение должно было распространиться через GTK, https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3454, что и произошло, но только для GTK4, согласно https://bugzilla.mozilla.org/show_bug.cgi?id=1568722. Firefox (где я особенно замечаю отсутствие этой функции), похоже, использует GTK3 для используемых API GDK. В теме также говорится, что
- жесты удержания не будут портированы обратно на GTK3, https://bugzilla.mozilla.org/show_bug.cgi?id=1701123
- FF не будет портирован на GTK4 в обозримом будущем, https://bugzilla.mozilla.org/show_bug.cgi?id=1701123
поэтому, похоже, нам придется подождать еще довольно долго, по крайней мере, в FF. Но приложения GTK4, которые вы перечислили, скорее всего, будут оснащены возможностью отмены кинетической прокрутки с помощью удержания в будущем. Я даже замечаю, что просмотр “Проверьте свои настройки” в приложении настроек Gnome уже поддерживает отмену с помощью удержания.
Это исправлено в Firefox 134 благодаря #1568722.
Ситуация была, как в ответе Себастьяна, но они смогли обойти GTK и получить событие удержания непосредственно из libinput.
Чтобы это работало так, как ожидается, возможно, потребуется обновить другие части вашего стека. Я вижу, что это работает у меня (не на Ubuntu) с Firefox 134 на Wayland (sway 1.10).
.
Ответ или решение
Вопрос о том, как остановить инерционную прокрутку на сенсорной панели, когда пальцы снова касаются трекпада, является важной проблемой для пользователей, находящихся в экосистемах, где подобная возможность еще не реализована, включая многих пользователей Ubuntu 20.04 с окружением рабочего стола GNOME. Это неудобство связано с повсеместной привычкой пользователей мобильных устройств, где остановка инерционной прокрутки возможна при касании экрана.
Теория
В контексте Linux и GNOME, контроль над поведением прокрутки в основном осуществляется библиотеками, управляющими устройствами ввода. Библиотека libinput
играет здесь ключевую роль, поскольку она отвечает за управление устройствами ввода, включая сенсорные панели. В предыдущих версиях не существовало механизма для остановки прокрутки при повторном касании трекпада. Однако последнее обновление включило поддержку «жестов удержания», которые позволяют реализовать эту функцию.
Библиотека GTK, используемая для разработки графических интерфейсов в GNOME, также должна поддерживать данную функциональность. В соответствии с последними изменениями, поддержка жестов удержания была добавлена в GTK4. Однако многие приложения, такие как Firefox, по-прежнему используют GTK3 из-за сложностей и затрат, связанных с миграцией к более новой версии GTK.
Пример
Рассмотрим ситуацию с реализацией данной возможности в таких приложениях, как Firefox. Долгое время Firefox не обладал данной функциональностью из-за своей зависимости от GTK3. Но разработчики нашли способ получить события удержания непосредственно из libinput
, что позволило обойти ограничения, накладываемые GTK3. Это изменение планируется включить в будущие версии Firefox, начиная с версии 134. Таким образом, механизм взаимодействия между libinput
и приложениям был расширен, несмотря на то, что полная миграция на GTK4 все еще в планах на будущее.
Примеры реализации данной функциональности можно также найти в тестовых окружениях приложений, использующих GNOME Settings, где были проведены успешные испытания жестов удержания, позволяющие остановить инерцию прокрутки.
Применение
Чтобы достичь желаемого эффекта в Ubuntu 20.04 с GNOME, вам необходимо убедиться в наличии следующих условий:
-
Обновление системы:
- Убедитесь, что все пакеты вашей системы обновлены до последних версий. Это особенно важно для библиотек
libinput
и GTK, поскольку они влияют на поддержку специфичных жестов и поведения прокрутки.
- Убедитесь, что все пакеты вашей системы обновлены до последних версий. Это особенно важно для библиотек
-
Переход на новейшие версии приложений:
- Если возможно, постарайтесь использовать версии приложений, которые поддерживают последние изменения. К примеру, использование Firefox версии 134 и выше обещает решить проблему прокрутки через непосредственное взаимодействие с
libinput
.
- Если возможно, постарайтесь использовать версии приложений, которые поддерживают последние изменения. К примеру, использование Firefox версии 134 и выше обещает решить проблему прокрутки через непосредственное взаимодействие с
-
Использование Wayland:
- Рассмотрите возможность использования Wayland вместо X11, если ваша текущая конфигурация это позволяет. Платформа Wayland лучше интегрируется с новейшими возможностями
libinput
, обеспечивая более современное управление вводом с устройств.
- Рассмотрите возможность использования Wayland вместо X11, если ваша текущая конфигурация это позволяет. Платформа Wayland лучше интегрируется с новейшими возможностями
-
Настройка конфигураций:
- Проверьте настройки
libinput
, которые можно изменить в конфигурационных файлах системы. Убедитесь, что все жесты и действия, связанные с прокруткой, настроены в соответствии с вашими предпочтениями.
- Проверьте настройки
В зависимости от конкретных ограничений вашего оборудования и программного обеспечения, некоторые вещи могут потребовать более детальной настройки или даже ожидания выхода необходимых обновлений. Однако с появлением поддержки в libinput
и новейших приложениях, описание вашего метода становится все более доступным для внедрения в различных системах.
Постоянно следите за обновлениями вашей системы и прикладного программного обеспечения, чтобы воспользоваться всеми преимуществами новых технологий в области управления устройствами ввода и пользовательских интерфейсов.