Выпущена Xfce тема оформления Chimbalix-orange, исправляющая проблемы взаимодействия с интерфейсом
Как растянуть окно в операционной системе Microsoft Windows? Легко! Наводим курсор на край или угол и растягиваем, наверняка многие даже не задумывались, что такая базовая операция взаимодействия с интерфейсом может оказаться сущим кошмаром в среде Linux...
реклама
Да, я говорю про неадекватно тонкие границы окон размером 1-3 пикселя, что часто наблюдаю в дистрибутивах использующих Xfce в качестве "рабочего стола", например Debian 11.6 Xfce, Linux Mint 21 Xfce, XUbuntu 22.04.1, MX Linux 23 и т.д.:
![]() |
![]() |
Мой дистрибутив Chimbalix сейчас тоже в этом списке "позора", ибо основан на MX Linux с проблемой тонких граней, а значит нужно её исправлять, я не собираюсь издеваться над собой и другими пользователями через интерфейс, с которым невозможно по-человечески взаимодействовать без микроскопа.
Вообще разработчики MX Linux отчасти позаботились о проблеме, нужно всего лишь запустить MX Tweak, поковыряться в разорванных на куски темах, и в колонке Window Manager найти вариант "thick-border", но сразу же предостерегу "особо умных" от того, чтобы бежать в комментарии и брызгать слюной, мол, решение прямо перед носом, а я такой тупой и криворукий всё переделываю за другими разработчиками:
![]() |
![]() |
реклама
Вообще я ни разу не разработчик, и даже не эксперт в линуксах, но почему-то именно мне приходится постоянно исправлять характерные для Linux косяки и проблемы, в том числе следующие недоделки с оформлением, только посмотрите на это божественное примыкание заголовка к телу окна, при этом как можно заметить, взаимодействие через верхние углы напрочь отсутствует:
Вероятно разработчики MX Linux планировали в светлой теме использовать светлую полосу заголовка, что как бы логично, а потом кому-то ударила моча в голову, и сделали заголовок чёрным, прямо как в тёмном варианте оформления, но позабыли про наличие куска под названием "thick-border", что уже был адаптирован под светлый фон, и вдобавок забыли адаптировать верхние "углы" под утолщённые грани...
Не знаю как ещё эту корявость объяснить, даже с тёмным вариантом все косяки интерфейса никуда не исчезают, и меня это напрягает, в том числе маленькие кнопки управления окнами, которые вынуждают замедляться при взаимодействии с ними:
реклама
Так что же ковырять? Как исправить эту дичь? Скачать тему для Xfce? Отлично, скачал вот одну, на вид адекватно реализованную тему, что дальше? Как устанавливать? Вот и приплыли с линуксом, вроде что-то есть, а как использовать хрен знает:
![]() |
![]() |
Кто-то всхлипнет, мол я тупой вендузятник, не умею читать мануалы, ну окей, иду читать мануалы на Xfce, там сказано: Распакуйте тему в ~/.themes, отлично, а что значит символ "~" перед "/.themes"? Куда распаковывать?
Я то понимаю, это означает домашнюю папку пользователя, в моём случае "/home/chi/.themes", но один вопрос, а где папка ".themes"? Почему в дистрибутиве MX Linux нет такой? Мне её создать, или у меня просто не поддерживается такой способ установки тем? Я не знаю для кого такие недоразвитые мануалы пишут, но точно не для нормальных людей, которые пришли пользоваться операционной системой, а не сидеть сутки напролёт изучая линуксоидные закорючки всевозможные:
реклама
Может дистрибутив MX Linux весь такой плохой и ужасный, а в других всё нормально? Любят же приверженцы Linux перекладывать вину за все косяки на окружающих, перекладывание вины на сами дистрибутивы им тоже не чуждо, только вот в Debian 11.6.0 тоже нет папки ".themes", выходит не только MX Linux, но и другие дистрибутивы тоже кривые:
И вообще, у меня в основной системе домашняя папка уже превратилась в помойку, что можно голову сломать, а ведь я всего ничего пользуюсь линуксом как основной ОС... Это тот случай, когда лучше бы у Windows скопировали подчистую структуру каталогов, хоть пользователям не приходилось бы окунаться в свалку всего и вся каждый раз заходя в домашний каталог.
Ну да ладно, вернёмся к делу и создадим нужную папку вручную, мне не привыкать, в какой-то степени это очень увлекательное занятие, подтирать задницы за разработчиками дистрибутивов Linux:
Наконец получилось установить тему, только вот проблема, она как-то не помогла сделать интерфейс более адекватным в использовании, внешне может и похоже на Windows 10, но в работе как типичный Linux, абы как наперекосяк, в использовании даже и близко не похоже на оригинал:
![]() |
![]() |
Насколько нужно ненавидеть людей, которые поделом отвергают Linux продолжая использовать Windows несмотря ни на что, чтобы делать границу окон в 1 пиксель со всеми вытекающими из этого проблемами, сделали визуально похожим, окей, а как пользоваться? Об этом, как всегда, не подумали:
Если пользователям Windows сделать зону захвата границы в 1 пиксель, я не знаю, это просто немыслимо, Microsoft явно не идиоты, чтобы так издеваться над своими пользователями... Может у настоящей Windows грани визуально вообще порой отсутствуют, но я специально запустил в виртуальной машине систему от Microsoft и посмотрел, грань взаимодействия имеет толщину примерно ~7 пикселей, что о многом говорит:
Но вернёмся к линуксам, есть одна "небольшая" проблема с Xfce, можно изменить два нижних угла, левый и правый край, даже нижний край, но верхний край никак не контролируется темой оформления, а верхние углы контролируются характерным для Linux методом, через задницу, хотя со скриншота этот нюанс не очевиден сейчас:
То есть можно сделать какие угодно грани толстыми, но только не верхнюю, и это печально, ведь уже не первое десятилетие существует Xfce, а до сих пор функционально неполноценен, или может я не умею читать линуксоидные простыни писанные куриной лапой по навозу, что называют "документацией"?
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Если кто знает способ увеличения толщины верхней грани окна, уж будьте добры, поделитесь неведомым заклинанием, только без хитростей с визуальным обманом, когда граница рисуется в полосе заголовка (файлы title-*.xpm и т.п.), ну и без линуксоидных соплей в стиле "посмотри документацию и разберись"...
А я начну работу над своей темой оформления.
Первым делом создаю "разметку" согласно существующей информации в документации Xfce, получилось 60 файлов для каждого кусочка интерфейса, за исключением верхней грани разумеется, ибо такой в принципе не существует, разработчики Xfce не удосужились её создать:
Ну и верхние углы тоже отсутствуют в этой солянке, хотя и есть файлы top-left/top-right, но по факту это не углы, а продолжение полосы заголовка взявшие на себя роль углов, эти куски правильнее назвать title-0-* и title-6-*, ибо они должны быть таких же размеров по высоте, как и заголовок, иначе шаблон будет разорван.
Далее нужно создать themerc файл согласно "документации", в которой бывают настолько глупые ошибки как пробел вместо нижнего подчёркивания при написании параметра, а сами параметры размазаны как попало по всей простыне:
В этой документации нет никакого порядка и организованности, собственно, как и в самих линуксах, от чего пользоваться этим всем по-человечески невозможно, и это одна из причин практически нулевой популярности Linux среди обычных людей.
Особенно меня позабавил параметр "frame_border_top", который есть ничто иное, как издевательство над всеми пользователями Xfce, ибо исходя из документации это не параметр задающий толщину верхней грани, а параметр обрезающий указанное количество пикселей от границы развёрнутого во весь экран окна, как вам такое описание?
Да, в Xfce фактически нет верхней границы окна, но есть сомнительный костыль, который обрезает указанное количество пикселей от верхней "грани" окна когда оно развернуто во весь экран:
Конечно, извращаясь с этим параметром можно увеличить зону захвата верхней "границы" окна, но платить за это придётся множеством костылей во множестве файлов, малейшая ошибка в одном из которых приводит к необходимости заново переделывать массу уже проделанной работы, потому этим дерьмом я не стану пользоваться при создании своей темы.
Я это всё вижу как абсолютно наплевательское отношение со стороны разработчиков Xfce не только к пользователям, но и к труду, что был вложен в разработку данного Desktop Environment (DE)...
Так как документация сделана посредственно, мне пришлось создать свой вариант "справки", гораздо более конкретный и наглядный, здесь чётко и без соплей указано, где должны находится Темы оформления:
Файл themerc тоже наполнился параметрами и полезной информацией, которая мне будет помогать в создании дополнительных тем оформления, а может и не только мне:
Теперь займёмся оформлением, боюсь огорчить всех, кто подумал что я возьму чужую тему за основу и немного подредактирую, нет, я хочу сам сделать всё:
Сначала сделаю базовый шаблон, а после уже займусь оформлением, ведь нужно сделать не одну тему, а как минимум две, может и больше... Вот и готовы первые наброски, пожалуй для начала сойдёт, только вот это были декорации окон, а не полноценная тема оформления, наверное уже все заметили, что таким образом можно изменить только часть окна отвечающую за взаимодействие, но не внутреннее оформление:
За оформление самих приложений отвечает уже GTK, посмотрим как там сделана тема mx-comfort? И тут стало ясно, что линуксоидный подход, как всегда, ужасен и беспощаден, для тех, кто не понял, слева в "блокноте" указано количество строк в css файле темы GTK-3, руками это нереально всё переделать:
Без адекватного редактора тут явно не обойтись, но есть ли такие для Linux? Первое на что я наткнулся, это статья про Oomox, как оказалось, довольно старая статья, хотя ресурс явно скрывает дату публикации, ибо только по комментариям трёхлетней давности удалось выяснить, насколько тухлая "инструкция"...
Я долго танцевал с бубном пытаясь установить/запустить themix/oomox, но ничего не получилось, мне пришлось бы писать ещё одну статью, если бы решил выложить процесс возни с этим всем "как есть":
![]() |
![]() |
![]() |
Думаю если в виртуальную машину установлю какую-нибудь Ubuntu 17/18, и там попытаюсь всё слепить воедино, возможно из этого что-то выйдет, если конечно репозитории с нужными зависимостями ещё не вымерли с концами, но даже так, это такой геморрой на голову, что пошло оно всё к хрену.
Единственное, что после всех танцев с бубном у меня появился ярлык в панели управления, который был замечен далеко не сразу, видимо на каком-то этапе всё же что-то получилось как-то:
Насколько это всё работоспособно ещё предстоит выяснить, ибо сходу сложно что-то понять в этом винегрете из кнопок и прочих токсичных элементов интерфейса:
Как-нибудь потом возможно займусь плясками с GTK, уж точно не сейчас, не буду распыляться на всё подряд, иначе ничего не доведу до конца...
В общем принялся за дизайн основной Xfce темы дистрибутива Chimbalix. Так как мне не нужно каждый доступный кусочек интерфейса делать уникальным, было решено оптимизировать структуру файлов символическими ссылками, таким образом достаточно отредактировать всего 8 файлов вместо 24, чтобы изменить контуры окна, включая заголовок являющийся фоном для кнопок:
Остальные элементы интерфейса, к сожалению, не выйдет сократить символическими ссылками, кнопки нужно вручную рисовать по шаблону, благо графический редактор Krita адекватен в плане работы со слоями, и даже умеет в эффекты слоёв, что очень поможет в работе:
Меня пробирает ужас как только представлю, что это всё пришлось бы делать в "графическом редакторе" GIMP, который не только с эффектами слоёв не умел работать, когда им пользовался, но и даже выделить больше одного слоя одновременно не позволял...
Если вдруг GIMP научился в выделение более одного слоя одновременно, а так же в эффекты слоёв, вы уж намекните мне в комментариях, а то уже устал ждать когда разработчики осилят столь базовый функционал в так называемом приверженцами Linux "аналоге фотошопа".
В процессе работы над интерфейсом мне понадобилось переработать символические ссылки, чтобы нижнюю и боковые границы оформить отдельно друг от друга, но это мелочи, из которых строится полная картина:
Вот так получилась первая тема оформления для Xfce, полагаю её следует назвать Chimbalix-orange, хотя данный цвет мне просто под руку попался как подходящий:
Итого имеем:
1) Достаточно крупные кнопки управления интерфейсом, чтобы было комфортно пользоваться в быстром темпе, но не слишком большие, чтобы чрезмерно увеличивать толщину заголовка.
2) Вспомогательные кнопки немного укорочены по ширине, так как ими обычно реже пользуются, чем основными "закрыть/развернуть/свернуть", это оставляет больше места под текст заголовка, что полезно если окно слишком маленькое.
3) В интерфейс добавлена кнопка "sticky" (замок), нынче про неё забывают при разработке тем оформления, и очень зря, ведь она позволяет закрепить окно, чтобы оно всегда находилось на активном рабочем столе.
4) Стандартная толщина границ 4 пикселя, это оптимальное значение, которое практически не приводит к конфликтам размеров, если сделать на 1 пиксель меньше - становиться на 25% сложнее взаимодействовать с интерфейсом, а если увеличить хоть на 1 пиксель - приводит к таким неприятным последствиям, как нехватка внутреннего пространства в некоторых приложениях когда окно прикреплено к половине экрана:
![]() |
![]() |
5) Верхние "уголки" на 2 пикселя толще основных границ окна, эта "мелочь" значительно упрощает взаимодействие с интерфейсом, когда нужно растянуть слишком маленькое окошко, или уменьшить слишком большое, особенно при низком разрешении экрана вроде 800x600:
6) Само собой имеется вариант с более толстыми гранями (6 пикселей), если вдруг стандартного варианта недостаточно, это не слишком много, но больше чем обычно предлагают другие темы оформления с "толстыми гранями":
6) А так же вариант HiDPI, чтобы даже владельцы 17"-19" ноутбуков с 1440p/4K матрицами имели возможность подогнать размер интерфейса без помощи функций масштабирования, вдруг человек не хочет такие функции использовать... Хотя это выглядит, мягко говоря, очень странно:
Даже при 4K разрешении (3840x2160) HiDPI вариант выглядит ну слишком огромным на 25" мониторе, такое чувство, что я проделал дурную работу... Хотя кто знает, вдруг кому действительно это нужно будет:
![]() |
![]() |
7) Пожалуй сделаю ещё "slim" вариант, чтобы точно на любой вкус были размеры:
8) Изначально я планировал создать тёмный вариант темы, но как оказалось, Chimbalix-orange вполне неплохо сочетается с тёмным вариантом внутреннего интерфейса, потому пока отложу эту затею:
9) Для полного комплекта был создан промежуточный вариант "med", он явно просился сюда, заодно немного подправил вариант "slim", но это уже за кадром:
Осталось встроить наработки в свой дистрибутив Chimbalix, теперь можно нормально взаимодействовать с системой без нервотрёпки и помощи микроскопа:
![]() |
![]() |
![]() |
Что осталось сделать? Правильно, выгрузить свои темы в репозиторий GitHub, чтобы и пользователи других дистрибутивов могли воспользоваться результатами моего труда, тем более мой дистрибутив до сих пор не выпущен в публичный доступ:
( https://github.com/Shedou/Chimbalix )
Так как репозиторий начинает разрастаться, настало время сделать первый "релиз":
Запаковал скрипты и темы для Xfce по отдельным zip архивам, теперь не нужно скачивать репозиторий целиком, чтобы получить только темы или скрипты по отдельности, всё ради удобства, ведь делаю в первую очередь для себя:
На этом пора заканчивать статью, и так работы оказалось больше запланированного по вине кривой документации и косяков на ровном месте, это же линуксы... В любом случае проблем стало меньше в дистрибутиве Chimbalix, и это радует.
Пожалуй можно уже начинать думать про выпуск дистрибутива в публичный доступ, и вторую стадию разработки переустановив оригинальный, уже порядком использованный MX Linux на свой Chimbalix.
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.
Комментарии Правила