Мне тут в комментариях посоветовали вместо gnome files собрать https://wiki.lxde.org/ru/PCManFM #pcmanfm
Мне это показалось хорошим вариантом, часть LXDE, ни от чего не зависит(ну, почти), на вид выглядит не очень страшно.
Что характерно, поддержку gtk3 в нем запилило сообщество Arch, а, значит, проект пользуется некоторой популярностью, потому что так-то сообщество - жопа ленивая обычно.
Замечания по ходу процесса:
* libfm для сборки потребовало gtk-doc, причем практически неотключаемым образом.
Про свои муки с #docbook я уже как-то писал, но тут получилось, что просто так обойти эту зависимость не получается.
Небольшое лирическое отступление. Проекты на GNU #autohell требуют для построения configure наличие dev части некоторых зависимых пакетов, даже если ты потом не захочешь использовать этот пакет, и отключишь его через —disable-XXX.
Поэтому зависимость от gtk-doc я пока решил так - у меня корректно собирается и устанавливается часть gtk-doc, нужная для генерации autohell скриптов, а вот потом, если не позвать —disable-gtk-doc в configure, все будет взрываться самым неприятным образом. Я, конечно, нужный —disable- зову.
* libfm потребовала некую libmenu-cache, которая потребовала libfm. Я тут немного прифигел, но таки да:
https://github.com/lxde/menu-cache
"Since version 0.7.0 the Libmenu-cache requires Libfm-extra for the menu-cache-gen menu cache generation binary. Since Libfm depends on Libmenu-cache, there is some hint for bootstrapers how to build those libraries together: you need create Libfm-extra first, you can easily do this by passing '--with-extra-only' option to configure script and installing Libfm-extra."
С моей точки зрения:
* коллега нагадил посреди комнаты
* вместо того, чтобы тихонько прибраться, повесил табличку "я нагадил, обход тут"
"А что подумал по этому поводу Кролик, никто так и не узнал, потому что Кролик был очень воспитанный"
(нет, Кролик был в ахуе, и выпал в осадок так-то)
* К сожалению, посреди процесса сборки уже самого pcmanfm, я обнаружил, что оно таки непосредственно зависит от X11, и я не могу это собрать и использовать.
Сначала я решил, что ну и хер с ним, но потом внимательнее посмотрел на код, и понял, что могу изящно обойти эту зависимость от X, потому что она используется только если запустить этот FM в качестве X Desktop.
https://git.sr.ht/~pg/mix/tree/main/item/pkgs/bin/pcmanfm/mix.sh#L34
По сути, мне пришлось заменить один файлик размером 200К на несколько заглушек. Попрошу отметить, как я изящно расставил abort() в некоторых местах, чтобы быть уверенным, что мы не обсчитываем мусор. Все очень надежно!
Короче, оно даже запустилось, и даже заработало, с некоторыми глюками. Не работает прокрутка мышью, я это списываю на то, что никто и никогда этот код с Wayland не запускал, по понятным причинам. На вид чистенько, бедненько, все, как я люблю в софте.
Самое неприятное, конечно, в другом: #libmagic
Я успел прочитать часть кода, связанную с mime info, и с запуском приложений. Код рыхлый, неприятный, видно, что проект затащили грубой силой. Знаете, вот возникает момент, когда надо выделить функцию, а ты все равно в 10 местах вставляешь еще 1 if.
Поэтому за час у меня не получилось переделать всю эту машинерию на запуск xdg-open вместо своей таблицы отображения mime types на команду, а без этого у меня оно пока неюзабельно.
Пока отложил в сторону.
Мне это показалось хорошим вариантом, часть LXDE, ни от чего не зависит(ну, почти), на вид выглядит не очень страшно.
Что характерно, поддержку gtk3 в нем запилило сообщество Arch, а, значит, проект пользуется некоторой популярностью, потому что так-то сообщество - жопа ленивая обычно.
Замечания по ходу процесса:
* libfm для сборки потребовало gtk-doc, причем практически неотключаемым образом.
Про свои муки с #docbook я уже как-то писал, но тут получилось, что просто так обойти эту зависимость не получается.
Небольшое лирическое отступление. Проекты на GNU #autohell требуют для построения configure наличие dev части некоторых зависимых пакетов, даже если ты потом не захочешь использовать этот пакет, и отключишь его через —disable-XXX.
Поэтому зависимость от gtk-doc я пока решил так - у меня корректно собирается и устанавливается часть gtk-doc, нужная для генерации autohell скриптов, а вот потом, если не позвать —disable-gtk-doc в configure, все будет взрываться самым неприятным образом. Я, конечно, нужный —disable- зову.
* libfm потребовала некую libmenu-cache, которая потребовала libfm. Я тут немного прифигел, но таки да:
https://github.com/lxde/menu-cache
"Since version 0.7.0 the Libmenu-cache requires Libfm-extra for the menu-cache-gen menu cache generation binary. Since Libfm depends on Libmenu-cache, there is some hint for bootstrapers how to build those libraries together: you need create Libfm-extra first, you can easily do this by passing '--with-extra-only' option to configure script and installing Libfm-extra."
С моей точки зрения:
* коллега нагадил посреди комнаты
* вместо того, чтобы тихонько прибраться, повесил табличку "я нагадил, обход тут"
"А что подумал по этому поводу Кролик, никто так и не узнал, потому что Кролик был очень воспитанный"
(нет, Кролик был в ахуе, и выпал в осадок так-то)
* К сожалению, посреди процесса сборки уже самого pcmanfm, я обнаружил, что оно таки непосредственно зависит от X11, и я не могу это собрать и использовать.
Сначала я решил, что ну и хер с ним, но потом внимательнее посмотрел на код, и понял, что могу изящно обойти эту зависимость от X, потому что она используется только если запустить этот FM в качестве X Desktop.
https://git.sr.ht/~pg/mix/tree/main/item/pkgs/bin/pcmanfm/mix.sh#L34
По сути, мне пришлось заменить один файлик размером 200К на несколько заглушек. Попрошу отметить, как я изящно расставил abort() в некоторых местах, чтобы быть уверенным, что мы не обсчитываем мусор. Все очень надежно!
Короче, оно даже запустилось, и даже заработало, с некоторыми глюками. Не работает прокрутка мышью, я это списываю на то, что никто и никогда этот код с Wayland не запускал, по понятным причинам. На вид чистенько, бедненько, все, как я люблю в софте.
Самое неприятное, конечно, в другом: #libmagic
Я успел прочитать часть кода, связанную с mime info, и с запуском приложений. Код рыхлый, неприятный, видно, что проект затащили грубой силой. Знаете, вот возникает момент, когда надо выделить функцию, а ты все равно в 10 местах вставляешь еще 1 if.
Поэтому за час у меня не получилось переделать всю эту машинерию на запуск xdg-open вместо своей таблицы отображения mime types на команду, а без этого у меня оно пока неюзабельно.
Пока отложил в сторону.
🔥8👍1
Сегодня довольно технический текст, но, тем не менее.
Много раз рассказывал, что мои пакеты - это, на самом деле, не просто пакеты, а шаблоны, которые можно настраивать снаружи, с помощью аргументов.
Вот, хочу рассказать про два забавных способа использовать эту фичу.
Иногда сборка того или иного пакета требует то, чего у меня просто нет.
Например, того, чего нет в данный момент времени - #docbook скрипты для генерации документации. Да, так и не собрался их занести.
Или, программа хочет принудительно линковаться с libstdc++. Ну, то есть, у нее так написано в makefile - " -lstdc++ ".
Раньше я решал эти проблемы ad hoc - делал патч, который правил makefile, убирал вызовы тулзы, или вырезал библиотеки, которых у меня нет.
Но мне это надоело, и я это сильно упростил!
Я завел два метапакета:
* Шаблонную библиотеку, которая добавляеет в путь компилятора статическую библиотеку с заранее заданным именем. https://github.com/stal-ix/ix/blob/main/pkgs/lib/shim/fake/ix.sh#L14
* И шаблонный скрипт, который для заданного output просто делает пустой файл, который дальше игнорируется.
Используется это примерно так:
https://github.com/stal-ix/ix/blob/main/pkgs/lib/jxr/ix.sh#L16
https://github.com/stal-ix/ix/blob/main/pkgs/bin/porto/ix.sh#L20
Чаще всего я это использую для документогенераторов, потому что, по умолчанию, доки я не генерю, это сильно увеличивает цепочку сборки, или пока мне не доступно (pandoc == haskell)
https://github.com/stal-ix/ix/blob/main/pkgs/bin/showfont/ix.sh#L5 - вот тут забавно. Часто библиотеки проверяют наличие open gl по наличию libOpenGL.a, или libGLX.a. Ни та, ни другая, библиотеки, не нужна для функционирования #mesa
https://github.com/stal-ix/ix/blob/main/pkgs/bin/qemu/ix.sh#L35 - самая частая ошибка - принудительная линковка с libstdc++
Кажется, мелочь, но вот программная генерация пакетов позволила вычистить кучу дичи из примерно 60 сборочных файлов!
Много раз рассказывал, что мои пакеты - это, на самом деле, не просто пакеты, а шаблоны, которые можно настраивать снаружи, с помощью аргументов.
Вот, хочу рассказать про два забавных способа использовать эту фичу.
Иногда сборка того или иного пакета требует то, чего у меня просто нет.
Например, того, чего нет в данный момент времени - #docbook скрипты для генерации документации. Да, так и не собрался их занести.
Или, программа хочет принудительно линковаться с libstdc++. Ну, то есть, у нее так написано в makefile - " -lstdc++ ".
Раньше я решал эти проблемы ad hoc - делал патч, который правил makefile, убирал вызовы тулзы, или вырезал библиотеки, которых у меня нет.
Но мне это надоело, и я это сильно упростил!
Я завел два метапакета:
* Шаблонную библиотеку, которая добавляеет в путь компилятора статическую библиотеку с заранее заданным именем. https://github.com/stal-ix/ix/blob/main/pkgs/lib/shim/fake/ix.sh#L14
* И шаблонный скрипт, который для заданного output просто делает пустой файл, который дальше игнорируется.
Используется это примерно так:
https://github.com/stal-ix/ix/blob/main/pkgs/lib/jxr/ix.sh#L16
https://github.com/stal-ix/ix/blob/main/pkgs/bin/porto/ix.sh#L20
Чаще всего я это использую для документогенераторов, потому что, по умолчанию, доки я не генерю, это сильно увеличивает цепочку сборки, или пока мне не доступно (pandoc == haskell)
https://github.com/stal-ix/ix/blob/main/pkgs/bin/showfont/ix.sh#L5 - вот тут забавно. Часто библиотеки проверяют наличие open gl по наличию libOpenGL.a, или libGLX.a. Ни та, ни другая, библиотеки, не нужна для функционирования #mesa
https://github.com/stal-ix/ix/blob/main/pkgs/bin/qemu/ix.sh#L35 - самая частая ошибка - принудительная линковка с libstdc++
Кажется, мелочь, но вот программная генерация пакетов позволила вычистить кучу дичи из примерно 60 сборочных файлов!
GitHub
ix/pkgs/lib/shim/fake/ix.sh at main · stal-ix/ix
ix package manager. Contribute to stal-ix/ix development by creating an account on GitHub.
👍11😐5🔥3🤔1