Перейти к содержимому
ГоМастер

Поиск по урокам

Найдите урок, курс, термин или раздел

Fyne или Bubble Tea: GUI и TUI на Go

Fyne — настоящие графические окна с виджетами, темами и сборкой под мобильные. Bubble Tea — богатые интерфейсы прямо в терминале по Elm-архитектуре. Выбор зависит от того, где живёт пользователь: за окном или за терминалом.

FyneкурсBubble Teaкурс

Подбор под ваши приоритеты

Двигайте ползунки — насколько для вас важен каждый критерий (0 — не важен, 5 — критично). Счёт пересчитывается на лету: это взвешенное среднее оценок библиотек по критериям, а не бенчмарк.

Виджеты, графика, стилизация

GPU, GUI-подсистема, терминал

Состояние и события

Кросс-сборка, SSH, CI

Взвешенный счёт

  • Bubble Teaваш матч90
  • Fyne70

Под ваши веса лидирует Bubble Tea: devtools, панели мониторинга и клиенты для терминала и ssh.

Когда desktop-приложение на Go перестаёт влезать в консоль, выбор встаёт между двумя мирами: графическим и терминальным. Fyne рисует настоящие окна через OpenGL/Metal с виджетами, темами и сборкой под Android/iOS. Bubble Tea из экосистемы Charm строит богатые интерфейсы внутри любого терминала по Elm-архитектуре — Model, Update, View. Оба подхода — «интерфейс как код», но для разных пользователей.

Fyne подходит там, где ожидается привычное приложение: окна, кнопки, формы, вкладки, файловые диалоги. Разработка идёт по паттерну «сцена из контейнеров»: виджеты компонуются в Box/Grid, события вешаются на callbacks, состояние обновляет Refresh. Бонус — fyne-cross собирает бинарь под Windows/macOS/Linux и мобильные платформы. Виртуальный экран на нашей витрине показывает 18 работающих fyne-приложений — от калькулятора до Kanban-доски.

Bubble Tea выигрывает в среде разработчиков и DevOps: интерфейс живёт в SSH-сессии, не требует GUI-подсистемы и работает везде, где есть терминал. Elm-архитектура делает состояние предсказуемым: клавиши и таймеры приходят сообщениями в один Update, View — чистая функция от модели. Липглосс стилизует панели и цвета, bubbles предоставляет готовые компоненты — текстовые поля, списки, спиннеры, таблицы. Наш виртуальный терминал исполняет настоящие Bubble Tea-программы прямо на странице урока.

Если пользователь — обычный человек с мышкой, выбор почти всегда Fyne. Если интерфейс нужен в терминале — на сервере, в CI, через SSH — Bubble Tea безальтернативен. Ниже сравнение по критериям и один и тот же «список задач» в обоих фреймворках.

Одна и та же задача в каждой библиотеке

Задача-эталон для этого сравнения: посмотрите на разницу в церемониях, типах и обработке ошибок — так выбор ощущается, а не только описывается словами.

Графический тулкит: окна, виджеты, темы, мобильная сборка

package main

import (
  "fyne.io/fyne/v2/app"
  "fyne.io/fyne/v2/widget"
)

func main() {
  a := app.New()
  w := a.NewWindow("Задачи")

  list := widget.NewList(
    func() int { return 3 },
    func() fyne.Resource { return nil },
    func(i int) fyne.CanvasObject {
      return widget.NewLabel("задача")
    },
  )

  w.SetContent(list)
  w.ShowAndRun()
}

Сильные и слабые стороны

Fyne

Графический тулкит: окна, виджеты, темы, мобильная сборка

  • Настоящие окна с виджетами, темами и скроллами
  • fyne-cross: сборка под Windows/macOS/Linux/Android/iOS
  • Material-дизайн по умолчанию — приличный UI без дизайнера
  • Нужна графическая подсистема (OpenGL/Metal)
  • Состояние размазано по callbacks — нужна дисциплина

Берите, если: desktop-приложения для обычных пользователей: формы, списки, медиа.

Bubble Tea

Elm-архитектура в терминале: Model → Update → View

  • Работает в любом терминале, включая SSH-сессии
  • Elm-архитектура: один Update, состояние как значение
  • bubbles и lipgloss — готовые компоненты и стили
  • Только текст и ANSI-графика: без мышиных форм и картинок
  • Терминалы различаются — нужен фолбэк рендеринг

Берите, если: devtools, панели мониторинга и клиенты для терминала и ssh.

Оценки по критериям

Шкала 1-5: экспертная оценка команды проекта по практике, а не синтетика.

Сравнение Fyne, Bubble Tea по критериям
КритерийFyneBubble Tea
Богатство интерфейсаВиджеты, графика, стилизация
Требования к окружениюGPU, GUI-подсистема, терминал
Предсказуемость архитектурыСостояние и события
Деплой и дистрибуцияКросс-сборка, SSH, CI

Вердикт: когда что выбирать

Граница проходит по окружению пользователя: есть окно и мышь — Fyne; есть терминал и SSH — Bubble Tea. Архитектурно оба стиля «интерфейс как код» и отлично осваиваются в паре: наш курс fyne ведёт к 18 приложениям витрины, bubbletea — к TUI-программам в виртуальном терминале.

Приложение для обычных пользователей с формамиFyneВиджеты, темы, мобильная сборка, привычные окна
Инструмент для разработчиков и серверной работыBubble TeaSSH, CI, терминал — без GUI-подсистемы
Нужен и GUI, и CLI-режим в одном бинарникеОбаОбщая бизнес-логика, два интерфейсных слоя

А что выбрали вы?

Кликните по своему выбору — голос сохранится только в вашем браузере (персональные данные никуда не отправляются).

Частые вопросы

Можно ли сделать веб-интерфейс на Fyne?

Fyne прицелен на нативные окна и мобильные платформы; для веба существует экспериментальная компиляция через WASM, но зрелый путь для браузера — обычный веб-стек. Для терминала в браузере наша платформа показывает виртуальный экран Bubble Tea.

Работает ли Bubble Tea в Windows-терминале?

Да, современные Windows Terminal и PowerShell поддерживают ANSI-последовательности Bubble Tea. В классической cmd.exe возможны артефакты рендеринга — используйте Windows Terminal.

Что проще выучить: Fyne или Bubble Tea?

Bubble Tea проще для тех, кто уже писал на Go: три метода и сообщение-свитч. Fyne требует понять систему контейнеров, минимальных размеров и рендера, зато даёт знакомый desktop-результат.

Можно ли совмещать оба фреймворка в одном приложении?

Да, это распространённый паттерн: CLI-команды (например, через Cobra) запускают TUI-панель Bubble Tea в терминале, а десктоп-режим открывает окно Fyne. Бизнес-логика общая, интерфейсы независимы.

Другие сравнения