tui

package module
v1.2.2-preview 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

Go version Latest release

Обзор

Лёгкая библиотека для 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

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

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

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

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

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func EnableANSI

func EnableANSI()

Включает поддержку ANSI в терминале в случае если нет

Types

type App

type App interface {
	Components() []Component
	Redraw()
	RedrawComponent(int)
	AddComponents(...Component)
	Clear()
	Run()
	Quit()
	OnQuit() <-chan struct{}

	Window() Window

	AddKeyHandler(key keyboard.Key, h func())

	LogInfo(message string, args ...any)
	LogFatal(message string, args ...any)
}

Объект приложения

func NewApp

func NewApp() App

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

func NewDebugApp

func NewDebugApp() App

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

type Button

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

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

func NewButton

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

Создаёт tui.Button

type Color

type Color int

Цвет

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
}

func NewColorProgress added in v1.2.1

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

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)

type Component

type Component interface {
	MaxWidth() int
	DisplayMode() DisplayMode
	// contains filtered or unexported methods
}

Объект компонента приложения.

func NewLine

func NewLine() Component

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

func Spaser

func Spaser() Component

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

type DisplayMode

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

type Label

type Label struct {
	Text string

	Block bool
	// contains filtered or unexported fields
}

Текст. Может быть декорирован

func NewDynamicLabel

func NewDynamicLabel(txt string, maxLength int) *Label

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

func NewStaticLabel

func NewStaticLabel(txt string) *Label

Создание объекта текста без возможности изменения.

func (lbl *Label) Blink() *Label

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

func (*Label) Bold

func (lbl *Label) Bold() *Label

Сделать текст жирным.

func (*Label) ColorizeBackground added in v1.1.0

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

Окрасить фон текста в один из стандартных цветов. Добавлено в TUI v1.1.0

func (*Label) ColorizeBackgroundRGB added in v1.1.0

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

Окрасить фон текста в RGB. Добавлено в TUI v1.1.0

func (*Label) ColorizeForeground added in v1.1.0

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

Окрасить текст в один из стандартных цветов. Добавлено в TUI v1.1.0

func (*Label) ColorizeForegroundRGB added in v1.1.0

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

Окрасить текст в RGB. Добавлено в TUI v1.1.0

func (*Label) DisplayMode

func (lbl *Label) DisplayMode() DisplayMode

Реализация tui.Component.

func (*Label) Italic

func (lbl *Label) Italic() *Label

Сделать текст курсивом.

func (*Label) MaxWidth

func (lbl *Label) MaxWidth() int

Реализация tui.Component.

func (*Label) Reverse

func (lbl *Label) Reverse() *Label

Реверсировать цвет текста.

func (*Label) Underline

func (lbl *Label) Underline() *Label

Подчеркнуть текст.

type Window

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

Объект окна приложения

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