Мониторы разрешением в 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.

Ну, вот так как-то.
Поделиться с друзьями
-->

Комментарии (68)


  1. Sora
    13.04.2017 10:02
    -1

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


    1. Barafu
      13.04.2017 10:15
      +4

      Как только Макось можно будет поставить на Beaglebone — соглашусь. А пока что боярам — боярово.


      1. alexmay
        13.04.2017 10:42
        +1

        А зачем ее туда ставить? В том числе и на малинку, например. Смысл какой?


        1. Barafu
          13.04.2017 11:16
          +5

          Ставить её туда нельзя и смысла в этом нет никакого. Поэтому одной Макосью на все случаи жизни не обойдёшься.


    1. sotnikdv
      13.04.2017 11:23
      +4

      (задумчиво поглядывая на два 4к монитора) УМВР. Из коробки. Начиная с осени после нового дистриба минта.

      Или статья устарела или дистриб не успел обновится или что-то с КДЕ (я с него ушел с выходом 5-го и не очень жалею, бажен был ужасно)


      1. 0xd34df00d
        13.04.2017 17:45

        Аналогично. И все работало ещё даже пару месяцев назад на kde4, который у меня тогда был.


    1. kekekeks
      13.04.2017 12:18
      +2

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


      1. Sora
        13.04.2017 12:25
        -1

        Hackintosh.


        1. kekekeks
          13.04.2017 12:38

          Некоторым образом противоречит

          Я уже давно понял, что компьютер должен просто работать, а не тратить время на его настройку
          , не кажется?


          1. Sora
            13.04.2017 12:47

            Как ни странно нет, у меня макбук и большой ПК, Hackintosh. Настроил его 3 года назад, работает как часы, обновляется как макбук без проблем. Только не работает iMessage и iCloud. Но я ими не пользуюсь. Именно с Хака, у меня начался переезд с Fedora, после очередных апдейтов.


            1. rock3tup
              13.04.2017 19:33
              +1

              если используете clover в качестве загрузчика, можно за 10 минут настроить icloud


          1. tropico
            13.04.2017 15:11

            Сложность установки хакинтоша на среднестатистическое железо на уровне установки винды.


            1. DaemonGloom
              13.04.2017 15:51
              +1

              Сложность установки начинается, когда у вас видео не от intel, а вайфай — от них.


        1. zelenin
          13.04.2017 12:46
          +2

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


      1. Coocos
        13.04.2017 12:50
        -1

        Наценка — да. А вот на счет железа не согласен. В ноутах ставят топовые 4х ядерные процы с бустом под 4 ГГЦ. Часто нормальные люди ставят в ноут 64ГБ? Сейчас норма 8-16ГБ. Сам сижу на 3ГБ.


        1. kekekeks
          13.04.2017 14:41
          +2

          У делла за цену макбука можно с 64Гб и с Xeon-ом машинку приобрести.


          1. kivsiak
            14.04.2017 09:40

            А можно линку на это чудо машину?


            1. kekekeks
              14.04.2017 12:03
              +1

              M7710, например.


              1. kivsiak
                14.04.2017 16:19
                -1

                Прошу прощения но там за подобную подобную конфу цена начинается с 4к для обычных людей. Что конечно стоит своих денег, но противоречит вашему утверждению.

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


                1. kekekeks
                  14.04.2017 19:01
                  +1

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


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


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


                  1. kivsiak
                    15.04.2017 00:03
                    -3

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


                1. kekekeks
                  14.04.2017 19:11

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


                  1. kivsiak
                    15.04.2017 00:12
                    -2

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

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

                    Исключение только последне поколение с несуразным тачбаром.


      1. bkotov
        13.04.2017 14:50

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


        1. kekekeks
          13.04.2017 20:45
          +1

          У внешних устройств хранения есть фатальный недостаток — лапша из проводов.


          1. bkotov
            14.04.2017 11:46
            -1

            Множество решений есть. NAS, WiFi диски, доки для нескольких жестких дисков и так далее. Редко когда реально требуется оперативный доступ к большим объемам данных. В большинстве случаев достаточно встроенного SSD/HDD и пары внешних дисков + облако. А вот вес ноутбука, его габариты, шумность, устойчивость к механическим воздействиям — существенно улучшаются при отказе от дополнительных механических дисков и это на мой взгляд куда более важные для мобильного устройства характеристики.
            Конечно все зависит от задач. Я занимаюсь фотографией, у меня несколько внешних жестких дисков забиты архивами фото и бэкапами. При этом терабайтный жесткий диск аймака не используется, он постоянно запаркован. Хватает основного SSD на 512. В ноуте вобще сейчас стоит ссд на 128 и как-то не жалуюсь на нехватку места.


      1. igorch96
        14.04.2017 07:58

        Не сказал бы. Потеря раскладки клавиатуры при переключении между XCode и скайпом заставляет грустить. Или навиация по меню приложений с клавиатуры у Windows горздо удобнее.


    1. Coocos
      13.04.2017 12:43
      +1

      А я не завидую людям у которых есть мак. Была необходимость изменить системные шрифты — не получилось без установки сторонних утилит.


  1. Sacra
    13.04.2017 10:50
    +2

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


    1. Barafu
      13.04.2017 16:29
      +2

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


  1. melchermax
    13.04.2017 11:06

    Спасибо, что поделились, пойдёт в закладки. Мне с моими -5 смысла покупать 4к мониторы нет, но знать такие вещи надо :)


    1. sotnikdv
      13.04.2017 11:25

      Вот как раз ИМХО по глазам меньше бьет. Поэтому очки и хорошие мониторы must have.

      20 ktn пялюсь в монитор, никаких проблем со зрением. Но мониторы меняю сразу, ибо глаза не купишь.


      1. melchermax
        13.04.2017 11:42

        Очки есть, без них никуда. Дело в том, что я даже в очках на обычном рабочем расстоянии (70-80 см) не вижу разницы между 2к/4к и FHD на 22-23 дюймах. Вообще не вижу, ни на тексте, ни на картинках.


  1. sotnikdv
    13.04.2017 11:21

    Странно, свежий минт циннамон, 2 х 4к монитора, работает из коробки. Причем работать начал нормально еще прошлой осенью. Все использованные приложения, вплоть до скайпа. Карта GTX980, мониторы LG 27" 27UD68, оба висят на дисплей портах.

    Никаких танцев с бубном и никаких проблем.

    Год назад это был секс сравнимый с описанным автором и на грани бросить все нафиг, снять мониторы и поставить старые FullHD или подцепить мак.

    Отсюда у меня вопрос, а это свежая статья?


    1. Barafu
      13.04.2017 12:41
      +2

      Из коробки? А вы уверены? Давайте проверим! Поставьте и включите три прикладных программы: FreeMind (интерфейс на Java), Deadbeef (в настройках можно переключать между Gtk2 и Gtk3, нас интересует Gtk2), QtCreator (наверное работает, это KDE-специфичный косяк). Всё работает? Иконки на панели инструментов в меру крупные? Шрифт из кнопок нигде не вылезает? Скроллбары шире миллиметра? Потому что я рассказывал, как справиться именно с этими приложениями, а так же с кривыми EDID. При нормальных EDID обычные приложения и в KDE работают «из коробки».


      1. Barafu
        13.04.2017 14:12

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


        1. sotnikdv
          14.04.2017 14:57

          Проверил

          QtCreator — проблема с тулбаром есть и выглядит не очень.
          jEdit — явно ориентируется на 96dpi. Хотя с той же Intellij проблем нет и другими джава софтинами, которые использую.

          Остальное — вполне себе работает. Видимо все, что я использую, достаточно популярное и его пофиксили.
          Тот же Thunderbird до осени рвало по полной, а сейчас ничем не отличается от FullHD.

          А, из прекрасного. Хром нормально работает из коробки, хромиум надо запускать со -scale-factor


          1. Barafu
            14.04.2017 15:56

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


  1. Romaker
    13.04.2017 12:01
    -1

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


  1. inferrna
    13.04.2017 14:13

    >Надо либо откатываться на Nouveau
    А на AMD вопрос отката на свободный драйвер не звучит риторически.


  1. bkotov
    13.04.2017 14:55
    +1

    Какие нюансы в случае использования нескольких мониторов с разным DPI? Например HiDPI у ноутбука и обычный у внешнего экрана?


    1. AlexGluck
      13.04.2017 16:36

      Тоже интересует этот вопрос. На работу хожу со своим ноутом у которого 165х162 DPI 13.3 FHD, а подключаю обычный монитор FHD c 92 DPI. Просто поставил более крупный шрифт, потому что не захотел возится.


    1. Barafu
      13.04.2017 19:44

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


    1. webmasterx
      14.04.2017 03:37

      multi dpi нет в исках и wayland тоже


      1. Kanedias
        14.04.2017 08:41

        В Wayland есть. Per-monitor scaling.


  1. MrFrizzy
    13.04.2017 19:12
    -1

    У меня кеды в kubuntu 16.04 так и не захотели скейлиться из коробки — все равно мелкие иконки остались.
    Для себя решил проблему просто принудительно растягивая иксы:

    /usr/bin/xrandr --output eDP1 --scale 0.75x0.75
    


    1. ivlis
      13.04.2017 22:22
      +1

      Тогда же всё мутное просто кошмар.


  1. mrobespierre
    13.04.2017 19:31

    ATi + Linux = лишние проблемы

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


  1. xtala
    13.04.2017 19:59
    -3

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


    1. DaylightIsBurning
      13.04.2017 20:44
      +3

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


      1. Barafu
        14.04.2017 14:55

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


  1. qqq1971
    13.04.2017 22:17

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

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

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


    1. Barafu
      13.04.2017 22:19

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


      1. qqq1971
        13.04.2017 22:32

        Шутите?

        Покажите скриншот контекстного меню на рабочем столе (Plasma 5.9.4).


      1. qqq1971
        13.04.2017 22:50

        Извиняюсь.

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

        Спасибо!


  1. webmasterx
    14.04.2017 03:44
    +1

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

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


    1. Barafu
      14.04.2017 06:56

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


      1. webmasterx
        14.04.2017 07:17

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


        1. DaylightIsBurning
          14.04.2017 23:49

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


          1. webmasterx
            15.04.2017 04:03

            плазма стабильна. но она тормозит. точно не помню в чем это выражается, но работать с ней было не возможно. ни с последними версиями 4ки, ни с первыми стабильными версиями пятерки


          1. Sacra
            15.04.2017 07:41

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


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


  1. Kanedias
    14.04.2017 08:49
    +1

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


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

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


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


  1. Kib0rg
    15.04.2017 10:22

    IMO, проблемы с *DPI (включая и HiDPI) можно будет считать решенными не раньше, чем кто-нибудь придумает, как обойти следующую проблему.
    Возьмем два монитора с разным DPI. Конечно, для домашнего стационарного компа это не очень актуально, но может быть актуально для рабочего ноута, который периодически подключается к внешнему дисплею. Задача в том, чтобы организовать бесшовный перенос приложений между дисплеями таким образом, что размер шрифтов и окон (физические, т. е. в сантиметрах на приложенной к монитору линейке) остались теми же самыми. На первый взгляд, вроде бы ничего особо сложного здесь нет, но подвох кроется в растровых изображениях. Например, что должен делать просмотрщик фотографий, когда его перемещают с одного монитора на другой, и половина изображения находится на одном, а вторая — на другом? А еще у него есть индикатор масштаба, который на одном мониторе показывал бы 100% (т. е. один пиксель изображения на один пиксель монитора), а на втором — 120%, с ним что делать? И как реализовать это не в приложении, а в некой системной штуке наподобие иксов или Weston?
    Я придумал более-менее нормальный алгоритм который мне бы подошел, но во-первых, места на полях слишком мало, а во-вторых, кажется, там все равно остаются corner cases, которые придется подпирать костылями. Впрочем PoC у меня все равно не предвидится, так что это в какой-то степени теоретизирование, но может кто-нибудь знает, как это работает в различных ОС, и может быть, где-то уже есть то, что мне надо?


    1. sotnikdv
      15.04.2017 12:29
      +1

      Да и когда все окно перемещено на дисплей с другим DPI все сложно пока. Ждем-с :)


  1. shashilx
    16.04.2017 02:01

    оно как бы входит в жизнь, да походу еще слабенько, обычно в виде ноутбуков с 4к (или близкой к) матрицей. и здесь конеш еще работают советы — поделить на 2 и радоваться. но на моём 32" 4К мониторе — нунах такое предложение, мне тогда на 3 метра нада от него убежать, чтоб оно мне небыло ОГРОМНЫМ. да и достало, что все живёт своей жизнью, никакой унификации. все что gtk-подобное — предлагает просто увеличить в 2 раза и радоваться (убил бы, чесна!), кеды — так и не осилил (просто забыв, что xrandr есть). mac os… вроде как все и прекрасна. вроде как и все в одной упряжке… да только нафига мне в этой же упряжке игра отмасштабированная??? я хочу чтоб игра — один к одному, остальное — масштабируйте, я хочу чтоб мозила перестала масштабировать картинки, когда сам интерфейс отмасштабирован (я хочу видеть картинку 1к1, если надо — я увеличу)… вобщем, перепробовав все, остался на вин10, там хоть можно галку приложению выставить — не масштабироваться (и я получаю почти то что хотел — игры нативно, интерфейс масштабируем)


  1. ValdikSS
    16.04.2017 22:24

    Автор, вы пробовали в ~/.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. ValdikSS
      16.04.2017 22:49
      +1

      Deadbeef и FreeMind жутко мелкие.


    1. Barafu
      17.04.2017 11:54

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