Настройка GUI в линуксе для мониторов с High DPI

    В последнее время появилось достаточно много мониторов с высоким разрешением, 150 dbi и выше, особенно в ноутбуках. И при этом всё выглядит жутко маленьким.
    Причина этого — система думает что у Вашего монитора разрешение 96..100 dpi.
    Решать это только увеличением размера шрифта неправильно, т.к. размеры всех остальных элеменов интерфейса остаются маленькими. Надо чтобы графическая оболочка сама это делала.

    Мне с решением этой проблемы пришлось весьма долго рыться в интернете, собирая мелкие заметки, т.к. не оказалось места где бы это можно было увидеть всё вместе.

    Ниже будет идти список где что поправить, все параметры привожу для своего монитора — 13,3" при 2560x1600, это даёт 226 dpi. Более высокое разрешение сейчас я видел только в ноутбуке Fujistu U904 — 262 dpi.

    Параметры монитора: в xorg.conf в параметрах монитора дописать:
    Option «DPI» «226 x 226»
    или
    DisplaySize 286 179 # это тоже самое, но размер экрана задаётся в миллиметрах
    Если у Вас нет xorg.conf и монитор у Вас только 1, то можно задать это монитору по умолчанию. Для этого в каталоге конфига иксов создаётся файл xorg.conf.d/90-monitor.conf с таким содержимым:
    Section "Monitor"
        Identifier     "<default monitor>"
        Option        "DPI" "226 x 226"
    EndSection
    


    В ключи запуска иксов надо дописать -dpi 226, в kdm это строка параметра ServerArgsLocal

    Для шрифтов в /etc/X11/Xresourse или ~/.Xresourse:
    Xft.dpi 96 заменить на 226

    После перезапуска исков можно проверить что это вступило в силу:
    — в логе иксов должны быть такие строки /var/log/Xorg.0.log
    intel(0): clock: 268.5 MHz Image Size: 286 x 179 mm
    intel(0): DPI set to (226, 226)
    — xdpyinfo | grep -B2 resolution
    screen #0:
    dimensions: 2560x1600 pixels (287x179 millimeters)
    resolution: 227x227 dots per inch
    — xrdb -query | grep dpi
    Xft.dpi: 226

    Но есть куча программ и GUI которые не смотрят на параметры иксов. Поэтому продолжаем.

    Для KDE: Параметры системы => Основные параметры внешнего вида => Шрифты => Использовать другой DPI: 226.
    Но значки придётся увеличить отдельно: Параметры системы => Основные параметры внешнего вида => Значки, вкладка Дополнительно.

    Для Gnome: в gconf прописать в /desktop/gnome/font_rendering/dpi (нужно ли тут ещё что-то дополнительно — я не знаю, т.к. не пользуюсь Гномом).

    Для Firefox: в about:config: layout.css.PixelsPerPx=2.26, layout.css.dpi=226.
    Но нередко для броузере не нужно 100% соответствие, поэтому я себе чтобы больше влазило на экран прописал layout.css.PixelsPerPx=2. Хотя firefox и даёт при этом самое точное соответсвие картинке при 100 dpi, но использует странное масштабирование растровых изображений. Сначала внутри получает изображение которое должно было бы быть при 100 dpi, а потом растягивает в 2 раза. Из-за этого картинки получаеются мыльными даже если они имеют высокое разрешение

    Для Opera: достаточно установить 200% мастабирование — опера это делает достаточно корректно.

    Для Chrome в chrome://flags/ есть параметр «Режим высокого разрешения», но для linux он не доступен. Поэтому остаётся только поставить 200% и «очень крупный» размер шрифта. К сожалению, это не влияет на flash.
    Но я у себя поставил в нём 120% и использую для просмотра карт (maps.yandex.ru, maps.google.ru) для высокой детализации картинки.

    Konqueror пока не понимает high dpi, и масштабирует неверно, хотя akregator, используя тот же движок, показывает всё правильно без дополнительных указаний.

    Проверить что Ваш dpi понят системой корректно лучше всего открыв страницу формата A4 в офисной программе, например OpenOffice, и при 100% масштабировании приложив бумажный лист. Если всё работает правильно, то размеры совпадут.
    Так же в OpenOffice в настройках стоит поставить размер значков «большие».

    После всех настроек нашлись конфликты жёстко заданных растровых картинок и увеличившихся шрифтов.
    Я такое увидел в kdm и в Opera: работать можно, но выглядит не очень приятно — края букв вылазят за отведённые для надписей поля. Поэтому я в Xresourse заменил 226 на 175. (Вообще странно что opera, считывая размер dpi для меню и других надписей, не использует этот же dpi для отображения html страницы).

    PS Собиралось это изначально только для себя тут, но оказалось что сейчас такой вопрос появляется у многих. Буду рад если появится какие-то конструктивные дополнения.
    Share post

    Similar posts

    Comments 56

      –6
      > Решать это только увеличением размера шрифта неправильно, т.к. размеры всех остальных элеменов интерфейса остаются маленькими.

      Пусть ОСТАЮТСЯ! У меня два дисплея с нестандартным DPI (3K 13.3", 4K 27") и я дюже счастлив, что все убогие поделия дизайнеров в виде кнопок на полэкрана скукожились до размеров иконки 16x16 времен windows 98 на 1280x1024.

      Отдельные проклятия (не только линукс..):
      — майкрософту за «моду» на оконное «меню» высотой под 100 пикселей вместе с заголовком (Visual Studio).
      — blender'у за ту же взятую моду на огромные меню
        +14
        Ну в самом деле, не у всех же такое отличное зрение и разряд по снайперскому владению курсором.
          0
          Если мои показатели (комментом ниже) считаются отличными, то мне жалко тех (пока что) 13 плюсанувших (коммент выше).
          0
          Думаю что это зависит от того как далеко Вы сидите от монитора.
          Я свои глаза берегу (у меня 100% зрение), поэтому держу монитор ноута на расстоянии 60 см, дальне можно только с внешней клавиатурой.
          А от настолького вообще на расстоянии 80..100 см сижу.

          Но так же предпочитаю чтобы для работы с текстом и картинками был правильный размер — я специально отметил OpenOffice по этой теме.
            –1
            острота 0.7 при коррекции ("-11" в терминах совковой медицины). Поэтому я ценю то, что вижу, и не люблю отвлекаться на нарядные красивые элементы управления на полэкрана.
          +5
          >есть параметр «Режим высокого разрешения», но для linux он не доступен
          посмотрел в windows 8 и os x, также недоступен. Интересно, для чего он доступен? Для MSDOS?
            +1
            Chrome OS
              +1
              Chromium, в отличие от Chrome, можно пересобрать с флагом -Denable_hidpi=1 и получить доступ к этому флагу.
              Но я сомневаюсь что это многие будут сделать.
              Для windows доступность флаг можно активировать каким-то ключём в реестре.

              Так что указание на доступность только в Chrome OS не корректно.

              PS Надо будет глянуть что стоит в mac os, но пока лень перегружаться.

                0
                PS Надо будет глянуть что стоит в mac os, но пока лень перегружаться.


                Force high DPI mode Chrome OS
                Overrides the device display density to force the use of high DPI mode and assets. #force-device-scale-factor
                Sorry, this experiment is not available on your platform.
                  0
                  Действительно недоступно, но при этом размер рисует правильно.
                  Похоже в mac os хром сам определяет что за ноут и задаёт разрешение.
                0
                В ff и хроме заметны отличия.
                Надо будет порыться можно ли выставить webkitBackingStorePixelRatio или devicePixelRatio, подход сафари выглядит более правильным — на ноуте в mac os сафари выглядит лучше хрома.
                +5
                Скриншоты давай. Будем выявлять всех кто юзает маленький растр в интерфейсах.
                  +1
                  То есть получается работает только кое-где нормально, интересно, если взять LCD экран 2560x2048 и поставить для него разрешение 1280x1024 будет нормально выглядеть? Получается 1 пиксель 4 реальных.
                    0
                    Нет, ненормально. Как минимум, шрифты будут шревтами, т.к. не будет правильно работать субпиксельное сглаживание.
                      0
                      А нужно ли сглаживание вообще на таких разрешениях (1px ведь 4 точки)?
                        0
                        Конечно. Представьте, что у вас внезапно пиксели с кулак стали, только скейлирование не софтовое, а железное. А железо не знает, что у вас софт хотел сгладить глиф вот тут вот красным пикселем, а другие не трогать. Шрифты будут отвратительно выглядеть со включенным субпиксельным сглаживанием.
                          0
                          Да, действительно, что-то не подумал сразу. Тут проблема даже больше в том, что 4 точек маловато для нормального рисования одного пикселя. Вот если взять матрицу эдак 128х128 точек…
                      0
                      Блюрить шрифты всё равно будет. Хинтинг шрифтов зависит от разрешения. Пока нормальное масштабирование с пережатием есть, к сожалению, только у OS X.
                      +6
                      150 dbi и выше, особенно в ноутбуках.
                      Пожалуйста, извлеките магнетрон из вашего ноутбука ;)
                        +1
                        Параметры монитора: в xorg.conf в праметрах монитора дописать:
                        Option «DPI» «226 x 226»
                        Это работает только в проприетарном драйвера nVidia. Для остальных драйверов можно вписать физический размер матрицы (DisplaySize), но, как правило, этого не требуется, т.к. он получается через EDID/DCC (по крайней мере, у меня работает, посмотреть можно через xrandr, например).

                        DPI также можно задать через xrandr --dpi 125
                          0
                          Для Firefox: в about:config: layout.css.PixelsPerPx=2.26
                          Это не DPI, а «проценты». Собственно, количество пикселей на html'овкий px.

                          По моему опыту, достаточно задать параметр -dpi для X и указать правильный dpi в fonts.conf (либо же задать его в настройках kde). Больше на моей инсталляции ничего не требовалось.
                            0
                            > Это не DPI, а «проценты».

                            Проценты — было бы 226% :)
                            Зато далее Вы правильно написали.

                            > достаточно задать параметр -dpi для X и указать правильный dpi в fonts.conf

                            Не достаточно, не хотят смотреть на это смотреть очень многие программы, хотя было бы очень удобно.
                            Я как раз и начинал с -dpi 226, т.к. помнил про этот параметр ещё где-то с 2005-го, и думал как просто всё будет.
                            0
                            > Это работает только в проприетарном драйвера nVidia.

                            Это работает для всех современных драйверов от xorg, почитайте документацию.

                            У меня встроенное видео от Intel.
                            NVidia никогда не покупаю из-за того что нет нормальных открытых дров.
                              0
                              Хм. В man xorg.conf ничего не говорит мне про такой параметр, man intel тоже. И ArchWiki согласна. Укажите, пожалуйста, в какую документацию смотреть.
                                0
                                Это параметр-синоним для
                                DisplaySize width height
                                This optional entry gives the width and height, in millimetres, of the picture area of the monitor. If given this is used to calculate the horizontal and vertical pitch (DPI) of the screen.

                                Это из man xorg.conf

                                Но DPI писать нагляднее.

                                В тесте я указал:
                                # DisplaySize 286 179 # тоже самое In millimeters
                                  0
                                  Вы заблуждаетесь. DPI не может быть синонимом DisplaySize, т.к. в DisplaySize нужно указывать физический размер матрицы в миллиметрах, а не плотность пикселей на дюйм.
                                  У меня Intel, и драйвер, соответственно, intel. Я указал DPI в xorg.conf так, как у вас указан, и получил:
                                  [166460.593] (==) intel(0): DPI set to (96, 96)
                                  [166460.594] (WW) intel(0): Option «DPI» is not used

                                  Так что такая опция действительно есть только в проприетарном драйвере nVidia.
                                    0
                                    А Вы в какой секции указали?

                                    Для монитора или видеокарты?
                                      0
                                      Для монитора, как у вас. В секции Device тоже не работает.
                                        0
                                        У меня в логах такое:
                                        [ 7.981] (II) intel(0): Using exact sizes for initial modes
                                        [ 7.981] (II) intel(0): Output eDP1 using initial mode 2560x1600 +0+0
                                        [ 7.981] (II) intel(0): Using default gamma of (1.0, 1.0, 1.0) unless otherwise stated.
                                        [ 7.981] (II) intel(0): Kernel page flipping support detected, enabling
                                        [ 7.981] (++) intel(0): DPI set to (175, 175)

                                        [ 8.009] (II) intel(0): Setting screen physical size to 371 x 232

                                        Это я поставил 175 для kdm и оперы, а в kde задано 226, OOo подтягивает настройки для kde.

                                        Может такое работает только в более новых иксах, попробуте 2й вариант, задав размер в миллиметрах.
                                        У меня оба варианта работают.
                                        X.Org X Server 1.14.4
                                          0
                                          Вы уверены, что это у вас срабатывает конфиг, а не флаг -dpi запуска иксов?
                                          xorg-server 1.16.0
                                            0
                                            Уверен — флаг -dpi я оставил на всякий случай, может на него кто смотрит.
                                            Но с ним, без остальных параметров, в логах иксов было
                                            DPI set to (96, 96)
                                              0
                                              У меня два предположения:
                                              1) У вас Ubuntu с какими-то убунтупатчами для добавления параметра DPI в драйвер Intel.
                                              2) Вы ленитесь проверить и предоставляете неправильные сведения в посту.

                                              Я только что скачал исходный код xf86-video-intel, и упоминания параметра DPI там нет.
                                                0
                                                У меня федора 20.

                                                Для radeon тоже работало, но сейчас та машина от меня далеко чтобы проверить.
                                        0
                                        В общем, не знаю, что там у вас не работает, но я только что проверил — xrandr --dpi 150, и весь софт его уважает после перезапуска этого софта. На моей памяти, на Xft.dpi смотрит только одно приложение — Opera 12. К тому же, его может автоматически установить либо KDE, либо Infinality.

                                        Плюс подхода с xrandr в том, что можно каждому монитору указать свой DPI, а не один общий.
                                          0
                                          Если завести в xorg.conf отдельные секции каждому монитору, то там можно тоже указывать свой dpi каждому монитору.

                                          А влияет на все, что актуально только для ноута чтобы не создавать полноценный xorg.conf
                                            0
                                            Эх, к сожалению нет, я вас обманул. DPI един для всего X, разные DPI для разных мониторов в Linux задать нельзя.
                                              0
                                              В секции монитор конфига — можно.

                                              Я давно пользуюсь multi-head компьютером (2 рабочих места на 1 системнике), и уже проверено что эти секции полностью независимы.
                                              Так же как и присоздании нескольких конфигов для запуска 2х и более копий иксов параллельно (это когда каждая копия исков использует свой набор видеокарта+монитор+клавиатура).

                                              До X11R6.9 приходилось для этого вручную накладывать патчи на иксы и пересобирать.
                                                0
                                                Так у вас в multihead и мониторы иначе видятся. А в двух икс-сессиях вообще нет никаких ограничений. Я же говорил про одну икс-сессию и два монитора, которые дополняют друг друга.
                                            0
                                            > На моей памяти, на Xft.dpi смотрит только одно приложение — Opera 12.

                                            Вы оказались правы что для меньшего шрифта в полях ввода хватает правки только в Xft.dpi.
                                            Но это влияет не только на Оперу, но и на Kdm.
                              0
                              А как можно на мониторе 1366х768 сделать все мельче? win, linux
                                0
                                Можно, задав dpi меньше чем тот то по умолчанию, например, 75 вместо 96.

                                Но выглядеть будет хуже.
                                  0
                                  Очень хочется на это посмотреть, как в win7 это сделать?
                                    0
                                    Не знаю, win не пользуюсь уже лет 8.
                                    Тогда таких мониторов не было.
                                      0
                                      В разрешении экрана где-то есть кнопка-надпись про что-то типа «Сделать текст и другие элементы больше или меньше» («Make text and other items larger or smaller» в англ вин8).
                                        0
                                        Там нельзя выставить ниже 100% это 96ppi. Хочется именно ниже.
                                  0
                                  Какие проблемы остаются после этих манипуляций? В какой DE Вы работаете? Какими программами пользуетесь? В убунту 14.04 в юнити можно выставлять скейлинг в ГУИ, работает неплохо, но скайп, например выглядит всё равно слишком мелко (хотя некоторые элементы интерфейса и масштабируются), в LibreOffice вкладки листов слишком мелкие получаются. Терминал и большинство другого дефолтного софта работает нормально. Фаерфокс требует отдельной настройки. Но в целом, терпимо. У меня в ноуте дисплей 13.3", 3К разрешение.
                                    0
                                    > скайп, например выглядит всё равно слишком мелко

                                    Вероятно он не смотрит на настройки DE, попробуйте прописать указанные тут настройки для иксов.
                                    Скайп, как и опера, использует только Qt, и вероятно ему подходит тоже самое.

                                    Я скайпом не пользуюсь, поэтому подтвердить не могу.
                                    Но в mac os при этом же разрешении скайп выглядит нормально.
                                      0
                                      Спасибо за совет. Значит будем пробовать и ждать. Поддержка high-dpi в Qt находится в зачаточном состоянии, к большому сожалению. Хотели её реализовать к релизу 5.3, затем к 5.4, но, похоже, перенесут на еще более поздний релиз.
                                    0
                                    Может быть, это имеет право на жизнь.
                                    Но есть одно «НО» — настройки xorg.conf напрочь разбиваются о скалу гибридной графики.
                                    Во многих ноутбуках используется гибридная графика, для переключения используются технологии PRIME и Bumblebee.
                                    При этом xorg.conf не используется.
                                    Остается только xrandr.
                                    Но и после этого броузеры, например Chromium и Firefox, напрочь игнорируют все настройки.
                                    Установка постоянного масштабирования не спасает.
                                    Вот здесь это немного обсуждается habrahabr.ru/company/wargaming/blog/228145/#comment_7831115

                                    Сам использую в работе Archlinux+XFCE
                                      0
                                      Вот для гибридной графики и подходит прописывание параметров в Это глобальный параметр, который можно перекрывать в отдельной секции «Monitor» если создать файл xorg.conf.
                                        0
                                        прописывание параметров в < default monitor >

                                        забыл правильно угловые скобки написать
                                        0
                                        > Остается только xrandr

                                        xrandr тоже даёт единую настройку на все мониторы/видеокарты, как добавление < default monitor >

                                        А если написать правильный xorg.conf, то можно часть граблей обойти.

                                        Вот проблемы с ff так не решить.
                                      • UFO just landed and posted this here
                                          0
                                          Я когда-то думал что при 200+ dpi сглаживание шрифтам будет уже не нужно, а оказалось что всё равно видно углы.

                                          И теперь думаю: при каком же значении dpi будет можно использовать шрифты без сглаживаний? 400? 600?

                                          Хотя на струйном принтере и при 300 ppi уже всё ровное, никаких углов, но то может особенности струйного из-за растекания чернил.
                                          При 600 у лазерника всё плавное. Так что, надо ждать мониторов с 600 dpi?

                                          Хотя и 200 dpi — это уже заметный прогресс, я давно таких ждал.
                                          Когда возвращаешся после такого монитора назад к 100 dpi обычного настольного монитора, картинка кажется чуть мыльной.
                                          • UFO just landed and posted this here

                                        Only users with full accounts can post comments. Log in, please.