Как решить проблему неправильного прокрутки после нажатия Alt+Tab?

Вопрос или проблема

большую часть времени я нажимаю Alt+Tab (переключение окон), перехожу из браузера (chrome) в Visual Code и наоборот, прокрутка мышью ведет себя неправильно, она прыгает куда-то на странице, либо сильно вниз от текущей позиции прокрутки, либо сильно вверх, есть мысли, в чем дело?

Установка и запуск imwheel решает проблему для меня.

$ sudo apt-get install imwheel
$ imwheel
INFO: imwheel started (pid=80085)

Его нужно запускать при каждом загрузке (или добавить в стартовые приложения).
pgrep -lf imwheel чтобы увидеть, запущен ли он; вы можете остановить его с помощью pkill imwheel.

/!\ Это отключает зум с помощью Ctrl + колесо в приложениях (Firefox, Chromium, LibreOffice, PDF reader…)
(Возможно, настройка в imwheelrc могла бы это исправить)

То, что вы описали, все еще является неразрешенной ошибкой. Когда прокручиваете в одном окне, его прокрутка буферизуется и повторяется в другом окне после Alt+Tab. Как вы показали, это происходит между Chrome и VS Code.

К счастью, есть расширение GNOME, которое быстро решает эту проблему: Alt+Tab Scroll Workaround. Просто активируйте его, и проблема должна быть решена.

Я разработал это расширение, чтобы, среди прочего, обойти проблему imwheel с «ступенчатой» прокруткой при использовании сенсорной панели ноутбука.

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

Это ошибка в исходном коде Chromium. Посмотрите https://bugs.chromium.org/p/chromium/issues/detail?id=608246#c68 для шагов по воспроизведению. Есть длительная дискуссия по этой проблеме на https://github.com/microsoft/vscode/issues/28795, и основная причина объясняется в блоге https://who-t.blogspot.com/2012/06/xi-21-protocol-design-issues.html из 2012 года, который объясняет, что первое событие прокрутки после переключения окон следует игнорировать. В GTK это решение реализовано для всех приложений GTK, но Chromium использует собственную реализацию, в которой не хватает этого решения.

Были комментарии, что это не происходит с Wayland, что логично, потому что ошибка дизайна находится в протоколе X11 XI. И если у вас графический процессор NVIDIA, то Wayland не является хорошим вариантом, потому что драйверы NVIDIA иногда нестабильны на Wayland.

Я решил эту проблему, войдя с конфигурацией Ubuntu на Wayland вместо просто Ubuntu.
Что-то вроде этого. Качество изображения низкое, но суть будет ясна.

Это значит, я использую Wayland вместо xorg, но изменение файла /etc/gdm3/custom.config не решает проблему, как указано здесь.

Если вы не слишком привязаны к GNOME, переключение на Unity решает проблему прокрутки на мыши и сенсорной панели:

sudo apt install ubuntu-unity-desktop

Источник: https://itsfoss.com/use-unity-ubuntu-17-10/#:~:text=Switch%20from%20GNOME%20to%20Unity%20in%20Ubuntu%2017.10,option%20to%20switch%20to%20Unity


Чтобы восстановить естественную прокрутку и другие функции трекпада, также установите драйверы synaptics:

sudo apt install xserver-xorg-input-synaptics

Эта проблема меня сводила с ума, поэтому добавляю быстрое решение:

sudo apt install gnome-shell-extension-manager

Открыть “менеджер расширений”

Перейти в “вкладку Обзор”

Искать “Alt+Tab Scroll Workaround”

Нажать “установить”

Перезапустить оболочку gnome (выйти, alt+f2 -> r и т.д.)

Проблема исчезла!

.

Ответ или решение

Проблема некорректного поведения прокрутки после использования сочетания клавиш Alt+Tab может вызывать значительные неудобства для пользователей, переключающихся между приложениями, как например, Chrome и Visual Studio Code. Давайте рассмотрим данную проблему более детально, потенциальные причины ее возникновения и возможные решения.

Теория

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

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

Пример

Рассмотрим пример на платформе Linux. В ранее опубликованных обсуждениях пользователи отмечали, что после переключения с браузера Chrome на Visual Studio Code и обратно, прокрутка начинает себя вести некорректно. Решением, которое удобно для многих пользователей, стало использование утилиты imwheel. Настройка состоит из установки imwheel и его запуска. Однако, стоит отметить, что это решение может вызывать отключение некоторых функциональностей, например, прокрутки с зажатым Ctrl.

Помимо этого, на GNOME существует расширение, которое специально разработано для обхода этой проблемы, — "Alt+Tab Scroll Workaround". Установка этого расширения обычно устраняет проблему.

Применение

  1. Использование imwheel:

    • Установите imwheel с помощью команды sudo apt-get install imwheel.
    • Запустите утилиту посредством команды imwheel.
    • Для проверки работы утилиты используйте команду pgrep -lf imwheel, а для завершения — pkill imwheel.
    • Чтобы imwheel запускался автоматически при загрузке системы, добавьте его в автозагрузку.

    Однако, у imwheel есть недостатки, такие как невозможность использования масштабирования при прокрутке с зажатым Ctrl.

  2. Использование GNOME-расширения:

    • Установите расширение "Alt+Tab Scroll Workaround" при помощи GNOME Shell Extension Manager.
    • После установки может потребоваться перезапустить оболочку GNOME (например, через выход из системы).
  3. Переключение на Wayland:

    Поскольку проблема связана с протоколом X11, использование Wayland может устранить её. На многих системах возможен выбор при входе в систему, чтобы использовать сессию Wayland вместо X11.

  4. Смена окружения рабочего стола:

    Если проблема продолжает возникать, можно рассмотреть переключение на другое окружение рабочего стола, например, Unity, которая, согласно отзывам, не страдает данной проблемой. Установка Unity возможна через команду sudo apt install ubuntu-unity-desktop.

  5. Использование драйверов synaptics:

    Для восстановления естественной прокрутки и других функций тачпада можно установить драйверы synaptics: sudo apt install xserver-xorg-input-synaptics.

Заключение

Проблема прокрутки после использования Alt+Tab в среде Linux остаётся актуальной для многих пользователей и связана с особенностями реализации протоколов ввода. Подходы к её решению зависят как от специфики используемого окружения рабочего стола, так и от индивидуальных предпочтений пользователей. Независимо от выбранного решения, важно понимать, какие изменения в поведении системы могут быть вызваны внедрением этих решений, и готовить систему к возврату к прежнему состоянию в случае необходимости.

Оцените материал
Добавить комментарий

Капча загружается...