Qutebrowser: режим каретки
qutebrowser – интернет браузер с минималистичным дизайном и управлением в стиле vim. Написан на python с использованием Qt. Для отображения веб содержимого используются Qt классы QtWebkit и QtWebengine. Автором является Флориан Брухин.
Проблема
Несколько лет назад, когда браузер работал только с использованием движка Webkit, я уже разработал функционал управления кареткой для выделения текста клавиатурой. С переходом на Webengine этот функционал работать перестал.
Это ограничивало меня к переходу на новый движок. Изза прекращения разработки движка Webkit у меня возникали проблемы правильного отображения многих тяжёлых веб страниц. Больше года у меня висела задача внедрить функционал каретки в новую версию браузера. Наконец, выделив немного времени, решение проблемы сдвинулось с места.
Решение
Webengine основан на Chromium’е. Поэтому, по совету основного разработчика, я обратился к реализации каретки для Chrome браузера. Таким образом, решением задачи являлось портирование расширения caretbrowsing для Chrome в кодовую базу Qutebrowser’а. Причём портировать пришлось только код визуализации каретки. Её положение регулируется с помощью Web API Selection.
Так же как и в предыдущей реализации каретка позиционируется в верхней текстовой строке браузера, либо в месте выделенного текста. Вообще, позиционирование каретки это ещё одна проблема, которую мне хотелось бы решить.
Есть пару идей для улучшения опыта работы с возможностью выделения текста с помощью клавиатуры:
- позиционирование каретки с помощью hint’ов, что-то вроде easymotions расширения для vim;
- функционал кнопок
f
иt
в vim, для прыжков каретки. Опять же, в стиле расширения clever-f для vim.
Хотя, надо признаться, я пока не вижу пути реализации этих идей. А учитывая дефицит времени, взяться за них я смогу не скоро.
Несколько дней назад, пулл реквест, на слияния моего кода был принят. Время обновляться.