Комментарии 51
Т.е. Вы заменили compile-time зависимость от C-шной GUI-библиотеки на run-time зависимость от внешнего бинарника? Зачем? Если для фана, то это здорово, а если ради того, чтобы сохранить возможность устанавливать Go-шное GUI-приложение через go get
— это перебор.
По факту и биндинги и библиотеку Вы в любом случае написали, отличается только форма — библиотека в виде бинарника, биндинги в виде сетевого протокола. Не уверен, что работы при таком подходе было объективно меньше.
Не так давно искал на чем сделать простой GUI индикатор в таск-панель на Linux… ничего универсального не нашел пришлось выпиливать GTK и QT варианты.
Но как я понял через External индикатор не сделать?.. или я не прав?
Меня немножко смутил скриншот с Win10. Почему везде шрифт с засечками, даже на панели? О_о
Определенное неудобство связано именно с необходимостью использования этого внешнего модуля, который вам надо или собрать из исходников
Определенное неудобство? Это не просто неудобство, а велосипедостроение, причем с квадратными колесами.
Статическую линковку (всего, да, вместе с сервером [ edited ]) в один бинарник сделать будет проблематично. Все привыкли, когда приложение на Go — один бинарник, в который уже положены все зависимости.
Зачем нужен Go, когда фактически GUI рисуется совсем не им?
Почему-то мне кажется, что биндинги к ненативному Qt будут отрабатывать быстрее, чем вызовы к GUI-серверу, который отрисовывает всё "нативно" через WinAPI / GTK+.
( GTK+ 2 в 2018, серьезно?)
Чем не устроил например github.com/andlabs/ui?
Что касается ui — я ведь писал об этом, он находится по оценке авторов еще в статусе mid-alpha.
Что касается ui — я ведь писал об этом, он находится по оценке авторов еще в статусе mid-alpha.
А ваш пакет уже готов к использованию в продакшен?
То есть вас не устаивает ui, потому что он mid-alpha, но вы пишете своё, которое в состоянии pre-alpha и вас это не смущает?
В External, хотя ему, напомню опять, чуть больше месяца, это и много чего еще есть — потому что давно есть в HwGui.
А что с MacOS? Hello word не работаает на macOS Mojave (10.14.1)
Hello word не работаает на macOS Mojave (10.14.1)
Билд проходит успешно, екзешник запускается без ошибок. Вот только окно не открывается...
Можно еще задать журналирование для GuiServer'а в вызове Init:
egui.Init(«log=2») — тогда должны появиться guiserver.log и ac.log.
да:
go build hello_world.go
./hello_world
echo $?
0
cat egui.log
guiserver 127.0.0.1 3101
dial tcp4 127.0.0.1:3101: connect: connection refused
Где у вас находится guiserver? В каталоге, который прописан в PATH (или где-то вроде этого, я не знаю, как это в macOS)?
Или в том же каталоге, где и программа? Если так, то не надо ли в macOS запускать исполняемые файлы из текущего каталога, как и в Линуксе, с указанием "./"? В этом случае надо в вызове egui.Init так и прописать:
egui.Init(«guiserver=./guiserver»)
Этот список устарел. Например, в нём нет вполне себе рабочего биндинга к imgui, которую Вы так же не упомянули в своём обзоре.
Соглашусь с коллегами, использование IPC связки с сервером GUI в рантайме вместо привычных и более быстрых механизмов FFI для задачи создания GUI выглядит несколько странно
Может быть, другого у меня нет. Imgui не упомянул, потому что не слышал о ней.
> использование IPC связки с сервером GUI в рантайме вместо привычных и более быстрых механизмов FFI для задачи создания GUI выглядит несколько странно
Да, это необычно. Но такой подход имеет и свои преимущества, об этом я писал в обеих статьях и комментариях к ним. А скорость, об этом я тоже писал, не самый критичный фактор для интерфейса. Мы же не создаем виджеты в цикле с 10000… итераций.
go-программа запускает бинарник сервера из той же папки (или из PATH если в той же папке нужного бинарника нет), а дальше взаимодействие идёт через стандартный ввод/вывод.
Это поможет избежать проблем с локальными Firewall-ами + можно будет легко понимать что гуи-сервер запущен/остановлен (и например тоже сваливаться).
+ Упрощается настройка: достаточно будет скачать один архив (с двумя бинарниками) и распаковать, доп. настройки опять же не надо, не надо отдельно сервер в PATH складывать и т.п.
External — GUI для Golang