Что это?
MyGo — набор инструментов для Go, чтобы строить десктопные приложения, которые либо встраивают веб-фронтенд в нативный webview ОС, либо рисуют полностью нативный UI средствами самого MyGo на GPU; в одном приложении можно сочетать оба варианта.
Это обёртка над webview или настоящий нативный UI-тулкит?
И то и другое: окно может быть веб-страницей в webview ОС (WKWebView, WebKitGTK или WebView2), которая вызывает код на Go через сгенерированный TypeScript-клиент, либо чисто нативным UI, написанным только на Go с помощью пакета «ui», — без какого-либо HTML, JS или webview.
Как создать новое приложение?
Для приложения с веб-фронтендом проект создают с помощью Go и Bun; для приложения с чисто нативным UI нужен только Go, без каких-либо JS-инструментов.
Что нужно установить перед сборкой приложения с веб-фронтендом?
Нужны Go 1.27 или новее и Bun; для приложений только с нативным UI достаточно Go, потому что зависимости cgo нет, а для веб-страниц используется встроенный webview ОС.
Нужен ли cgo или платформенно-зависимый тулчейн для кросс-сборки?
Нет, MyGo — чистый Go без cgo, поэтому бинарники для macOS, Windows и Linux можно собирать с одной машины без нативных тулчейнов.
Для каких операционных систем можно выпускать приложения?
macOS, Linux и Windows; окна с веб-фронтендом используют webview соответствующей ОС (WKWebView, WebKitGTK, WebView2), а MyGo также умеет собирать бандлы приложений, образы дисков, установщики Windows и пакеты Debian.
Что входит в нативный UI-тулкит из коробки?
Раскладку на flexbox и grid, виджеты, редактирование текста с методами ввода, виртуализированные списки, SVG-иконки, анимации, поддержку скринридеров и представления, которые можно тестировать без открытия окна.
Умеет ли он доставлять автообновления для моего приложения?
Да, MyGo поддерживает подписанные автообновления с дельта-обновлениями и окном обновления в духе Sparkle, а также подписание кода и нотаризацию для распространения.
Насколько маленькие и лёгкие приложения на MyGo?
Приложение компилируется в один Go-бинарник размером в несколько мегабайт; поскольку это чистый Go без cgo, а нативный UI вовсе обходится без webview, упор сделан на низкое потребление памяти и процессора.
Можно ли сочетать в одном приложении окно с веб-страницей и окно с нативным UI?
Да: каждое окно MyGo — это либо веб-страница, либо нативный UI, и одно приложение может сочетать окна обоих типов.
What are similar projects?
native, dsh-launcher, tauri, tinyjsapp, dsh_desktop, proton-native, fyne, kivy
Which topics is it in?
dialog, flexbox, ui-framework, grid, gui-framework, auto-update, tray, toolkit, notifications, bun, installer, native