Новости разработки Chimbalix Linux - исправляем приложение "Баобаб" и дорабатываем скрипты

Предыдущая часть:
реклама
Новости разработки Chimbalix Linux - продолжаем исправлять проблемы
Ранее была исправлена и доработана программа установки дистрибутива Chimbalix, а так же программа создания ISO образа из работающей операционной системы, но есть ещё очень много характерных для линуксов проблем, требующих доработок и исправлений, про некоторые из них сейчас поговорим.
-
Baobab
Что обычно люди делают, когда нужно проанализировать занятое место на диске? Если в качестве операционной системы Microsoft Windows - просто выбирают одно из множества приложения для анализа дисков, и вся информация максимально наглядно представлена:
![]() |
![]() |
реклама
Но что делать в среде Linux кроме как красноглазить с терминалом? Как вариант, вполне можно использовать Disk Usage Analyzer Baobab! Правда, как и большинство линуксоидного софта, это то ещё дерьмо с отвратительным интерфейсом, разработчики которого из GNOME Project наверное не до конца осознают предназначение своего творения...
![]() |
![]() |
Именно это уродство в виде боковой панели было решено исправить, так как мне самому противно этим пользоваться, ибо боковая панель с токсичными "диаграммами" и "плитками" не подразумевает возможности себя скрыть, а собой она очень даже скрывает длинные имена файлов перечисленные в левой панели с древом каталогов.
Я долго думал, как это всё убожество привести в адекватный вид, и ничего лучшего не придумал, как обычным "блокнотом" вырезать уродливую и токсичную боковую панель сжирающую половину окна:
![]() |
![]() |
Почему мне пришлось делать всё "блокнотом", начнём с того, что мне нужно было чем-то исправлять файлы отвечающие за интерфейс, а это по своей сути XML документы с расширением UI:
реклама

Так называемый Builder ("A toolsmith for GNOME-based applications") не умеет работать с файлами интерфейса:

А специализированный для работы с UI линуксоидный инструмент Glade оказался бесполезен, так как не умеет с такими файлами работать, хотя казалось бы, именно для этого он и предназначен:
реклама

А ещё говорят что Linux это отличный выбор для разработчиков, не то что в клятой и поганой Windows кнопочки расставлять через ужасную Visual Studio, и там же работать с исходным кодом...
Я уже не говорю какой геморрой на голову было найти даже эти кривые линуксоидные инструменты, чтобы их проверить на дееспособность:

Ну и вишенка на торте это Vim в списке рекомендуемых редакторов исходного кода и сред разработки на Wiki сайте проекта GNOME:

Никто не понял что это такое, и почему я так насмешливо отозвался? Позвольте продемонстрировать что такое Vim:
![]() |
![]() |
Да, чисто технически Vim можно использовать как IDE, но ставить его в один уровень с чем-то вроде VS Code от Microsoft, ну это чистое издевательство, в общем "почувствуйте разницу":
![]() |
![]() |
![]() |
В Линуксах если над пользователем не поиздевались - значит жизнь не удалась, это я уже давно понял...
Только одно радует, мне не пришлось насиловать мозги в попытках скомпилировать исправленное приложение, ибо использовал исходный код не из официальных репозиториев разработчиков, а из репозиториев Debian, где уже подготовлена основа для компиляции (не считая зависимостей), о локальной копии которого заранее позаботился:

Хоть клонированные линуксоидные репозитории до сих пор по-человечески не работают без ошибок когда пытаюсь подключать (вечно линуксы ломаются на ровном месте), но это не мешает вручную взять исходный код из архивов для доработки и исправления.
Можно ещё отметить что в официальном репозитории уже вышла 46 версия Baobab, а я исправлял 43 версию, но судя по истории изменений - ничего действительно полезного не сделали в новой версии, основную проблему убогости интерфейса явно не исправили, а значит и смысла гнаться за самым новым нет:
![]() |
![]() |
![]() |
Теперь посмотрим на разницу, что же такого я исправлял... Может с технической стороны мои исправления выглядят ужасно, но меня как-то не волнует это, мне важно чтобы приложением можно было комфортно пользоваться не выжигая глаза уродливыми "кругами/плитками".
Если приложение не может адекватно предоставить функционал визуализации древа каталогов - лучше пусть вообще не предоставляет, извините, но я не настолько крутой разработчик, чтобы сходу переработать половину приложения отвечающую за визуализацию древа, да и вообще изначально я не разработчик софта:
![]() |
![]() |
Теперь посмотрим на разницу в стиле "было - стало", я не знаю, может кому-то и по нраву оригинальная версия Baobab с токсичной боковой панелью, но в моём дистрибутиве этот инструмент будет гораздо более адекватно выглядеть:
![]() |
![]() |
![]() |
![]() |
Так или иначе, я никому не запрещаю вернуть обратно оригинальную токсичную линуксоидную дичь...
-
--
Скрипты
Далее перейдём к скриптам, так как программа установки дистрибутива Chimbalix уже доработана, то и нужды в костыле для Linux больше нет, однако я его разработал таким образом, что функционал отвечающий за каталог "PortSoft" просто не задействуется при наличии каталога, так что тут можно оставить в покое старые скрипт.
Но скрипт создания скриншотов уже совсем другое дело, практика показала, что его надо доработать:
![]() |
![]() |
Почему вообще мне пришлось создавать скрипт для создания скриншотов, разве нельзя было просто использовать линуксоидный скриншотер без всяких скриптов? Конечно можно! Правда спустя несколько дней интенсивного использования линуксоидный хлам ломается сам по себе, потому пришлось часть его функционала переложить на свой скрипт...
Не то чтобы мой скрипт тоже ломался, нет, он прекрасно работает сколько бы ни создавал скриншотов:

Дело в самом скрипте и удобстве поиска нужных скриншотов по дате...
Для начала я добавил проверки на успешность выполнения приложения xfce4-screenshooter, и только при успешном выполнении сделал вызов команды xclip, что отправляет изображение в буфер обмена для дальнейшего использования.
Так же добавил аргумент "-p" команде mkdir, что позволяет создавать конечный каталог сохранения скриншота даже если отсутствуют предыдущие каталоги, например пользователь случайно удалил каталог "Screenshoots", старый скрипт просто ничего не создал бы, ведь xfce4-screenshooter не умеет сам создавать каталоги к точке назначения.
Ещё упростил и проработал имя выходного файла, но это повлекло за собой проблему... Если пользователь сделает два и более скриншота в течении одной секунды, то старые скриншоты буду перезаписаны, потому была добавлена дополнительная проверка наличия файла, и если файл уже присутствует - к имени добавляются наносекунды разделённые на 10000000, чтобы взять не полное число из 9 знаков, а только два.
Ну и в целом над форматированием кода чуток поработал:

Если раньше имена скриншотов представляли собой месиво из цифр, то сейчас они указывают конкретную дату и время через заметный разделитель, а если сделано несколько скриншотов за секунду - ничего не будет потеряно, в разумных пределах разумеется:
![]() |
![]() |
![]() |
disable-nouveau-driver
Как устанавливают драйвер видеокарты нормальные люди в нормальной операционной системе? В случае Windows система обычно сама это делает начиная с 10 версии, ну а если автоматически установленный драйвер не устраивает пользователя - всегда есть возможность зайти на официальный сайт производителя видеокарты и скачать нормальный установочный пакет драйвера.
Однако в случае Linux всё очень печально, ведь в линуксах установить драйвер без компиляции ядра практически невозможно, а благодаря постоянно бурлящему болоту зависимостей - поддерживать линуксы не очень то и привлекательно со стороны производителей оборудования...
И ладно бы линуксоиды не добавляли дополнительных проблем, но увы и ах, в линуксах практически всегда по умолчанию активирован вечно проблемный и конфликтный Nouveau драйвер для видеокарт NVIDIA, а для видеокарт AMD уже встроены вечно кривые и проблемные драйверы AMD, что до сих пор полноценно не могут осилить поддержку видеокарт серии Radeon HD 7xxx и R5-R9 200/300 (GCN 1.0 / 1.1):

Причём ждать поддержки OpenCL и иных API от встроенных в Linux драйверов AMD не следует, например чтобы полноценно работать в Blender, но это вообще отдельное мракобесие характерное для Linux...
Слава богам я уже давно избавился от видеокарт AMD и забыл как страшный сон утечки памяти, ошибки с драйверами, порезанные "устаревшие" расширения OpenGL (проблемы в старых играх и не только) и прочее дерьмо характерное для AMD, а перешёл я когда-то на GeForce GTX 1070, что по сей день прекрасно работает, разумеется с нормальными драйверами от NVIDIA.
Но линуксоидный драйвер Nouveau от этого никуда не исчезает, продолжая доставлять проблемы пока не будет заблокирован, потому были разработаны скрипты для блокировки драйвера Nouveau, и они немного доработаны, теперь скрипт работает только при запуске с root правами, он конечно и так не работал без root прав, но теперь в коде подчищены "sudo" и добавлена проверка на наличие root прав:
![]() |
![]() |
И ещё, чуть не забыл... Ярлыки для запуска скриптов пожалуй нужно разместить рядом со скриптами, просто чтобы всё было в одном месте:

Terminalix
Наверняка многие столкнувшиеся с Linux отмечали один неприятный момент, в отличие от Windows, в Linux нет единой команды для вызова терминала, не то чтобы в Windows такая была (нет в ней необходимости т.к. всем и так известна команда "cmd" вызывающая консоль), но в Linux терминалов как грязи на деревенских дорогах, и у каждого своё название...
Конечно, можно вспомнить про XDG систему и команду "exo-open --launch TerminalEmulator", но есть проблема, c этим линуксоидным мракобесием невозможно по-человечески работать.
Можно конечно начать красноглазить с уродливым "exo-open" при написании скриптов, чтобы вызвать указанный по умолчанию терминал в системе пользователя и выполнить команду, или циклом перебирать все возможные терминалы, но согласитесь, просто написать "terminal -e команда" гораздо проще и продуктивнее выходит:

Разумеется это не стандарт для вечно недоразвитых линуксов, а лишь одна из особенностей моего дистрибутива Chimbalix, потому для изменения команды "terminal" был разработан специальный скрипт позволяющий изменить "терминал по умолчанию", и над ним тоже немного поработал.
Добавил предупреждение если у скрипта нет root прав, и слегка подправил текст/код не затрагивая алгоритмы работы:
![]() |
![]() |
Вполне вероятно этот скрипт будет переделан, или вовсе заменён со временем другими, более дружелюбными относительно пользователя решениями, но это уже тема для отдельной статьи.
Продолжение следует...
Вот и вторая часть новостей разработки Chimbalix Linux подошла к концу.
Что дальше? А вот тут надо подумать, дальше заниматься исправлением кривого линуксоидного софта по отдельности, или сборкой новой версии дистрибутива...
Благодарю за внимание, больше интересных статей в блоге Hard-Workshop.

Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.































Комментарии Правила