Size: a a a

2021 June 09

KF

Konstantin Firsov in dlang.ru
Мне так кажется, что проблема в этом:
"dependencies": {
       "gtk-d:sv": "*",
       "gtk-d:vte": "*",
       "gtk-d:gtkd": "*",
       "gtk-d:gstreamer": "*",
       "gtk-d:peas": "*"
   },

По мойму тут только gtk-d:gtkd обязателен и можно использовать субпакеты... наверное. Поэкспериментирую.
источник

OB

Oleg B in dlang.ru
так то для винды "исторически" сложилось, что каждая программа с собой все зависимости тянет, только причина не в стрёмности
источник

OB

Oleg B in dlang.ru
хах, логично
источник

OB

Oleg B in dlang.ru
зачём было всё включать?
источник

KF

Konstantin Firsov in dlang.ru
ну, я скопировал код с тутора, для меня, например, не совсем очевидно, что там тянется все медиа и т.п. Я же с gtk ранее не работал.
источник

OB

Oleg B in dlang.ru
с какого тутора?
источник

KF

Konstantin Firsov in dlang.ru
да я не помню уже, как осталось в конфиге даба, так там и сидят эти зависимости. Но в любом случае она нашлась и я буду знать о проблемах с vte и прочими, если нужно будет с ними работать). Вроде бы все запускается.
источник

OB

Oleg B in dlang.ru
супер!
источник

KF

Konstantin Firsov in dlang.ru
Мне кажется, что эти грабли с субпакетами очень коварны). По поиску пакетов субпакеты не находятся, то, что они прописаны в правой панели совсем неочевидно, по крайней мере для меня, я туда смотрю только, чтобы проверить жив\мертв и т.п., а gtkd более стабилен в сравнении с другими. обнаружил только после анализа сборки на гитхабе. Если бы зависимость подключалась как "gtk-d-all" или что-то такое, то было бы понятно, что там тянется куча всего, а так.... Ну, например, тут https://habr.com/ru/post/259717 тоже подключено как gtk-d. В хелловорде https://github.com/gtkd-developers/GtkD/wiki/Hello-World-Example-on-Ubuntu-19.10-(Linux) тоже как dependency "gtk-d" version="*". В принципе, я допускал, что все зависимости обязательны).
источник

KF

Konstantin Firsov in dlang.ru
Так тогда получается, что Gtk-Runtime можно помещать в папку с прогой и так запаковать в архив. Как WINEPATH="./Gtk-Runtime/bin" wine ./app.exe тоже запускается, хотя я не знаю, устанавливает ли gtkd что-то в саму систему, возможно, инсталлятор создает побочный эффект, но вот в таком виде уже интереснее. Разве что у меня какие-то проблемы с иконками дефолтной темой, хотя я поиском вижу, что в Gtk-Runtime эти иконки есть, кгм... но это уже мелочи.
источник

DH

Dark Hole in dlang.ru
>как winepath
Меняет путь ресолвинга библиотек. Грубо говоря, у тебя в файле написано что нужна либа XXXX.dll, он её ищет сначала в текущей папке, потом там, сям, этам и так далее. winepath указание где искать либы ¯\_(ツ)_/¯
Но это не точно.
источник

KF

Konstantin Firsov in dlang.ru
это-то я знаю, мне интересен способ передать приложение на винду без установки в систему gtkd. Если оно работает так, то должно завестись и через виндовый шелл.
источник

KF

Konstantin Firsov in dlang.ru
через ту же %PATH% или как там на винде
источник

DH

Dark Hole in dlang.ru
Положить либы рядом с приложением?)
источник

KF

Konstantin Firsov in dlang.ru
думаю, что шелл написать для запуска не проблема, главное, чтобы оно само по себе работало.
источник

KF

Konstantin Firsov in dlang.ru
пока я не понимаю, откуда и как там берется тема и грузятся иконки. Вроде как на переменные среды не реагирует, кгм...
источник
2021 June 10

AB

Andrey Bukhanovsky in dlang.ru
я не программист, мне не сильно надо (: - подсветка кода, переключение буферов, да еще что-то там по мелочи.
источник

KF

Konstantin Firsov in dlang.ru
Поэкспериментировал. Распотрошил экзешник от gtkd и вроде там только Gtk-Runtime в програм файлс. Она добавляется в PATH и (наверное) приложение как-то должно заработать сразу, но оно не работает, нужны либы из bin. Интереса ради проверил некоторые субпакеты: gtk-d:gtkdgl ругается и не компилится, peas компилится и в bin есть либы peas*.dll, но какая-то из них требует libgirepository-1.0-1.dll, которой там нет (мол, часть либ я вам дам, часть - не дам, как и vte). У самого gtk много переменных среды, вроде реагирует на их смену и через XDG_DATA_HOME\XDG_DATA_DIRS можно настроить загрузку из etc и share тем и прочего.

Но есть проблема из Pixbuf - Couldn't recognize the image file format. Она распространенная, на GDK_PIXBUF_MODULEDIR\GDK_PIXBUF_MODULE_FILE не реагирует, Pixbuf.getFormats возвращает список форматов, возможно на проблему влияет XDG_DATA_DIRS, но беглая комбинаторика ничего не дала. В самом gtk-шном pixbuf си-лапша, на такой код время свое терять я отказываюсь. С одной стороны, это хороший тест для приложения, что саппортная графика обернута в try..catch, падать от иконки выглядит странным, но все равно проблемы. Возможно, сборка gtkd на винде и Build.d как-то работает иначе.

Это все выглядит, как лучше взять что-то другое. Хотя часть gtk-приложений наверное распространяется с приложенными либами и ресурсами, так что корректные настройки можно взять оттуда или еще где, хз. Без либ и ресурсов в папке с прогой меня такая кроссплатформенность не особо интересует, сам ничего никогда не доустанавливал и других заставлять тоже, разумеется, не хочу).
источник

МВ

Макс Воробьев... in dlang.ru
спроси у @gavr123456789 , что он делал для запуска gtk приложух на винде
источник

KF

Konstantin Firsov in dlang.ru
спасибо, но я уже откатил все и свернул эксперименты). Даже если я узнаю решение, то по ворнингу\критикалу понять происходящее и найти проблему все равно крайне трудно, а лазить там внутри в си коде не особо интересно. Т.к. я давно не работаю с виндой, не знаю особенностей её апи, либ и т.п., то это очень высокий риск сесть в лужу, для несистемного приложения проще взять какую-нибудь джаву, положить рядом jvm или же собрать в нативный модульный образ и сказать, мол... ну а что все равно меньше чем Electron).
источник