Pull to refresh

Comments 162

Я работаю с Линуксом уже 15 лет, из них больше 10 — исключительно с Линуксом. У меня на рабочей машине и дома линуксы.


Но. Я всё ещё не понимаю, какими волшебными отношениями связаны размеры шрифтов в qt/gtk приложениях. Иногда они совпадают. Иногда нет. Иногда некоторые приложения игнорируют настройки рендеринга шрифтов. Последнее время реже, но всё ещё бывает.


Более того, я не понимаю, почему gtk-приложения выглядят так странно при подключении к X'ам.


Вот, например, kodi:


libEGL warning: DRI3: failed to query the version
libEGL warning: DRI2: failed to authenticate


Хотя ssh -XYC. DRI, насколько я понимаю, ломает все сетевые абстракции.


Или вот. Один на удалённой машине, второй локальный. Шрифты разные. Причём, они настолько разные, что от шрифтов на ray отличаются радикально (там вообще выставлено 24 пункта, т.к. это медиаплеер под телевизором).



Короче, я сдался разбираться.

В Windows та же песня. Когда-то пытался разобраться в логике работы Font mapper'а — при отсутствии запрошенного шрифта он подбирает «максимально похожий», но это похожесть вилки и бутылки. А учитывая, что во многих шрифтах русские символы отсутствуют, результат даже необязательно читабелен. А ещё вместо рендеринга запрошенного кегля легко выдаются символы другого размера. Вот как на дисплее 4к текст системных апплетов может быть замыленным?
Это точно. В свое время для реализации WISIWYG пытались разобраться в логике этого маппера, но оной обнаружить нам так и не удалось.
Даже функция, которая по идее должна возвращать шрифт, который этот маппер поставил вместо исходного, на самом деле не работает.
В результате воспроизвести на любом не-GDI устройстве то же самое, что рисует GDI — в принципе невозможно.
Ну как так?
UFO just landed and posted this here

В Qt шрифты вот так скейлятся:


qreal QTextDocumentLayoutPrivate::scaleToDevice(qreal value) const
{
    if (!paintDevice)
        return value;
    return value * paintDevice->logicalDpiY() / qreal(qt_defaultDpi());
}

Общая примерная формула фактора скейла — DPI экрана/96.
Но иногда в разных тулкитах фактор может немного отличаться, например DPI/96=1.86, а отскейлят на 2 или прочитают из настроек, игнорируя реальный дисплей.
Вот, например, функция из glfw:


// Retrieve system content scale via folklore heuristics
//
static void getSystemContentScale(float* xscale, float* yscale)
{
    // NOTE: Fall back to the display-wide DPI instead of RandR monitor DPI if
    //       Xft.dpi retrieval below fails as we don't currently have an exact
    //       policy for which monitor a window is considered to "be on"
    float xdpi = DisplayWidth(_glfw.x11.display, _glfw.x11.screen) *
        25.4f / DisplayWidthMM(_glfw.x11.display, _glfw.x11.screen);
    float ydpi = DisplayHeight(_glfw.x11.display, _glfw.x11.screen) *
        25.4f / DisplayHeightMM(_glfw.x11.display, _glfw.x11.screen);

    // NOTE: Basing the scale on Xft.dpi where available should provide the most
    //       consistent user experience (matches Qt, Gtk, etc), although not
    //       always the most accurate one
    char* rms = XResourceManagerString(_glfw.x11.display);
    if (rms)
    {
        XrmDatabase db = XrmGetStringDatabase(rms);
        if (db)
        {
            XrmValue value;
            char* type = NULL;

            if (XrmGetResource(db, "Xft.dpi", "Xft.Dpi", &type, &value))
            {
                if (type && strcmp(type, "String") == 0)
                    xdpi = ydpi = atof(value.addr);
            }

            XrmDestroyDatabase(db);
        }
    }

    *xscale = xdpi / 96.f;
    *yscale = ydpi / 96.f;
}

На удаленной машине соответственно отличаются параметры виртуального дисплея.

Графическая подсистема Linux это такой ужас, к сожалению. Скорее бы полнофункциональный Wayland.
В KDE 5 есть ошибка выбора написания шрифта:
Leap 15.1: KDE добавляет название начертания шрифта в файл настройки в UTF8, а не как надо
В Leap 15.1 KDE 5.12.8. Для правильного выбора написания шрифта руками правьте файлы настроек.
В Leap 15.2 KDE 5.18, и вроде как эта ошибка не возникает.
Шрифтами заведует одна библиотека: libfontconfig. К ней цепляется libfreetype…
А есть ли зависимость между Desktop Environment и пользовательским приложением? Должен ли учитывать разработчик под каким DE будут запускать его программу?
Ни разу не разрабочтик под Linux (поправьте, если не прав), но, насколько я понимаю, этот вопрос решается зависимостями.
Т.е. если пишете под гном, а запускаете под KDE, то при установке приложения в систему будет поставлен GTK и отрисовка будет идти через него.
И да и нет. С технической точки зрения особых проблем нет, вы можете написать приложение использовав KDE Frameworks и оно будет работать в Gnome (правда притащит по зависимостям половину KDE, но это вряд ли глобальная проблема), и наоборот.
С другой стороны, такие приложения будут скорее всего смотреться чужеродно в другой среде, в Gnome свой HIG, в KDE — свой. Это может вызывать определенный дискомфорт у пользователя.
UFO just landed and posted this here
В deb-дистрибутивах любят дробить программы на кучу мелких пакетов, да и дерево зависимостей частенько странное. В том же Arch и его деривативах зависимости как-то адекватнее.
UFO just landed and posted this here
Не думаю, что это лучше

А лучше-хуже по каким критериям определять? По-моему, юзеру вообще должно быть безразлично, сколько там пакетов ставится. Пакетами же пакетный менеджер управляет. У меня сейчас установлено 1938 пакетов и как-то пофиг.
UFO just landed and posted this here
Это, увы, фундаментальная особенность Линуксов с его отсутствием стандартной библиотеки (в т.ч. и графической), свободой выбора и стремлением к максимальному переиспользованию готового кода. Поэтому, если сидишь на определённой DE, лучше не пользоваться программами на «чужих» тулкитах. Я, например, сижу на KDE, и у меня почти все используемые программы либо из состава KDE, либо просто на Qt. Весь GTK-софт я бы с радостью выкинул из системы, но увы.
Я рассматриваю это не как «увы, а как возможность выбора.
Альтернативы:
1) ставить всё библиотеки сразу и тогда установка калькулятора не будет пугать сотней пакетов
2) таскать все библиотеки вместе с приложением, к счастью в linux такой подход встречается только по делу
3) использовать минимум библиотек — тогда софт будет выглядеть инородно и не сможет интегрироваться с DE
4) вариант 3 дополнить gui под разные DE
5) использовать, то что считаешь лучше или удобнее, а с зависимостями разберётся пакетный менеджер

Например, windows: выбора нет (точнее куда меньше), пакетный менеджер есть только в последней версии, и даже там вариант 5 слабо реален, а реализуются 1 и 2, поэтому чистое windows весит в 4-5 раз больше, чем мой linux со всем софтом, а потом часть зависимостей ставить руками (и хорошо если ставить, а не искать dll по интернету), а часть будет дублироваться в некоторых программах
У меня Убунту->Кеды->ЛедянныеОкна :)

Веселье начинается, когда с соытом прилетают чужие дрова и принудительно активируются первыми: с полным ффмпегом, пришло комп.зрение, с ним куда, куда принесла дрова на нвидию, и прописала на старт. У меня амд кругом. После ребута было грустно.
ИМХО,
Если чисто внешне:
— рамка вокруг приложения от WM (встроенного в DE) вполне единообразия добавляет.
— есть как минимум 2 (наиболее часто используемые) графические библиотеки: QT(использует в KDE, LxQT,...) и GTK (используется в GNOME, MATE,...). Хотя вижу постоянно попытки настроек чтобы приложения написанных с использованием разных библиотек выглядели похоже — но это скорее попытки (до следующих серьезных изменений).

В многих DE были (и есть) свои специфичные вещи:
— типа как давно было в KDE: DCOP (Ныне DCOP заменился на более стандартный для всех D-Bus. ), KIO, KParts, KHTML… Или GNOME, поговаривают, сильно на systemd завязан…
Часто в больших DE развивают какие-нибудь свои специфичные подсистемы и разработчику приложения бывает нужно учитывать и если такие специфичные DE фичи используются, то может под другим DE приложение будет не совсем также работать.

Хотя вижу, что какая-то стандартизация и унификация с годами происходит и приложения разрабатываемые под разные DE вполне по родному выглядят и работают и в других DE.
>Хотя вижу постоянно попытки настроек чтобы приложения написанных с использованием разных библиотек выглядели похоже — но это скорее попытки (до следующих серьезных изменений).

да, но всё же добится +- единого стиля можно: под i3wm поверх голых иксов использую связку qt5ct + kvantum для настройки qt-шных приложений и lxappearance для gtk — везде выбрана одинаковая тема (понятно что под qt / gtk они разные, но добрые люди уже сделали за меня портирование одной и той же темы в оба тулкита).
хотя конечно баги есть иногда
Фразы "+-единого стиля " и «конечно баги есть иногда» только подтверждают слово, что это скорее всё таки и есть только «попытки» и 100% одинакового вида достичь сложно, хотя мне (без скрупулёзного дизайнерского взгляда) на глаз сложно определить какое из используемых мною приложений на чем написано (на GTK или QT) и насколько у них «единый стиль».

У меня ситуация похожа на KillerSkiller — под fluxbox поверх голых иксов использую связку qt5ct + lxappearance + xfce4-notifyd-config. Использую мешанину из xfce/kde/gnome приложений, не обращая внимания где какое — выглядят действительно плюс/минус в одном стиле. Вышеупомянутые "баги", полагаю, касаются ситуаций когда в отдельном приложении внезапно вылезают слишком мелкие/крупные шрифты — не часто, но да, случалось.


Но суть в том, что это — вполне реально и по факту такой подход создаёт меньше проблем чем создают некоторые из перечисленных в статье приложений сами по себе. Приложения написанные под xfce/kde/gnome для решения одной и той же задачи слишком разные и много чем отличаются помимо мелких нюансов внешнего вида, так что нет смысла ограничивать себя приложениями "родной" DE.

>Вышеупомянутые «баги», полагаю, касаются ситуаций когда в отдельном приложении внезапно вылезают слишком мелкие/крупные шрифты — не часто, но да, случалось.

скорее когда какой-то софт почему-то не получает нужные env переменные.
например когда из firefox нажать «show downloads folder» — он откроет dolphin, но тот будет полностью ингнорировать всё что в kvantum настроено
как мне отмиррорить windows на удаленный X Сервер?
например показать экран моего windows ноутбука на raspberry+телевизор
(не спец по Windows) Проще всего по RDP или по VNC:
для RDP (аналоги RAdmin'а): графическое приложение «remmina» (и ей подобные) или консольное «xfreerdp»
для VNC: таже remminа вроде умеет, и консольная «vncviewer».

Графическая remmina(и ей подобные) проще для новичков, Консольные мне больше нравятся (там много опций дополнительно доступно) и удобнее вешать на кнопку, hotkey или в автозапуск прописывать.

Если ноутбук умеет транслировать экран на телевизоры по miracast — можно поставить на raspberry https://github.com/homeworkc/lazycast или что-нибудь подобное. Бонусом — можно будет транслировать туда же телефоны.

Xfce была задумана легковесной и в юности такой и была но потом стали «улучшать» и «оптимизировать» и в результате нонче она жрет больше чем кеды что помножило смысл затеи на ноль. Deepin красивый но довольно глючный мог бы показать всем как надо но вот сейчас и его «улучшили» до того что этих улучшателей нужно казнить поутру на центральнй площади города при многочисленном стечении народа в присутствии мэра и духовенства. В кедах тонны настроек но мы ж не можем сделать до конца хорошо и поэтому фиг вы поменяете местами значки, например, сети и звука. Прибиты в апплете наглухо. Про гном даже говорить ничего не охота. Там чемпионат по пробитию дна. Пока остаюсь на кедах но боязно мне что и их «улучшат». Хорошо форки есть.
Согласен. Их все так улучшили, что перестал ими пользавать — перешел на собственные смеси типа тайловый оконный менеджер, свои хоткеи и пару кнопок и статистик на рабочем столе.

Но с другой стороны простым пользователям (после Windows) очень удобно наличие кучи настроек (типа как в KDE, Deepin) — так что иногда родственникам не стыдно установить. (и у них нет часто больших запросов по скорости и уж очень глубокий тюнинг им тоже не нужен)

Мне кажется это естественный процесс — когда новичок только приходит в мир Linux, то "адаптированные для домохозяек" дистрибутивы помогают освоиться на начальных этапах. И дальше или человек находит что-то, чем он готов пользоваться, мирясь с недостатками, или начинает потихоньку изучать вопрос глубже и собирать систему под себя.
(или разочаровывается и уходит на windows, mac, FreeBSD, OpenSolaris)

… уходит (варианты куда):
— в буддизм
— в гараж
— на маковые поля
— в окно
(шутка юмора, местами ассоциации к Windows/Mac/...)

А так полностью согласен со сказаным.
UFO just landed and posted this here
Пользовался Cinnamon — когда искал DE к которому проще всего добавить дополнительные настройки мультитач-жестов (утилитой touchegg).
Выглядит и работает удобно. Но тяга местами сделать «свой велосипед» увела в тайловыеWM

У жены cinnamon на дебиане. Что сказать, штука действительно неплохая, но глючит, зараза — если бы не это, было бы вообще хорошо. Переключение юзеров — это самая глюкавая часть, но и помимо этого проблем хватает. Нередко виснет, временами начинает жрать 100% CPU. Иногда после выхода из спящего режима отваливается (проводная!) сеть, помогает её включить/выключить. В остальных случаях обычно помогает убить оболочку через Ctrl-Alt-Esc. Изредка убивать оболочку приходится из консоли, зайдя по ssh.

Можно переключиться на другой дисплей (ctrl+alt+Fx) и убить оттуда, не заходя удалённо. Или же включить клавиши убивания Х, что тоже помогает.

Первое — да, скорее всего тоже сработает (просто когда жена просит с этим помочь мне быстрее зайти по ssh со своего компа чем идти к её компу :)). Второе не подходит, потому что смысл в том, чтобы перезапустить только оболочку cinnamon, не трогая запущенные графические приложения.

На последнем 20-ом минте в цинамоне у меня только один баг: прячущиеся пиктограмы в быстром запуске. с 18 и 19 были подвисания, сейчас идеально. (дрова нвидиа проприетарные, если что)
Плюс. Сам сижу на Минте в Cinnamon — очень даже удобно, и, после KDE, шустренько так ( моя домашняя машинка — динозавр :) AMD Phenom FX4100, всего 6 (!!!) гигов оперативы и видюшка NVIDIA GeForce GTX 6500)

Что же брать для старого ноутбука или виртуалки, которой не хочется много памяти выдавать? Последние лет 6 жил на Xubuntu...

xfce — как раз вроде и был не сильно тяжелым.
На старом ноуте iceWM вполне сойдет — выбрать только тему посимпотишнее

Да просто выше написали, что xfce уже не торт в плане легковесности, я и поинтересовался

Говорят последние версии тоже стали больше жрать. По мне XFCE стал догонять (и имхо пока точно еще не перегнал) KDE и GNOME по тяжеловесности.

Просто кому-то и XFCE не тяжел в сравнении с KDE. Но если сравнить с тем же iceWM, то XFCE на порядок тяжелее.

Тут скорее можно примерно расположить по увеличению тяжеловесности (имхо):
TWM,
i3,…
IceWM, WindowMaker, openbox, blackbox, fluxbox, fvwm,…
LXQt
Mate, Trinity,
Xfce, Fly,
GNOME, Cinnamon, Enlightenment
KDE, Deepin
KDE и Gnome у вас местами перепутаны :-)
:)
Ну сейчас набегут холиварить))

Я тут скорее не про самые последние версии, а скорее усредненный по времени взгляд на эти проекты.

Да и KDE давно не пользовал — может и правду зря его в самые тяжеловесы записываю. Но +- одну позицию думаю могу ошибиться.
lxqt попробуйте. Правда, есть вероятность, что не найдётся нужный апплет. Но сама по себе среда жрёт немного.

попробую как-нибудь, спасибо

LXDE + голый Debian на скромном ноуте с CoreSolo и 512Mb, мне вполне комфортно.

а вообще между Lubuntu и debian+LXDE стоит ожидать большой разницы в ресурсоемкости?

Debian всегда шустрее, единственно что с Debian почти всегда траблы с wifi (особенно при установке, если это единственный способ доступа к интернету — к этому надо готовится зарание), ну и для для Debian нужен «напильник» чуть длиннее чем для Ubuntu, но если отладить и настроить то система будет работать как часы.

Проблемы с wifi там похоже из-за установленных в ноутбуках адаптеров от Intel (2200 которые или как-то там, с ними проблемы не только у debían но и у некоторых современных роутеров), вставляешь любой свисток за копейки и начинает работать, неприятно конечно, но лично сталкивался...

Почти, идея в том по-умолчанию Debian использует пакетную базу free репозитория, и поэтому там и в ядре линукс нет драйверов для wifi, которые большинстве своем проприетарные.

SparkyLinux, если нуждаетесь в wm то выбирайте Xfce

Тоже использую xubuntu, меня устраивает.
Я для виртуалки выбрал Lubuntu.
Lubuntu (= «Ubuntu с LXQt») — должно быть вполне легковесно и сильно ресурсы не есть
Как то делал тесты lubuntu и xubuntu после установки. До перехода на lxqt lubuntu она была легковесней чем xubuntu, после перехода стали примерно одинаковые.
Отрисовка шрифтов (подбор, размер и прочее) в Linux ужасная. Края букв сильно размыты (это можно увидеть на всех скриншотах), из-за этого устают глаза. Можно решить установкой монитора с большим DPI, но у меня ноутбук менять пока не планирую.
аналогичная история, гемороился с этими шрифтами еще со времен, когда не забросили infinality.
вот с одной стороны, я видел что шрифты в windows на 96 DPI очень корявые, но у меня от них не уставали глаза. в линуксе они рисуются эстетически приятнее, но вот глаза уставали на любых настройках хинтинга и всего такого.
проблема решилась, когда я купил ноут 15'' с 4к дисплеем, правда есть минус — теперь у меня везде 4к дисплеи, так как 96 DPI теперь мне крайне дискомфортен.

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


Кстати, после мака на линуксе рай со шрифтами, на маках мыло мыльное, если не ретина-экран)

UFO just landed and posted this here

Да, в Windows шрифты самые чёткие, но в убунте установка шрифтов Microsoft и возможно поднастройка пары флагов в настройках позволит приблизить рендеринг максимально к тому, что делает винда (да, у винды тоже много флагов в настройках для настройки ClearType).
Ещё можете попробовать некоторое время посидеть на маке и после этого запустить убунту, глаз будет радоваться :)

UFO just landed and posted this here
Это с каждым годом делать всё тяжелее. В Chrome и основанных на его движке приложениях (например, VS Code), уже несколько лет неотключаемое в Windows сглаживание. В Linux с переходом Pango на HarfBuzz несглаженные шрифты стали выглядеть, мягко говоря, странно. В Windows 10 во многих частях интерфейса (панель задач, новая панель управления) нет [известного мне] способа отключить сглаживание.
Выделю три основные компонента и перечислю их в порядке, как они запускаются при старте системы:

DM (Display Manager);
Display Server;


*DM зависит от XServer, а не наоборот. В вашей логике большая дыра.

Думаю, автор имел в виду, что процесс DM стартует первым и запускает иксы (по крайней мере, в /etc/init.d лежит lightdm, а не startx или что-то подобное). Без иксов, он, конечно, ничего отобразить не может.

гляньте вывод pstree на доступном вам Линукс и увидите, что DM (не графический) запускает X (или Wayland), а потом в них запускает себя графического. У меня например:
├─lightdm─┬─X───9*[{X}]
│ ├─lightdm─┬─i3
Это лишь особенности скриптинга, не более того. Как справедливо заметил коллега osmanpasha достаточно запустить startx из консольного режима и никакого *dm в pstree не будет. В части графики зависимость/использование на уровне API следующее:

kernel ⇐ XServer ⇐ *DM

Так, существование графического приложения без *DM возможно, а вот без XServer практически нет (если не брать в расчет приложения на голом DRM/DRM-Atomic).
Написано же «перечислено в порядке как они запускаются при старте системы».
Назовите дистрибутив, в котором так реализовано. А не потом руками прикручено.

То что «я могу запустить так» не подходит в качестве ответа, в линуксе можно много чего сделать. Даже думаю могу написать DM консольное, которое спросит логин-пароль и запустит startx.

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

SystemRescueCd (и Gentoo в целом) считаются? :)

Покажите фрагмент из pstree где графика запускается — вывод команды: pstree -a | grep -C5 X
Не уверен, что там по умолчанию DM не используется совсем.
DM не нужен при одном юзере и одном DE
Согласен. И предположу, что при установке Gentoo так можно сделать. Хотел бы глянуть как там выглядит соответствующий фрагмент с выводом pstree — скопипасте сюда у кого есть под рукой.
Gentoo необязательна, в любом дистрибутиве так можно сделать. Залогинился в терминале, startx и всё. Если нужно чтобы при startx автоматически запускалось DE/WM или любая другая программа — достаточно создать в домашнем каталоге файл .xinitrc в таком роде:

#!/bin/bash

export DESKTOP_SESSION=plasma
exec startplasma-x11


Тогда startx будет сразу запускать рабочий стол с остальной требухой.
Про startx и xinitrc в курсе. Могу и под systemd свой сервис с аналогичным функционалом написать (в принципе прям из этой же статьи команд надергать).

Меня интересует «из коробки»(не руками) может есть что.
На курсе обычно нужно рассказать «как устроен мир», а не «как можно его устроить» (хотя такое тоже вкрапляю иногда)
Видите ли в чем проблема. Вы пишете статью про Linux, а полемику ведете про дистрибутивы. Дистрибутивы, как показывает практика, на коленке собирают школьники и легко может наклепать добрая часть дискурсантов с любыми условиями из коробки. К Linux они будут иметь такое же частное отношение как и сабжевая статья.

Меня интересует «из коробки»(не руками) может есть что.
На курсе обычно нужно рассказать «как устроен мир», а не «как можно его устроить» (хотя такое тоже вкрапляю иногда)


Странный стиль в обсуждении замечаний собственной статье требовать примеров. Двоемыслие: лекция на основе практик слушателей?
Как раз не интересуюсь дистрибутивами собранными на коленке.
Интересуют дистрибутивы, так сказать классические (не только RedHat/Ubuntu и тд, но и любой другой достойный внимания (достаточно широко смотрю, пускай буквально первую сотню из distrowatch), и они мне кажется, отражают общее направление развитие Linux), но которые сам давно не смотрел (в этой ветке показалось что в Gentoo, что то по другому устроено, но на просьбу показать как пока никто ничего не написал). Мне это нужно для ширины взгляда, чтобы либо убедится что я верно обобщил в статье (на десятке дистрибутивов, но Gentoo не был в этом списке), либо чтобы понять что есть исключения и какие они. Но похоже замечание написать людям проще, чем скопипастить запрашиваемый фрагмент подтверждающий или опровергающий замечание.

И вместо разобраться вместе в сути какие-то странные обвинения. Троллинг наверно забавная вещь, но почему обвиняете легко, а на просьбу написать подробности несогласия и свои доводы — молчание и новые обвинения…

В любом случае спасибо и Вам.
Думаю, желание «из коробки» несколько противоречит духу линукс. Могу, конечно, ошибаться, но я помню времена, когда ядро собирал ручками из консоли. Как модули на нвидиа карту компилировал из терминала. Как VPN-тоннель поднимал, мандыбобя конфиг во много строк… Как тот же форвардинг в Debian прописывал кучей цепочек iptables…
Сейчас намного проще, можно мышевозить и всё, но некоторые вещи лучше все равно делать ручками. Не все есть «из коробки», вы же в windows тоже в настройки лезете?
К сожалению, ни в одной системе нет кнопки «Сделай мне зашибись», да и правильно оно. Нас ого-го сколько, и все со своими хотелками. Можно и пилочку для ногтей взять в руки иногда (напильник — это уже дебиановский серверный хардкор начала 2000-х… Я этот БДСМ проходил)
Давайте синхронизируем терминологию, но по возможности без дискуссионного компонента.

Linux — свободное ядро операционных систем и общая концепция их построения (несколько отличная от популярных тогда UNIX)

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

Дистрибутив в данном контексте — ОС на основе Linux (ядра и концепции). Дистрибутив != Linux.

Графическая подсистема в Linux размазана на разных уровнях. Её база в ядре в виде KMS, DRM/DRI, fbdev,… Другой её компонент — оконное окружение — это никто иной как XServer или компоузер Wayland и т.п. Пришлепкой над ним идёт приложение графического менеджера десктопов — *DM. С его помощью производится выбор десктопного окружения. Так вот, на мой профессиональный вкус (не претендую на истину, но и на дискуссию не настроен в этой части) графическая подсистема закончилась на оконном окружении, все остальное это графические приложения и окружения. Принцип разграничения прост — драйверный код есть/нет. Особняком стоят такие вещи как Mesa/llvm/проприетарные стеки, так как в них тоже есть драйверный код графики, но они на прикладной уровне живут.
Терминологию синхронизировали. Согласен с вами и понял замечание.

В моем обзоре слово «графика» используется поверхностнее и в рамках темы глубже и не думаю, что надо — тут скорее отдельную статью более глубокую нужно писать.
Меня интересует «из коробки»(не руками) может есть что.

Например, в Arch после установки графики нет. Можно в одну команду поставить какой-нибудь Wayland композитор, который даже без всяких startx и .xinitrc будет запускаться в той же виртуальной консоли. Это считается за «из коробки» или всё же руками?
Нет, не считается «из коробки». В любом Линуксе «одной командой после установки» можно много наворотить, но по этим результатам обзорная статья не будет полезна.

Я понимаю, что упоминаете Arch и мне очень нравится wiki.archlinux.org — одна из самых лучших документаций. И знаю дистрибутивы типа LinuxFromScratch и Gentoo — и понимаю, что довольно сложно в них решить, что «из коробки», а что я потом «допилил». Речь о том что сделать обзор на «готовые решения», а свои «комбайны», я и сам постоянно делаю и в статье упомянул, что и использую (на основе i3) — их сложно обозревать и новичкам понимания они не добавят.
То что «я могу запустить так» не подходит в качестве ответа, в линуксе можно много чего сделать. Даже думаю могу написать DM консольное, которое спросит логин-пароль и запустит startx.


Любой серверный дистрибутив — из коробки поставляется голая графическая консоль без любого запущенного (обычно и установленного) DM/XServer/*DE… Т.е. девайс после загрузки не в текстовом режиме, а в графическом с CLI интерфейсом на руках.
«Графическая консоль без XServer» — это имеете в виду поддержку framebuffer в консоли? Если это имеется в виду под словом «графический режим», то тут скорее спор получился про терминологию — не назвал бы его «графическим режимом», хотя понимаю что там и картинку можно отобразить и кино посмотреть… Просто не совсем понятно — скриншот бы не помешал для понимания.
Графическая консоль без XServer» — это имеете в виду поддержку framebuffer в консоли


Скорее нет. Контроллер дисплея может в двух режимах: текстовый и графический, они сильно отличаются менеджмент ом видео памяти. В одном контроллер оперирует пикселями, в другом шрифтами и символами. Так вот, в консольном режиме ядро Linux включает графический режим контроллера. Убедиться в этом просто — запросите вывод информации монитором, посмотрите разрешение. HD+-шных стандартов на текстовые режимы нет.

Дальше больше. В драйверах, например, для Intel (i915) нет кода включения текстового режима, хотя по документации на них же специфичных регистров тьма. На отдельных дискретных картах не работают стандарты VESA для перехода в текстовый режим.

Это все говорит о том, что графический режим со всеми его приложениями (видео в консоли, картинки,...) де факто почти повсеместен.
Согласен с вами и понял замечание.

В моем обзоре слово «графика» используется поверхностнее
UFO just landed and posted this here
Напишите, с удовольствием почитаю.

Всем не угодить.
Да и почему то на курсах администраторы не сильно интересуются DRI/openGL/weston…
:)
Стоит заметить заголовок НЕ «Как устроена графика в Linux», а «Как устроена графика в Linux: обзор различных сред оформления рабочего стола» (и тут вроде понятно о чем речь).

Почему тогда нет комментариев, что тема «Как устроена графика» (не в lInux, а в обще в принципе) не раскрыта? (если тут принцип «Берём от заявленной темы фрагмент и говорим почему получившаяся новая тема не раскрыта»)
А какой тайловый оконный менеджер посоветуете?
UFO just landed and posted this here
Много лет использовал dwm. Перешел на связку bspwm+sxhkd (одного авторства Bastien Dejean github.com/baskerville). bspwm использует libxcb вместо xlib, архитектура libxcb лучше и современней xlib. У bspwm тоже понятная архитектура и концепция, даже более suckless чем dwm, еще минималистичней. Более гибкое деление экрана на области, вообще управление гибче, больше возможных манипуляций. Нет раздражающих бордюров между тайлами при неудачных пропорциях. Конфигурируется на лету текстовым файлом (dwm все таки надоедает компилировать из за каждой мелочи). Смотрел сырцы, код чистый, приятно читать, при желании легко хакать.
UFO just landed and posted this here
Стековые и таббед лайоуты у него есть (как в i3)? Или только плавающий и тайловый?
Сам использую i3 и посматриваю на sway (аналог i3 под wayland). Но это то что попробовал первым и сразу остановился, другие не смотрел.

(Когда делал скриншоты для этой статьи) У awesome понравилось кнопка на панели для переключения режимов расположения окон

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

I3 очень прост и хорош, всего один файл конфига в доступном формате. Правда я использую форк i3-gaps, я не администратор и с гапсами (растояние между окнами) мне удобнее ну и советую в качестве панели Polybar он более кастомизируется, чем штатный i3bar.

Штатный i3bar ничуть не менее кастомизируем, если использовать альтернативные статусники, например
i3status-rust
image
Жаль не хватает прав лайкнуть.
Очень симпотичный скрин. Можете поделиться гайдом как сделать такие олдскульные вертикальные табы в браузере?
Это qutebrowser — браузер с vim биндингами. Но вроде и для лисы были какие-то такие расширения.
UFO just landed and posted this here
Ого! Полезная информация, спасибо. Я с Awesome познакомился относительно недавно, видимо не застал ещё смену API. Решил заценить тайловые оконные менеджеры и остановил выбор на нём, поскольку знаком с Lua и нравится идея его использования в конфигах. Ранее из минималистичных, продолжительное время использовал BlackBox, OpenBox и тому подобные боксы.

По поводу поддержки обратной совместимости — хорошо понимаю и полностью поддерживаю. Сам в студенческие годы любил перекапывать конфиги и всё переделывать под себя. Сейчас на это нет времени.
Сейчас себе тайловый оконный менеджер присматриваю, в первую очередь смотрю на те которые можно «дописать» на каком то языке прямо в конфигах. Как там у луа с асинхронностью и многопоточностью? А то слышал что есть проблемы с тяжелыми конфигами что если какой то код в конфиге выполняется сам WM стопорится на это время.
Вообще за все долгие годы работы под юниксами, довольно мало времени провёл под иксами. Обычно всё в консоли, локально или удалённо. В силу специфики рода деятельности, на дестктопе, к сожалению, от винды пока деваться некуда. Отраслевой стандарт.

Это к чему. Не подскажете, какие именно основные настройки «про себя» делаете, отличные от стандартных? Просто любопытно.
UFO just landed and posted this here

+1 к dwm, использую его уже хз сколько лет, не самый навороченный WM в мире, но простой как 3 копейки. Написан на C в весьма кратком и понятном стиле с использованием Xlib, можно хакать даже не будучи знакомым с Xlib и разбираться уже по ходу, также на suckless есть патчи с фичами.

а в каком разделе из перечисленных (и я удивлен почему его вообще нету) должен быть х11?
Не сказал бы что крыса прям уж такая легковесная.
По крайней мере сейчас в сравнении с теми же кедами.
Кеды сейчас более легковесны. Как по отзывчивости, так и по потреблению памяти.

На старом железе лучше отключить индексатор.

Если это сделать поиск по содержимому будет работать?

Разумеется, нет. Ну, кроме grep -R

Линукс на десктопе — это одно большое страдание
Днем я работаю на ноуте с убунтой, вечером пересаживаюсь за домашний macbook pro
macos намного приятнее
Ubuntu — постоянные глюки, уродливый не консистентный дизайн, огромные панели под ничего, отсутствие глобального меню, назойливые обновления которые ничего не фиксят, косой/кривой софт с разных расположением всего что можно, плееры на которые надо искать ман чтобы послушать музыку

Судить о линуксе по одной только убунте как минимум странно. А уж про маны на плеер выглядит как толстый троллинг)

Это был Rhythmbox и в стандартной теме не показывался уровень громкости
Я пробовал почти все, xfce, kde, все гномы и мэйт
Абсолютно все глючное и не протестированное, wifi отваливается, разъем наушников глючит, в kde nautilus падал от простого поиска файлов по regex
Еще более ужасным делает вырвиглазное оформление
От него глаза начинают болеть и краснеть
Любая цветовая гамма подобрана максимально плохо, резкие контрасты над светлым/темным
В понимании gnu темная тема это все черное, и белый браузер
В макоси — дарк тема чуть темнее лайта, но все равно довольно светлая, с комфортными глазу переходами
Unity можно считать первой и последней оболочкой, хоть немного приближенной к нормальному десктопу в мире linux
Тёмная тема по умолчанию, вполне вменяемые цвета.

И всё это на одной только убунте пробовали)? Уже давно использую федору с гномом, и по стабильности и оформлению эта комбинация меня устраивает. Никаких критических глюков почти не было, а если и были то потом их исправили.

Я одно время был вашим зеркальным отражением. Дома Linux Mint, на работе Mac OS. И Linux был значительно приятнее. Далее чистая вкусовщина:
Mac OS — дурацкий топбар, который непонятно зачем занимает место на экране. Вся информация, которая на нем есть, легко умещается в трее панели задач. Глобальное меню не нужно вообще — этим меню пользуешься раз в сто лет. Самые часто используемые функции все равно в тулбаре в окне приложения.
Странный док — запускаешь приложение в одном месте, минимизируется оно в другую часть дока. А крестик не закрывает приложение, из приложения надо еще дополнительно выходить. Про кнопку как бы "максимизации" — ну, вроде есть люди которым это нравится…
Установка софта по сравнению с Линуксом тоже так себе. Скачиваешь, оно почему-то монтируется как диск и то ли скачанное надо скопировать ручками в папку Applications, то ли содержимое примонтированого диска. Или это от приложения зависит? А у некоторых приложений был установщик, который сам что-то куда-то копировал. Общую логику я не уловил.
Настроить тачпад под tap-to-click и touch-to-drag тоже тот еще квест — надо что-то включать в нескольких местах. Одно из которых Accessability — никогда бы не догадался, если бы не гуглил. И все равно почему-то touch-to-drag периодически глючил и не срабатывал.


Про прослушивание музыки — на МакОС дефолтным плеером был iTunes. После этого критиковать другие плееры просто как-то немного неприлично...

Вот сколько смотрю на разные DE, остаётся ощущение, что до сих пор нет ничего настолько лёгкого, «консистентного» и гибкого, как CDE. KDE 1.xx приближалось, но свернуло всё не туда.

А так если надо — приходится настраивать fvwm, ставить vlc для видео и deadbeef для музыки, какой-то Tk софт…

Согласен Убунта это больше про то как быстро пересадить пользователей с винды… правда потом на мой взгляд эту эстафету успешно перенял Минт. Линукс в данный момент идет по пути максимально угодить всем, что в любом случаее предполагает наличие "напильника" например собрать свой линукс с каким хочешь интрефейсом и пакетной базой, в ручную править конфиги или лазить в миллионе настроек(на примере КДЕ). Такая свобода, которой нет ни в маке ни винде, ведет к тому что пользователь со временем должен уметь разбираться в базовом устройстве и настроить ее под себя.
Я тоже сидел некоторое время на Убунту и многое мне не нравилось (ломающиеся ppa, прожорство ОС и прочее) и тогда посмотрев рабочие столы других пользователей я решил собрать свою сборку поставил минимальный Дебиан, сверху i3-gaps, добавил picom для визуальных плюшек, свой софт и души не чаю в системе ни багов, ни поломок после апдейтов.
К минусам стоить отметить Линукс и Нвидиа — это отдельная боль(((((

Справедливости ради — во многом это не проблема убунту, а любого линукс-дистрибутива, где будет установлена GNOME и софт идентичный убунтовскому

Полностью не согласен, как пользователь линукса более 8 лет (на работе и дома), а теперь вынужденный пользователь MacOS (на работе). Так что есть что с чем сравнивать.

Вот честно, никогда не понимал и не понимаю, когда пишут gnome 3 ужасен, там все под мобилы заточено. У меня за 5 лет ни разу не возникло никаких проблем с gnome 3. Он просто работает. И все удобно, пользуюсь дефолтной темой без всяких дополнений. Насчет вырвеглазности линуха — очень субъективно. Я вот до сих пор не могу привыкнуть к MacOS, качество итоговой картинки (шрифтов) мне нравится намного меньше, чем в linux.

Установка софта в MacOS — это вообще отдельная тема. И не надо мне кричать про удобный homebrew. Во-первых не очень он и удобный, во-вторых это не официальный софт.

P.S.
вот чего из софта мне реально не хватает на linux — так это punto switcher. Как бы комично не звучало — но пожалуй лучшее изобретение яндекса. А те аналоги, что я пробовал на линуксе — жалкое подобие ((
UFO just landed and posted this here

И успешно испортил его своими оптимизациями.

У меня сейчас 2.1.5.1724 — абсолютно никаких нареканий. Работает отлично
Возможно, просто сколько помню себя — она принадлежала яндексу. Гугл говорит, что примерно в 2007 году была куплена
Для замены punto switcher-а попробуйте xneur.
Неужели не бывало ситуаций когда открываешь окно настроек в программе, а потом через alt tab фокус не возвращается в него?
Недавно я случайно альттабнулся во время выбора качества экспорта картинки в GIMP. Знаете что произошло? Окно потерялось. Т.е. материнское окно выбора формата экспорта есть, а дочернего тупо нет и никак на него не альттабнуться. При этом ничего не отзывается даже на закрытие по крестику. Пришлось убить приложение, благо сохранял проект. Я даже не представляю себе такую дурацкую ситуацию на винде.
В PHPStorm если вызвать диалог создания файла/папки и альттабнуться то модальное окно останется на экране.
Контекстное меню крадет клики вне себя, в винде любой клик вне сразу идет куда кликнул, без промежуточного действия.
Повторное нажатие на окно в панели задач ничего не делает, а должно сворачивать-разворачивать окно.

Я реально не понимаю кто это разрабатывал. Любители страдания пользователей, не иначе.
Окно потерялось. Т.е. материнское окно выбора формата экспорта есть, а дочернего тупо нет и никак на него не альттабнуться.

Кстати, та же штука на маке. Запускаете несколько приложений, потом нажимаете "Яблоко — О системе", там выбираете "Проверить обновления", потом закрываете обновления. В итоге окно "О системе" уходит на задний план, причём в списке окон его нет, альттабнуться на него нельзя. Единственный вариант — свернуть или отодвинуть окна всех открытых приложений, чтобы добраться до "О системе".
Хорошо хоть убивать приложения тут не приходится, просто неприятность :)

Единственное чем хороша Макось — GUI, в смысле отрисовки шрифтов и облика объектов интерфейса (их компоновка уже зачастую странная и неудобная). Я потому использую в KDE стиль, косплеящий macOS + шрифты Эппловские с кастомной отрисовкой. В остальном Manjaro Linux KDE для меня идеален. Нужна прога? Несколько кликов мышью, установка за 5 секунд. Обновление системы? Несколько кликов мышью, обновление за пару минут. ВСЁ, больше никаких телодвижений система не требует. Ничего не глючит, не падает, всё бегает резво, комп включен постоянно, ребут раз в 2-3 недели, когда апдейты накатываю.

Макось я тыкал, шаг влево-вправо — башкой в стену, «будет так, как мы задумали, или пошёл нахер», в топку.
чем хороша Макось — GUI, в смысле отрисовки шрифтов

На самом деле нет :( Если экран не высокой плотности, то шрифты ужасны (по моему мнению), на внешних мониторах глаза вытекают

UFO just landed and posted this here
линуксойдов

Линуксоидов.

Но даже не это вызывает, хм, раздражение. А то, какого уровня должен быть преподаватель, чтобы задекларировав тему
как устроена графика в Linux и из каких компонентов она состоит

вместо этого опубликовать на Хабре ликбез для чайников про DE в Linux, каких можно нагуглить десятки за несколько минут.
Тема «Как устроена графика в Linux: обзор различных сред оформления рабочего стола».

Да и уровень у преподавателя вроде отличный и не по одной обзорной статье он определяется. Если вы за час из классического курса по Линукс сможете передать больше сути или более «высшей математике», чтобы у людей сложилось какое-то понимание «как устроен Линукс» — напишите или пришлите ссылку на подобной материал.

Троллинг прям какой-то)



сам себя не похвалишь…

Вроде и не скрывался…

А про «уровень преподавателя» написал так как вроде точно лучше (хотя и предвзят) его знаю чем DoctorMoriarty
ликбез для чайников про DE в Linux, каких можно нагуглить десятки за несколько минут

я, честно говоря, примерно то и ожидал по заголовку, думал даже не читать статью.


а на самом деле как раз всё по делу, может быть не особо глубоко, но так глубоко нужно не статью на хабре писать, а энциклопедию

Какой первогном хороший был. Еще бы скринов второгнома, E16, перво-, второ- и третьекед. Шоб видно было, откуда опустились куда.
Первые кеды очень хорошие были. Никакого вырвиглазия, панель задач сбоку можно было поставить…
У меня и сейчас в KDE панель зада сбоку, разве с этим есть какие-то проблемы?
Надо бы. Не прям уж таки и «опустились», но мысль понятна. Да и сложно сравнивать тогда и сейчас — тогда не было флешек, wifi-настройка сети, мессенджеров, быстрый интернет (и как следствие «быстрая» проверка наличия обновлений),… и всякого другого подобного, что интегрировали в новых рабочих столах и явно от этого легче их не сделали.

Второгном == MATE
смотря какое «тогда» — я бы сказал, за последние 20 лет главным прогрессом были шины, dcop, dbus, и последовавшее за ними устранение необходимости по каждому чиху делать su/sudo.

всё остальное не очень понятно каким местом к DE конкретно относится, тк спокойно решалось и решается внешними сущностями.

Я с Линуксами обычно работаю как с серверами, из консоли, но довольно интересно узнать об оконной составляющей. И есть такой вопрос: какова совместимость приложений между разными X-ами, DS, DE? У них разные API или все графические приложения нормально работают со всеми оконными системами? Или может это определяется на уровне DS, а DE может быть любым?

LinuxCertifiedInstructor, рано я похвалил статью, раз после её прочтения остаются такие вопросы.

Да уж, но вопрос уже даже формулируется в терминах DS/DE/X — знать польза есть
И сам линуксами больше в консоли работаю. Разработкой по графику не занимаюсь — да вот для таких же как я решил обобщить свои знания про «графику».

Про Х(DS): «Разных Иксов» пока нет (хотя часто под Х'ами раньше имели в виду XFree86, потом они сменили лицензию, и в Линуксах стал развиваться его форк с более открытой лицензией с названием Xorg. Иногда упоминают определенную версию — например X11 = Xверсии11. Xming — это портированые Xorg под Windows) — это можно сказать примерно одна и та же программа. И программы (X-клиенты), которые в ней отрисовываюся, с ней общаются по своему стандартному Х-протоколу. То есть протокол один и тот же и графическим программам не сильно важно какая конкретная реализация Иксов будет отрисовывать.

Про DE: Многие функции DE реализованы через стандартные механизмы: D-Bus, Polkit,… — и как следствие приложения примерно одинаково работают в разных DE, хотя внешнее оформление отличается (написанных с использованием разных библиотек: GTK, QT,...). Ну и внешний вид рамки вокруг приложения — это WM(часть DE), а не само приложение отрисовывает.

В общем мой вердикт графические приложений (не использующих, что то прям сильно специфичного — не знаю что в пример привести такого) нормально работают в любом DE.

в статье не хватает главного: чем занимается x-сервер, чем занимается dm, чем занимается wm. понятно, что это миллион раз написано, но без этих знаний статья бесполезна (кто знает — ничего нового не увидит, кто не знает — так и не поймёт)

Вроде написано:
DM (Display Manager), дисплейный менеджер. Его основные задачи: спросить, каких пользователей пустить в систему, запросить аутентификационные данные (пароль, отпечаток пальца); выбрать, какую среду оформления рабочего стола запустить.

WM (Оконный менеджер) — некое приложение, которое отвечает за управление окнами, добавляет возможность: перемещений окон по рабочему столу (в том числе стандартное с зажатием клавиши Alt за любую часть окна, а не только за заголовок); изменение размеров окон, например, перетаскивая за «рамку окна»; добавляет к интерфейсу окна «заголовок (title)» и кнопки сворачивания/разворачивания/закрытия приложения; понятие, какое приложение находится в «фокусе».

Display Server — это некий фундамент графики, основная задача которого — работать с видеокартой, монитором и с различными устройствами ввода (клавиатура, мышь, тачпады). То есть приложению (например, браузер или текстовый редактор), которое отрисовывается в «графике», не нужно знать, как напрямую работать с устройствами, не нужно знать про драйверы


Хотя угадай тут, что edo1h не хватает

это не мне, это AivanF не хватило информации в статье, чтобы понять общие принципы. из этого я сделал вывод, что им в статье было уделено недостаточно внимания. та цитата, что вы привели, это только подтверждает: человеку, который «не в теме» вряд ли этих трёх абзацев окажется достаточно для понимания.

«Разных Иксов» пока нет

Разные «Х-ы» и были и есть. Есть даже платные проприетарные, только они не на слуху.
Я какое-то время использовал вот такие: www.xig.com Т.к. они гораздо лучше работали с видеокартой, что была на тот момент. Базовый протокол, конечно, у них примерно такой же, как и у привычной реализации, а расширениями вполне могут отличаться.
Иногда упоминают определенную версию — например X11

Только следует заметить, что X11 это версия протокола, точнее часть версии, а не название или версия сервера. Полная, например, X11R7.0. Раньше были X10, X9 и т.п.
и графическим программам не сильно важно какая конкретная реализация Иксов будет отрисовывать

Это не так. Программе могут требоваться некоторые расширения, которые могут быть, а могут и не быть. Программа может продолжать работать, но выглядеть будет иначе.
Ну и внешний вид рамки вокруг приложения — это WM

Сейчас это верно лишь частично, т.к. всё чаще используются CSD — client side decorations, т.е. программы сами себе рисуют рамку окна.
Меня радует cinnamon тем, что он написан на js почти польностью и баги можно править самолично, ну или допиливать что-то.
TL;DR. Устроена графика хренрва. Сложна, нипанятна, результат отстойный.
Cinnamon

Форк GNOME Shell, предоставляющий пользователям интерфейс в «классическом» стиле (как это было в GNOME2).

Может быть я ошибаюсь, но я всегда считал, что «классический» стиль Gnome2 — это двухпанельный. А у Cinnamon все по стандартному — одна панель внизу, «пуск» слева, часы и трей справа.
Собственно, двухпанельный вид мне когда-то очень зашёл, когда пользовался gnome fallback/flashback.
«классический» стиль Gnome2 — это двухпанельный

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

По мне(в SUSE так — это и можно судить и по скриншоту выше у Mate(это продолжение Gnome2)) «классический вид» был однопанельный, но вероятно были дистрибутивы которые стали использовать две панели (как у Pantheon на скриншоте выше).

При этом часто видел подобное (двухпанельное) оформление (по умолчанию, на разных дистрибутивах) в Mate и в XFCE (хотя нижняя панель иногда там MAC-образного вида).

То есть это скорее не DE-специфичное, а дистрибутиво-специфичное.

Не хочется ввязываться в спор, но в той же Википедии большинство скриншотов gnome2 также двухпанельные.

И поиск по «gnome2» на Яндекс.Картинки и Google.Images тоже показал больше скриншотов с двумя панелями… и многие из Ubuntu
Sign up to leave a comment.