HiDPI в Linux, в частности в KDE

Мониторы разрешением в 4K перестали считаться уделом буржуев и понемногу входят в жизнь простого люда. Равно как и мониторы других высоких разрешений. Ещё пару лет назад я про поддержку таких мониторов в Linux говорил, что «скорее нет, чем да». Поддержка вроде была, но количество глюков с ней делало весь процесс бессмысленным, и очень хотелось переключить монитор на разрешение поменьше. Чего некоторые 4K мониторы не позволяют в Линуксе делать до сих пор. Дело в том, что драйвера NVidia при подключении по DisplayPort наивно верят EDID монитора, и если там прописано только одно максимальное разрешение — не позволяют ставить никакое другое. Надо либо откатываться на Nouveau, либо настраивать HiDPI. Будем настраивать! (Статья рассчитана на человека, знающего основы Linux и что такое X сервер).

О DPI вообще и HiDPI в частности


DPI (dots per inch) — это величина, говорящая, сколько пикселей экрана приходится физический сантиметр его площади. Если монитор работает в неродном разрешении, то речь идёт о виртуальных пикселях разрешения. С античных времён и до совсем недавно, величина в 96 DPI была стандартом — то есть, обычные мониторы если и отличались от неё, то настолько, что этим можно было пренебречь. 120 DPI когда-то была максимальной величиной, которую обычно тестировали.

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

Словом HiDPI называют ситуацию на мониторах с DPI>160. DPI операционной системы не обязательно равна DPI экрана. Напротив, DPI системы можно крутить для того, чтобы делать интерфейс крупнее-мельче. Мало того, системы различают DPI всего, DPI шрифтов и DPI, отдаваемую полноэкранным приложениям.

А как у других?


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

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

Windows позволяло крутить DPI шрифтов всегда. Вот только DPI графики от этого не менялась. Отдельные элементы меняли размер оттого, что привязаны к размеру шрифта, или экрана. Но размеры, заданные в пикселях, от этого не сдвигались. В Win 10, наконец, появилась нормальная поддержка HiDPI, но только для программ, написанных для Win 10. Для остальных написан костыль, делающий просто графическое увеличение окна программы с трансляцией положения кликов. Увеличение делает окно размытым, а трансляция работает криво. Хуже то, что это увеличение пробует запуститься для полноэкранных приложений тоже, поэтому, чтобы поиграть, его нужно выключить, а чтобы поработать — включить.

А в Linux?


А в Linux, как всегда, вакханалия. У нас есть два мажорных набора для GUI (Qt и GTK), каждый из которых относительно недавно пережил переписывание с нуля, поэтому до сих пор в ходу старая и новая версия. Плюс несколько наборов поменьше(EFL, wxWidgets). Плюс несколько языков, которые используют для этого свои средства, например Java. Плюс несколько древних библиотек, на которых уже никто не пишет, но нужный софт на них ещё бывает. (GTK 1, Motif) Даже если X сервер и оконный менеджер правильно обрабатывают DPI, не факт, что весь этот зоопарк воспримет эту информацию и будет работать нормально.

Можно много за что не любить Ubuntu с Unity, но одну вещь я должен сказать. Я не знаю, как в Unity настраивать HiDPI потому, что всё всегда работало само из коробки. Все остальные DE: Cinnamon, KDE, XFCE, тоже имеют соответствующий флажок. Этот флажок настраивает саму DE, приложения, написанные на её главной библиотеке(только новой версии) и пару флагов для Qt/GTK. А остальное всё побоку. В результате, например, в плеерах кнопка Play остаётся крошечной. И значки в трее маленькие, но не все. Годик за такой системой — и человек в Overwatch играет только за МакКряка, потому что у человека попиксельная меткость на мышке и он всех ненавидит.

Я буду рассказывать, как настроить KDE. Не так, как по инструкции, а так, чтобы работало всё. Deadbeef, Yakuake, Blender. Я проверял это, в основном, в Арче. В других дистрибутивах может быть, что что-то из того, что я опишу, уже сделано или сделано по-другому. Думайте головой или пишите в комментариях — разберёмся.

Настройка Иксов


Первым делом нужно проверить, а знают ли Иксы, что у нас HiDPI? Для этого нам нужна софтинка xdpyinfo — она есть в репе. Установите, если не установлено, родное разрешение монитора, (и перезапустите Иксы). Запускайте в консоли внутри иксов (то есть не по Ctrl-Alt-F*).

xdpyinfo | grep -B 2 resolution
screen #0:
  dimensions:    3840x2160 pixels (621x341 millimeters)
  resolution:    157x161 dots per inch

Видим три пары значений — разрешение экрана, реальные размеры экрана, и DPI (отдельно по вертикали и горизонтали) Если все три пары похожи на правду, то отвернитесь от монитора и воздайте хвалу высшей сущности по вашему выбору; ибо если же xdpyinfo возвращает ерунду и DPI=96, значит ваша высшая сущность посылает вам мытарства.

Самые частые причины неправильной DPI — кривые EDID и фирменные дрова видеокарты. Про видеокарты ATi не скажу ничего, так как сторонюсь их. Не то, чтобы они чем-то плохи, но ATi + Linux = лишние проблемы. C Intel всё само должно работать. NVidia же до недавнего времени упорно поганила DPI. Сначала отключите G-sync в nvidia-settings, всё равно никакой композитный менеджер с ним не дружит. Если не помогло, включите KMS. Kernel Mode Setting — это метод, по которому разрешением экрана заведует ядро Linux, а не Иксы. Кроме прямого назначения, это позволяет обойти много глючного кода 20-летней давности в Иксах. К сожалению, процедура включения KMS на фирменных драйверах Nvidia дистрибутивозависима, поэтому опишу только в общих чертах. Нужно добавить модули nvidia, nvidia_modeset, nvidia_uvm, nvidia_drm в initramfs, пересобрать его, а затем добавить ядру параметр nvidia-drm.modeset=1. Гуглите.

Если в предыдущем абзаце вы ничего не поняли, то можно просто отказаться от фирменных дров NVidia и использовать пока что Nouveau — там KMS из коробки. В Кубунте это делается через программу, управляющую драйверами.

Если всё вышеописанное не помогло и xdpyinfo по прежнему пишет фигню, то, может быть, виноваты не драйверы видео, а кривые EDID монитора. Сначала запустите в той же консоли xrandr --dpi 192. И запустите какую-нибудь программку. Если она стала больше, то способ работает. Вставляйте эту команду в .xprofile и перезапускайте Иксы. В дальнейшем я буду много говорить про .xprofile. Это файл в домашней папке каждого пользователя, который настраивает работу графических приложений. Если его нет — просто создайте его: touch ~/.xprofile. Если всё заработало — Ура! Если нет, сначала проверьте, что в вашем дистрибутиве из KDE не вырезали поддержку .xprofile. Для чего добавьте туда что-то вроде touch ~/net_ne_vyrezali и перезагрузите ещё раз.

Всё равно не работает? Пропишем DPI в Иксы вручную. Создайте, если уже нет, файл /etc/X11/xorg.conf.d/90-monitor.conf и в него напишите:

Section "Monitor"
    Identifier             "Prikolny monitor"
    DisplaySize            286 179    # В миллиметрах
EndSection

А для фирменных дров Nvidia

Section "Monitor"
    Identifier             "Prikolny monitor"
    Option                 "DPI" "192 x 192"
EndSection

Обратите внимание, что везде принудительное значение DPI я ставлю в 192, точнее в любое значение, кратное 96. Оно работает точнее, чем реальная DPI, потому что гладиолус. Тут работает парадокс дизайнера:

  • Если DPI кратна 96, лучше рендерятся шрифты в приложениях, работающих с текстом. Особенно в приложениях на Cairo.
  • Если DPI равна настоящей DPI монитора, то масштаб 1:1 на экране будет иметь тот же размер, что и на бумаге.

Глупое название монитора я написал, чтобы во всех графических утилитах было видно, что настройка наша читается и пробует примениться.

Сохраняем, перезапускаем Иксы и ликуем. Или пьём горькую и ждём, когда Wayland доделают.

Настройка в KDE


Итак, наконец, настраиваем HiDPI в KDE правильно. В меню → System Settings → Display and Monitor в самом внизу есть большая кнопка Scale Display. По её нажатию вылезает окно с единственным слайдером Scale. Теперь внимание! Если вам так и не удалось настроить DPI в иксах, закрывайте эту статью, ставьте значение ползунка по вкусу, и радуйтесь тому, что работает. А что не работает — смиритесь (Это обычно Хром, Скайп, QtCreator, Yakuake, GTK).

Если же DPI в Иксах у вас правильная — то не трогайте этот ползунок! В идеале, даже, не крутите его туда-сюда, потому что, кажется, он где-то что-то пишет при этом. Закрывайте это окно нафиг. Согласно статье в блоге создателя этого ползунка (соль в комментах) он переопределяет системную DPI и ставит ещё несколько переменных. Проблема в том, что это переопределение видят не все программы, и получается каша. Поэтому мы не будет трогать ползунок, а всё настроим вручную.

Вообще, на данном этапе, если DPI правильная, то всё должно быть уже достаточно крупно. Проходим в System Settings → Fonts. По умолчанию там стоит размер шрифта 11. Если для достижения гармонии вам хватит 10-14 — ставьте, приложения подтянутся. Если больше или меньше — имеет смысл попробовать подшаманить системную DPI как указано выше. Ниже стоит поле Force Font DPI. Можете его подкрутить, если хотите, но учтите, что не все приложения читают эту величину. Даже не так. Некоторые приложения читают эту величину не всеми своими частями. Так что если попытаться здесь исправить системную DPI в 96, будет каша. А вот поднять DPI 167 монитора до идеальных 192 можно.

Закрывайте окно Fonts. Вообще, сейчас самое время перезагрузить Иксы и посмотреть, что получилось. Должны работать и иметь удобный размер KDE, все его настройки и приложения. Панель плазмы, кстати, сама не вырастет. Но она векторная, и её всегда можно растянуть — кликните бутерброд слева и появятся кнопки. Так же размер в Долфине надо поставить вручную. Если же где-то ещё в KDE-приложениях кнопки и панели слишком мелкие, надо пошаманить размеры иконок в System Settings → Icons.

Настраиваем другие приложения


Chrome, Atom и другие


Эти приложения читают DPI напрямую из откуда получится и следуют ей как рыцарь кодексу. Если они читают что-то не то, то и выглядеть будут как-то не так. Обычно они игнорируют настройки в System Settings и следуют той DPI, которую возвращает xdpyinfo. Если там 96, то для Хрома можно использовать аргумент --force-device-scale-factor=2, для Атома есть кривой плагин hidpi в официальной репе, для других программ свои костыли.

QtCreator, Yakuake, и другие приложения на Qt5


Вообще, они должны работать. Но у QtCreator бывает не масштабируется полоса инструментов, а у Yakuake полоса с табами. Причина в баге и в переменной окружения QT_AUTO_SCREEN_SCALE_FACTOR. Когда она равна 1, Qt5 пытается сам найти значение DPI, а когда 0 — ждёт, что это значение ему дадут в других переменных. Баг в том, что KDE передаёт фигню.

Короче, нужно этим приложениям установить переменную QT_AUTO_SCREEN_SCALE_FACTOR=1 и всё заработает. Это можно сделать либо выборочно, либо глобально. Выборочно — в Menu Editor. Только не забудьте потом добавить заново приложение на панель и в автозапуск. Это нужно потому, что .desktop записи копируются, а не линкуются. Второй вариант — установить эту переменную всесистемно, в .xprofile или даже /etc/environment, или куда там в вашем дистрибутиве переменные пишут. Тут два нюанса. Во-первых, KDE принудительно сбрасывает эту переменную в 0 в скрипте /usr/bin/startkde. Его придётся открыть, и отредактировать, закомментив строчку #export QT_AUTO_SCREEN_SCALE_FACTOR=0. После этого нужно не забывать повторять это исправление каждый раз, когда KDE обновляется. Второй нюанс в том, что разработчики KDE предупреждают в комментах: установка этой переменной глобально может привести к тому, что некоторые приложения Qt5 будут увеличены дважды. Но у меня этого не происходит. Далее, если системная DPI неправильная, надо установить переменную QT_SCALE_FACTOR=2 в .xprofile.

Не забудьте, что переменная QT_DEVICE_PIXEL_RATIO устарела. Если вы её где-то ставили, то надо убрать.

Приложения на Qt4


Эти приложения, в общем, плохо умеют HiDPI. Но не всё потеряно. Qt4 создаёт очень гибкий интерфейс. Запускайте qtconfig-qt4. Сначала смотрите шрифт и выставляйте удобный размер. Затем на вкладке Interface найдите костыль под названием «Global strut» (в переводе — глобальный костыль. ) Эта настройка означает, что инстансы QWidget и его потомков не могут быть меньше этого размера в пикселях, что бы с ними не делали. C помощью Minimum Width можно задать ширину скроллбаров, а с помощью Minimum Height — высоту панелей инструментов.

Приложения на GTK3


Здесь всё просто. Нужно установить в .xprofile две переменные:

GDK_SCALE=2 Командует GTK увеличить всё в 2 раза. Значение должно быть целым. GDK_DPI_SCALE регулирует увеличение шрифтов. Если после GDK_SCALE шрифты получились огромные, надо поставить GDK_DPI_SCALE=0.5

Приложения на GTK2


Здесь всё сложно. GTK2 вообще никак не умеет HiDPI. Но есть хак. Софтина под названием Oomox является генератором тем (скинов) для GTK. В том числе, с её помощью можно собрать такую тему под GTK2, которая будет имитировать HiDPI. Или найти такую тему готовую.

Приложения на Qt3, Gtk1, Motif


Здесь всё совсем сложно. Есть два возможных хака. Во-первых, можно воспользоваться способностью Kwin увеличивать весь экран. System Settings → Desktop Effects → Desktop Effects → Zoom. Средняя кнопка слева — это настройки, в том числе клавиши для включения и выключения. Второй способ — это запустить приложение в сервере удалённого рабочего стола и локально к нему подключиться. Я просто вставлю ссылку на скрипт, потому что настраивать это — вопрос отдельной статьи.

Приложения на Java


Более крутые и коммерческие программы на Java ведут себя как Хром: читают DPI из Иксов и следуют ей. Программы попроще можно исправить одним из двух аргументов: -Dsun.java2d.uiScale=2 увеличивает интерфейс в 2 раза, а -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel велит ей пользоваться для отрисовки размерами из GTK. Напомню, что в .xprofile можно создать переменную export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'. Приведённый пример включает сглаживание в шрифтах и GTK.

Ну, вот так как-то.

Комментарии 71

    –1
    Завидую людям, у кого есть время на подобные вещи. Я уже давно понял, что компьютер должен просто работать, а не тратить время на его настройку. Поэтому купил мак, а эта вакханалия на десктопном линуксе в перспективе не закончиться никогда, судя по всему…
      +4
      Как только Макось можно будет поставить на Beaglebone — соглашусь. А пока что боярам — боярово.
        +1
        А зачем ее туда ставить? В том числе и на малинку, например. Смысл какой?
          +5
          Ставить её туда нельзя и смысла в этом нет никакого. Поэтому одной Макосью на все случаи жизни не обойдёшься.
      • НЛО прилетело и опубликовало эту надпись здесь
          0
          Аналогично. И все работало ещё даже пару месяцев назад на kde4, который у меня тогда был.
          +2

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

            –1
            Hackintosh.
              0
              Некоторым образом противоречит
              Я уже давно понял, что компьютер должен просто работать, а не тратить время на его настройку
              , не кажется?
                0
                Как ни странно нет, у меня макбук и большой ПК, Hackintosh. Настроил его 3 года назад, работает как часы, обновляется как макбук без проблем. Только не работает iMessage и iCloud. Но я ими не пользуюсь. Именно с Хака, у меня начался переезд с Fedora, после очередных апдейтов.
                  +1
                  если используете clover в качестве загрузчика, можно за 10 минут настроить icloud
                  0
                  Сложность установки хакинтоша на среднестатистическое железо на уровне установки винды.
                    +1
                    Сложность установки начинается, когда у вас видео не от intel, а вайфай — от них.
                  +2
                  Завидую людям, у кого есть время на подобные вещи. Я уже давно понял, что компьютер должен просто работать, а не тратить время на его настройку. Поэтому купил мак, а эта вакханалия на десктопном линуксе в перспективе не закончиться никогда, судя по всему…
                  –1
                  Наценка — да. А вот на счет железа не согласен. В ноутах ставят топовые 4х ядерные процы с бустом под 4 ГГЦ. Часто нормальные люди ставят в ноут 64ГБ? Сейчас норма 8-16ГБ. Сам сижу на 3ГБ.
                    +2
                    У делла за цену макбука можно с 64Гб и с Xeon-ом машинку приобрести.
                      0
                      А можно линку на это чудо машину?
                        +1
                        M7710, например.
                          –1
                          Прошу прощения но там за подобную подобную конфу цена начинается с 4к для обычных людей. Что конечно стоит своих денег, но противоречит вашему утверждению.

                          Я конечно соглашусь с тем что маки, особенно последних серий сильно переоценены, но конкуренты первого эшелона тоже выставляют не самые милосердные цены.
                            +1

                            Я сейчас в конструкторе по ссылке натыкал галочками железку с 64Гб памяти, Xeon-ом, 4K-дисплеем и полутерабайтным SSD за $2,859.


                            Зайдём на сайт эппла и смотрим макбук такой же конфигурации, но ограниченный 16Гб памяти и Core i7. Видим минимальный ценник $2799.


                            То есть, утверждение про машинку с 64Гб и с Xeon-ом по цене макбука в силе.

                              –3
                              Угу. Со учетом дискаунтов — %30 так и получается. По партнерской программе. Не корректное сравнение. См цену Starting Price
                              0

                              По поводу дорого. Если не гоняться за совсем уж топовыми конфигурациями, то недавно нужен был ноут на подмену вышедшему из строя, за 40 килорублей взял на горбушке старенький M4600. Core i7 2760QM и nVidia Quadro 2000M в комплекте, возможность поставить 32Гб RAM + 2 HDD + mSATA SSD наличествует.

                                –2
                                Не надо мне доказывать. Я могу взять евроком круче и в 1.5 раза дешевле. Замечательный настольный гробик получится. Имеет свою аудиторию.

                                Неоднократно уже было посчитано. 1 в один железо у делла асуса или подобных, эплл обходится дороже в на 200-300$ что не мало, но не критично для топовых лаптопов.

                                Исключение только последне поколение с несуразным тачбаром.
                      0
                      Да не такое уж плохое железо там. 32Гб оперативки в ноуте конечно нужны кому-то, но тут скорее интел подгадил. На десктопе же особых проблем нет. Внешние устройства хранения никто не запрещает подключать, причем работать они будут на весьма приличных скоростях.
                        +1
                        У внешних устройств хранения есть фатальный недостаток — лапша из проводов.
                          –1
                          Множество решений есть. NAS, WiFi диски, доки для нескольких жестких дисков и так далее. Редко когда реально требуется оперативный доступ к большим объемам данных. В большинстве случаев достаточно встроенного SSD/HDD и пары внешних дисков + облако. А вот вес ноутбука, его габариты, шумность, устойчивость к механическим воздействиям — существенно улучшаются при отказе от дополнительных механических дисков и это на мой взгляд куда более важные для мобильного устройства характеристики.
                          Конечно все зависит от задач. Я занимаюсь фотографией, у меня несколько внешних жестких дисков забиты архивами фото и бэкапами. При этом терабайтный жесткий диск аймака не используется, он постоянно запаркован. Хватает основного SSD на 512. В ноуте вобще сейчас стоит ссд на 128 и как-то не жалуюсь на нехватку места.
                        0
                        Не сказал бы. Потеря раскладки клавиатуры при переключении между XCode и скайпом заставляет грустить. Или навиация по меню приложений с клавиатуры у Windows горздо удобнее.
                        +1
                        А я не завидую людям у которых есть мак. Была необходимость изменить системные шрифты — не получилось без установки сторонних утилит.
                        +2

                        Почему нигде не упоминается про Gnome-Shell? Он и под Wayland прекрасно работает и в hidpi умеет, а в статье про него ни слова.

                          +2

                          Я думаю, дело в том, что статья — о настройке HiDPI в KDE. Поэтому в ней не упоминаются Gnome Shell, Cinnamon, XFCE и другие. Все DE включая самые минималистичные более-менее внедрили HiDPI у себя — то есть в своём интерфейсе и поддерживаемых приложениях. Я же писал о случаях багов и неподдерживаемых приложениях.

                          0
                          Спасибо, что поделились, пойдёт в закладки. Мне с моими -5 смысла покупать 4к мониторы нет, но знать такие вещи надо :)
                          • НЛО прилетело и опубликовало эту надпись здесь
                              0
                              Очки есть, без них никуда. Дело в том, что я даже в очках на обычном рабочем расстоянии (70-80 см) не вижу разницы между 2к/4к и FHD на 22-23 дюймах. Вообще не вижу, ни на тексте, ни на картинках.
                          • НЛО прилетело и опубликовало эту надпись здесь
                              +2
                              Из коробки? А вы уверены? Давайте проверим! Поставьте и включите три прикладных программы: FreeMind (интерфейс на Java), Deadbeef (в настройках можно переключать между Gtk2 и Gtk3, нас интересует Gtk2), QtCreator (наверное работает, это KDE-специфичный косяк). Всё работает? Иконки на панели инструментов в меру крупные? Шрифт из кнопок нигде не вылезает? Скроллбары шире миллиметра? Потому что я рассказывал, как справиться именно с этими приложениями, а так же с кривыми EDID. При нормальных EDID обычные приложения и в KDE работают «из коробки».
                                0

                                Уточнение, подумав: FreeMind плохой пример, он игнорирует аргументы. А ещё иконки в Swing не масштабируются никак. Лучше посмотреть на jEdit — там текстовых менюшек больше, а для иконок можно загрузить HiDPI-тему.

                                • НЛО прилетело и опубликовало эту надпись здесь
                                    0

                                    Чтобы QtCreator завёлся, QT_AUTO_SCREEN_SCALE_FACTOR=1 qtcreator в консоли. Должно стать просто отлично всё.
                                    jEdit можно перключить на тему GTK и должно укрупниться всё кроме тулбара — он, увы, всегда по высоте иконок.

                              –1

                              А потом пользователи (Phoronix, например) удивляются, почему CEO Cannonical подписался на Gnome, а не KDE. Даешь каждому из них по HiDPI монитору!

                                0
                                >Надо либо откатываться на Nouveau
                                А на AMD вопрос отката на свободный драйвер не звучит риторически.
                                  +1
                                  Какие нюансы в случае использования нескольких мониторов с разным DPI? Например HiDPI у ноутбука и обычный у внешнего экрана?
                                    0
                                    Тоже интересует этот вопрос. На работу хожу со своим ноутом у которого 165х162 DPI 13.3 FHD, а подключаю обычный монитор FHD c 92 DPI. Просто поставил более крупный шрифт, потому что не захотел возится.
                                      0

                                      Не доводилось. Предположу, что нужно следовать моей инструкции — проверить значения xdpyinfo, если не то — исправлять, как я написал, только монитор нужный указывать. Помню, кто-то очень хвалил поддержку разных мониторов в Unity. В KDE же с многомониторностью всегда было туговато.

                                        0
                                        multi dpi нет в исках и wayland тоже
                                      –1
                                      У меня кеды в kubuntu 16.04 так и не захотели скейлиться из коробки — все равно мелкие иконки остались.
                                      Для себя решил проблему просто принудительно растягивая иксы:
                                      /usr/bin/xrandr --output eDP1 --scale 0.75x0.75
                                      
                                        +1
                                        Тогда же всё мутное просто кошмар.
                                        0
                                        ATi + Linux = лишние проблемы

                                        это какие? скачать и установить блоб… но подождите, это у nvidia надо что-то ставить, а карточки ati просто работают
                                        подберут мусор на помойке и давай из статьи в статью таскать
                                          –3

                                          Хоспаде, эти ваши линуксоиды уже целую пустыню кактусов съели, они должны по идее текилой писать! Это что то из области психиатрии, какой-то глубокий религиозный садо-мазо фанатизм типа флагеллантов!

                                            +3
                                            Ну, учитывая, что на линуксе у меня HiDPI уже пару лет норм работает, а на винде 10 до сих пор не очень, то ещё неизвестно, кто мескалином объедается. MacOS — ок, но только если подходит что-то из их скудного ассортимента техники.
                                            Линукс имеет свои преимущества, первое что замечаешь — это удобство установки и обновления софта из репозиториев — намного удобней винды, хотя может через пару лет вин-стор тоже на уровне будет.
                                            Кроме того linux очень expert-friendly. Линукс намного гибче винды и даже MacOS. Если хочется чего-то эдакого сделать, то на линукс это как правило намного проще и больше спектр инструментов. Для разработки ПО линукс тоже лучшую инфраструктуру предлагает. Например установка разделяемых библиотек для разработки под C++ делается либо прямо из репозиториев, либо чем-то вроде cmake .. && make package && dpkg -i asd.deb. На винде я так и не смог найти способа добиться чего-то подобного. От проблем с установкой разных либ на винде просто головой о стену биться хочется. Кроме того, поскольку целый спектр систем работает исключительно под *nix, то людям которые с этим системами работают linux просто привычней чем винда. Пользу grep/awk/sed и десятков других консольных утилит для работы переоценить вообще сложно.
                                            Линукс хорошо себя показывает в роли бабушко-дексктопа, т.к. его сложнее случайно сломать и легко удалённо поддерживать. Плюс по желанию можно очень консервативные интерфейсы использовать, а не каждый год переучивать бабушку на новые кнопки и интерфейсы.
                                            Ну и идеологические соображения (или, если хотите соображения долгосрочной перспективы) отбрасывать тоже не стоит.
                                            Короче красноглазость линуксоидов — это на сегодняшний день не более чем распространённое заблуждение.
                                              0

                                              Я наоборот люблю говорить что Линукс — не для нубов. Во-первых, от этого "нубы" сразу перестают ныть и пытаются разобраться, чтобы доказать. А во-вторых "ОС для нубов" это Андроид с Йосей и прочими мобильниками, потому что продаются в привязке к конкретному железу и жёстко ограничивают в правах юзерский софт. А на десктопе что на Винде, что на Лине вакханалия.
                                              Пример: вот в комп, на котором я это пишу, сейчас воткнуты: Сканер Mustek (под Линуксом работает как родной, Вин 10 его даже как неизвестное устройство не видит, дрова в природе есть только для ХР) и звуковуха Creative ZxR (под виндой без проблем, под линуксом могу записывать звук и крутить громкость, но на выходе только тишина потому, что глушит встроенный DRM, не видя своих дров).
                                              Так что купить на рынке железо, несовместимое с Виндой, трудно. Даже если рынок — Митинский. Но если у вас не свежее железо с рынка, а "что нашлось", то вероятность проблем с ним примерно одинаковая.
                                              Ну и вопрос цены не последний. На Линуксе доступен бесплатно функционал, который на Винде 10 потребует самой Ынтерпрайзной версии плюс платный софт (например, btrfs subvolumes). Так что вопрос может идти об экономии не 6, а 60-600 тыров на лицензии.

                                            0
                                            Хромиум, QtCreator, Yakuake работают нормально после установки scale x2 в настройках KDE.

                                            Одна проблема, которую не получается решить — мелкие иконки меню по правой кнопке мыши и некоторым диалоговым окнам.

                                            ~> xdpyinfo | grep reso
                                            resolution: 187x189 dots per inch
                                            ~>
                                              0

                                              System Settings → Icons → Advanced → Small Icons и в списке слева прибавьте размер.

                                                0
                                                Шутите?

                                                Покажите скриншот контекстного меню на рабочем столе (Plasma 5.9.4).
                                                  0
                                                  Извиняюсь.

                                                  Получилось увеличить иконки по вашему рецепту.

                                                  Спасибо!
                                                +1
                                                Приложения на GTK3
                                                Здесь всё просто. Нужно установить в .xprofile две переменные:
                                                GDK_SCALE=2 Командует GTK увеличить всё в 2 раза.

                                                Вот из-за этого я и не смог пользоваться гном шеллом. У меня прошлый монитор имел разрешение 2560х1440 при 27 дюймах.
                                                потому что с 2 слишком большое увеличение, а с 1 мелко

                                                  0

                                                  Да, Gtk умеет только кратные увеличения графики. Но можно попробовать покрутить GDK_DPI_SCALE=0.5 потому что многие размеры привязаны к шрифту. Или перейти на одно из DE на основе Qt, потому что Qt масштабируется как хочешь.

                                                    0
                                                    я наоборот тогда хотел уйти от плазму, потому что баги достали. Но в итоге перешел на awesome с сервисами плазмы для правильного масштабирования qt и переключения клавы с запоминанием окна
                                                      0
                                                      Уже в который раз натыкаюсь на жалобы про нестабильность плазмы и удивляюсь. Вы какие-то нестабильные беты используете? Или может это в каком-то дистрибутиве такое? У меня три компа с разными дистрибутивами, все на KDE и работают ок (уже года 4), разные версии кед4, плазмы — никаких проблем со стабильностью не замечал.
                                                        0
                                                        плазма стабильна. но она тормозит. точно не помню в чем это выражается, но работать с ней было не возможно. ни с последними версиями 4ки, ни с первыми стабильными версиями пятерки
                                                          0

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


                                                          Застревающие виджеты

                                                          До сих пор не пофиксили.

                                                    +1

                                                    HiDPI размечал примерно так же как вы, всё работает как часы. Не забудьте в русскую арчвики добавить то, что есть в статье.


                                                    Самые частые причины неправильной DPI — кривые EDID и фирменные дрова видеокарты. Про видеокарты ATi не скажу ничего, так как сторонюсь их. Не то, чтобы они чем-то плохи, но ATi + Linux = лишние проблемы.

                                                    Зря сторонитесь, свободные драйвера умеют уже и в OpenGL 4.5 и в Vulkan там, играю спокойно и в Dota 2, и в Talos, и в Humanity Divided. Ни тиринга, ни мучений с новым ядром. И лишних проблем не замечаю уже года как 3-4.


                                                    ATi уже давно нет, его поглотила AMD. И AMD, надо сказать, дружит с сообществом.

                                                      0
                                                      IMO, проблемы с *DPI (включая и HiDPI) можно будет считать решенными не раньше, чем кто-нибудь придумает, как обойти следующую проблему.
                                                      Возьмем два монитора с разным DPI. Конечно, для домашнего стационарного компа это не очень актуально, но может быть актуально для рабочего ноута, который периодически подключается к внешнему дисплею. Задача в том, чтобы организовать бесшовный перенос приложений между дисплеями таким образом, что размер шрифтов и окон (физические, т. е. в сантиметрах на приложенной к монитору линейке) остались теми же самыми. На первый взгляд, вроде бы ничего особо сложного здесь нет, но подвох кроется в растровых изображениях. Например, что должен делать просмотрщик фотографий, когда его перемещают с одного монитора на другой, и половина изображения находится на одном, а вторая — на другом? А еще у него есть индикатор масштаба, который на одном мониторе показывал бы 100% (т. е. один пиксель изображения на один пиксель монитора), а на втором — 120%, с ним что делать? И как реализовать это не в приложении, а в некой системной штуке наподобие иксов или Weston?
                                                      Я придумал более-менее нормальный алгоритм который мне бы подошел, но во-первых, места на полях слишком мало, а во-вторых, кажется, там все равно остаются corner cases, которые придется подпирать костылями. Впрочем PoC у меня все равно не предвидится, так что это в какой-то степени теоретизирование, но может кто-нибудь знает, как это работает в различных ОС, и может быть, где-то уже есть то, что мне надо?
                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                          0
                                                          В винде, как я понял, применяются настройки масштаба того монитора, на котором находится большая часть окна. См. youtu.be/uQkhSk1BgIc?t=112
                                                          Но вообще, мне сложно представить, когда нужно работать с окном, когда его части находятся на разных мониторах одновременно.
                                                          0
                                                          оно как бы входит в жизнь, да походу еще слабенько, обычно в виде ноутбуков с 4к (или близкой к) матрицей. и здесь конеш еще работают советы — поделить на 2 и радоваться. но на моём 32" 4К мониторе — нунах такое предложение, мне тогда на 3 метра нада от него убежать, чтоб оно мне небыло ОГРОМНЫМ. да и достало, что все живёт своей жизнью, никакой унификации. все что gtk-подобное — предлагает просто увеличить в 2 раза и радоваться (убил бы, чесна!), кеды — так и не осилил (просто забыв, что xrandr есть). mac os… вроде как все и прекрасна. вроде как и все в одной упряжке… да только нафига мне в этой же упряжке игра отмасштабированная??? я хочу чтоб игра — один к одному, остальное — масштабируйте, я хочу чтоб мозила перестала масштабировать картинки, когда сам интерфейс отмасштабирован (я хочу видеть картинку 1к1, если надо — я увеличу)… вобщем, перепробовав все, остался на вин10, там хоть можно галку приложению выставить — не масштабироваться (и я получаю почти то что хотел — игры нативно, интерфейс масштабируем)
                                                            0
                                                            Автор, вы пробовали в ~/.Xresources записывать следующее?
                                                            Xft.dpi: 185

                                                            Мне достаточно создать этот файл и установить force fonts DPI в такое же значение, все остальные программы подхватывают. Сейчас попробую с вашими Deadbeef, FreeMind и QtCreator. Сейчас же выглядит так:
                                                            http://i.imgur.com/dhlnVMQ.png
                                                            Так в KDE 4: http://i.imgur.com/Mf1Wn9O.png
                                                              +1
                                                              Deadbeef и FreeMind жутко мелкие.
                                                                0

                                                                Поле Force Fonts DPI в настройках Fonts как раз тем и занимается, что переписывает именно эту величину. Да, можно и вручную.
                                                                Deadbeef, если реально нужен использовать, нужно переключить в настройках на GTK3. Если как пример GTK2 — то придётся софтиной по моей ссылке генерировать ему тему, потому что GTK2 пофигу DPI.
                                                                Freemind особый случай, потому что значков много, а они в Яве не масштабируются юзером никак. Если переключить интерфейс на GTK, шрифты вырастут и размеры кнопок тоже. Но значки так и останутся мелкими. Для jEdit где-то была hidpi тема значков. Для FreeMind — не видел.

                                                                  0

                                                                  Эту величину ещё per-screen можно задавать:


                                                                  ! screen 0 resources
                                                                  #if SCREEN_NUM == 0
                                                                  Xcursor.size:   24
                                                                  Xft.dpi: 144
                                                                  #endif

                                                                  Вот только Gtk+ это игнорирует

                                                                  0
                                                                  Как я победил 2 монитора с разным DPI.
                                                                  проблема была что 1 монитор 144, второй 98 dpi, screen был в итоге 98:
                                                                  xdpyinfo | grep -B 2 resolution
                                                                  .screen #0:
                                                                  dimensions: 6360x2349 pixels (1114x414 millimeters)
                                                                  resolution: 98x98 dots per inch

                                                                  что бы ubuntu видела нужный мне dpi на основном мониторе в xorg.conf для мониторов прописал DPI, (в каждую секцию Section «Monitor» для каждого монитора свой dpi: 'Option «DPI» «145 x 144»' ). Тогда итоговый screen у меня получился с наибольшим монитором
                                                                  Но не все приложения (скайп, слак, браузеры, почтовик) его принимают, для них пришлось вручную прописывать масштаб.
                                                                  Но из за этих манипуляций, на мониторе с реальным dpi 98 всё стало большим, для этого в тот же xorg.conf добавляем viewportin=2520x1575 но что бы получить правильный конфиг я сделал так: вручную задал scale 'xrandr --output DVI-D-0 --auto --scale 1.5x1.5', потом по средствам nvidix-settings перезаписал конфиг
                                                                  Теперь у меня 2 монитора с физически одинаковыми (примерно) по размеру изображениями, но при этом разный dip. И без мыла которое получается от использования scale в настройках экрана кедов

                                                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                  Самое читаемое