По работе пришлось провести серию удаленных встреч с коллегой из Швейцарии. Он должен был кое-что настроить на тестовом контуре под моим наблюдением, чтобы попрактиковаться в настройке и потом выполнять похожие задачи самостоятельно. Соответственно, созвонились через Google Meet, он показал свой экран, а мне надо объяснять, что, собственно, надо настраивать, и контролировать процесс.
Проблема: у меня ноутбук 13" с Full HD экраном (масштаб шрифтов 125%), у него десктоп с монитором более высокого разрешения, и буквы в его терминале и браузере для меня слишком мелкие. И еще Google Meet не умеет честный полноэкранный режим и отъедает часть разрешения на заголовок «Коллега is presenting» вверху и панель с кнопочками внизу. Собственно, приходится напрягать глаза, что нездорово.
DE у меня - Cinnamon, у него какой-то tiling WM. Каждый раз просить коллегу сделать шрифты покрупнее не хочется, поэтому я исследовал возможность внедрения какого-нибудь костыля локально, чтобы увеличить часть экрана.
В Cinnamon встроенная экранная лупа на самом деле есть. Ее можно включить через Control Center: Accessibility > Visual > Enable zoom. Тогда через Alt + прокрутку вверх можно увеличить часть экрана. Вот только это не помогло. Были буковки из горстки пикселей, стали буковки из горстки увеличенных пикселей. Оказывается, я не только напрягал глаза, но и мозги, чтобы додумывать, что это там написано. То есть, оказывается, уже на этапе отрисовки картинки с экрана коллеги на мой экран (а может, еще и при передаче картинки) происходит серьезная потеря информации.
Иными словами, чтобы экранная лупа стала полезной, Chromium должен отрисовывать Google Meet в буфер с разрешением, большим, чем разрешение моего экрана. Этого можно добиться через xrandr
:
xrandr --output eDP-1 --scale-from 3840x2160
Сработало, но ценой мелких букв уже у меня.
А на самом деле эта функциональность встроена в Cinnamon, и команду xrandr
вручную вводить не надо. Называется эта функциональность Fractional Scaling, и Cinnamon при ее использовании также заставляет графические тулкиты рисовать UI в большем масштабе. Логика такая: выбранный пользователем масштаб округляется вверх до ближайшего целого (125% -> 200%), GTK настраивается на отрисовку с целочисленным масштабированием в виртуальный буфер, который средствами xrandr затем уменьшается до настоящего размера экрана. С точки зрения приложений, разрешение экрана составляет 3072x1728, и буквы на экране коллеги уже отображаются как буквы, а не как горстка пикселей. Лупе есть, что увеличивать, а мне не приходится напрягать ни глаза, ни мозги.
Ну и напоследок, можно задать нестандартный масштаб экрана в ~/.config/cinnamon-monitors.xml
в теге <scale>
в секции <logicalmonitor>
. Например, при значении 1.0000001
срабатывает округление вверх до 200%, а потом масштабирование вниз, по сути, на те же 200%. С точки зрения приложений, разрешение экрана составляет 3840x2160, и лупа берет такую детальную картинку в качестве исходной, а с точки зрения пользователя, изменений практически нет. Поэтому я эту настройку так и оставил. Единственный обнаруженный негативный момент - в mpv появляется тиринг.
P.S. Трюк со scale 1.0000001 в ~/.config/monitors.xml
также работает в Gnome. Но экранная лупа там сделана менее удобно, чем в Cinnamon. Вызывается через Alt + Super + 8, и надо настроить следование за курсором мыши и половинный размер в параметрах доступности. Неудобно, что лупа бывает только в пол-экрана или во весь экран, но не в четверть экрана.