tui

package module
v1.3.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 31, 2026 License: MIT Imports: 15 Imported by: 0

README

go-tui: Text User Interface на Go

Latest release Go Reference

Обзор

Лёгкая библиотека для TUI на Go. Может:

  • Создавать надписи
  • Создавать кнопки и настраивать
  • Обрабатывать нажатия клавиатуры
  • Красить текст

Установка

go get -u github.com/romanSPB15/go-tui

Пример использования

package main

import (
	"github.com/eiannone/keyboard"
	"github.com/romanSPB15/go-tui"
)

func main() {
	a := tui.NewApp()
	a.AddComponents(tui.NewStaticLabel("Привет, Go!"))
	btn := tui.NewButton("Нажми ↑", keyboard.KeyArrowUp)
	btn.OnClick = a.Quit
	a.AddComponents(btn)
	a.Run()
}

Documentation

Overview

Библитека TUI для Go

Package tui provides a simple framework for creating Text User Interfaces (TUI) in Go.

func main() {
	a := tui.NewApp()
	a.AddComponents(tui.NewStaticLabel("Привет, Go!"))
	btn := tui.NewButton("Нажми ↑", keyboard.KeyArrowUp)
	btn.OnClick = a.Quit
	a.AddComponents(btn)
	a.Run()
}

Библитека TUI для Go

Библитека TUI для Go

Библитека TUI для Go

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EnableANSI

func EnableANSI()

EnableANSI() включает поддержку ANSI в терминале в случае если нет(Windows)

Types

type App

type App interface {
	Components() []Component    // Components() возвращает список компонентов, добавленных в приложение.
	AddComponents(...Component) // AddComponents() добавляет компонент в приложение.
	Clear()                     // Clear() очищает список компонентов приложения без перерисовки.

	Redraw()             // Redraw() перерисовывает все компоненты. Важно: такая перерисовка вызывает мерцание.
	RedrawComponent(int) // RedrawComponent() перерисовывает конкретный компонент. index — это номер компонента, который нужно перерисовать.

	Run()           // Run() — это блокирующий запуск TUI-приложения. Если пользователь закроет окно, то будет произведён graceful shutdown и выход из метода.
	IsRunned() bool // IsRunned() возращает true, если приложение запущено. Иначе возвращает false.

	Quit()                   // Quit() — это принудительный выход из приложения.
	OnQuit() <-chan struct{} // Run() возвращает канал сигнализации о выходе.

	Window() Window // Window() возвращает интерфейс окна приложения. Из него можно получить длину и ширину окна в символах.

	AddKeyHandler(key keyboard.Key, h func()) // AddKeyHandler() регистрирует обработчик нажатия указанной клавиши

	LogInfo(message string, args ...any)  // LogInfo() логирует указанное сообщение подобно fmt.Printf() в файл, если приложение создано как Debug.
	LogFatal(message string, args ...any) // LogFatal() логирует указанное сообщение подобно fmt.Printf() в файл, если приложение создано как Debug. Потом в любом случае выходит
}

App — это объект приложения.

func NewApp

func NewApp() App

NewApp() создаёт объект приложения без логирования.

func NewDebugApp

func NewDebugApp() App

NewDebugApp() создаёт объект приложения с логированием.

type Button

type Button struct {
	OnClick func()
	Component
	// contains filtered or unexported fields
}

Button это объект кнопки, нажимающейся от нажатия её клавиши. Обработчик в OnClick.

func NewButton

func NewButton(text string, key keyboard.Key) *Button

NewButton() создаёт кнопку. key это её клавиша.

type Color

type Color int

Color — это код цвета.

const (
	Black Color = iota + 30
	Red
	Green
	Yellow
	Blue
	Magenta
	Cyan
	White
)

Обычные цвета.

const (
	BrightBlack Color = iota + 90
	BrightRed
	BrightGreen
	BrightYellow
	BrightBlue
	BrightMagenta
	BrightCyan
	BrightWhite
)

Яркие цвета(работают не во всем терминалах).

type ColorProgress added in v1.2.1

type ColorProgress struct {
	// contains filtered or unexported fields
}

ColorProgress — это виджет шкалы прогресса. Добавлено в TUI v1.2.0

func NewColorProgress added in v1.2.1

func NewColorProgress(len int, on, off Color) *ColorProgress

NewColorProgress() cоздаёт виджет шкалы прогресса. len — максимальная длина в пикселях on — цвет "включенных" пикселей off — цвет "выключенных" пикселей Добавлено в TUI v1.2.0

func (*ColorProgress) DisplayMode added in v1.2.1

func (p *ColorProgress) DisplayMode() DisplayMode

func (*ColorProgress) MaxWidth added in v1.2.1

func (p *ColorProgress) MaxWidth() int

func (*ColorProgress) SetValue added in v1.2.1

func (p *ColorProgress) SetValue(f float64)

SetValue() устанавливает значение прогресса. Диапазон 0-1 Добавлено в TUI v1.2.0

type Component

type Component interface {
	MaxWidth() int // MaxWidth() возращает длину текста виджета без учёта ANSI Escape последовательностей
	DisplayMode() DisplayMode
	// contains filtered or unexported methods
}

Component— это интерфейс любого TUI-виджета.

func NewLine

func NewLine() Component

NewLine() создаёт компонент, занимающий весь остаток его строки, что переносит следующие на новую строку.

func Spaser

func Spaser() Component

Spaser() создаёт пустой компонент, занимающий всю строку для визуального разделения.

type DisplayMode

type DisplayMode int

DisplayMode — это режим отображения виджета.

const (
	DisplayInline  DisplayMode = iota // В одну строку.
	DisplayBlock                      // На отдельной строке.
	DisplayNewLine                    // Перенос строки.
)

type Label

type Label struct {
	Text string // Текст виджета.

	Block bool // Отображение в блочном режиме.
	// contains filtered or unexported fields
}

Label — это виджет текстовой метки.

func NewDynamicLabel

func NewDynamicLabel(txt string, maxLength int) *Label

NewDynamicLabel() создаёт виджет текста с возможностью изменения содержимого в будущем. maxLength это место, зарезервированное под метку в символах.

func NewStaticLabel

func NewStaticLabel(txt string) *Label

NewStaticLabel() создаёт виджет текста.

func (lbl *Label) Blink() *Label

Blink() делает текст мигающим(работает не во всем терминалах). Добавлено в TUI v1.1.0

func (*Label) Bold

func (lbl *Label) Bold() *Label

Bold() делает текст жирным.

func (*Label) ColorizeBackground added in v1.1.0

func (lbl *Label) ColorizeBackground(clr Color) *Label

ColorizeBackground() окрашивает фон текста в один из стандартных цветов. Добавлено в TUI v1.1.0

func (*Label) ColorizeBackgroundRGB added in v1.1.0

func (lbl *Label) ColorizeBackgroundRGB(r, g, b uint8) *Label

ColorizeBackgroundRGB() окрашивает фон текста в RGB. Добавлено в TUI v1.1.0

func (*Label) ColorizeForeground added in v1.1.0

func (lbl *Label) ColorizeForeground(clr Color) *Label

ColorizeForeground() окрашивает текст в один из стандартных цветов. Добавлено в TUI v1.1.0

func (*Label) ColorizeForegroundRGB added in v1.1.0

func (lbl *Label) ColorizeForegroundRGB(r, g, b uint8) *Label

ColorizeForegroundRGB() окрашивает текст в RGB. Добавлено в TUI v1.1.0

func (*Label) DisplayMode

func (lbl *Label) DisplayMode() DisplayMode

DisplayMode() реализует интерфейс Component

func (*Label) Italic

func (lbl *Label) Italic() *Label

Italic() делает текст курсивом.

func (*Label) MaxWidth

func (lbl *Label) MaxWidth() int

MaxWidth() реализует интерфейс Component

func (*Label) Reverse

func (lbl *Label) Reverse() *Label

Reverse() реверсирует цвет текста.

func (*Label) Underline

func (lbl *Label) Underline() *Label

Underline() подчеркивает текст.

type Window

type Window interface {
	Width() int  // Ширина окна в символах
	Height() int // Высота окна в символах
}

Window — это объект окна приложения.

Directories

Path Synopsis
examples
simple command
keyboard module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL