iTerm
is a powerful Golang package designed to enhance terminal text styling and menu creation. It provides an intuitive, fluent interface for creating colorful and styled terminal outputs with ease.
See for more infromation: https://pkg.go.dev/github.com/normatov07/iterm
-
📋 Menu Management
- Dynamic and responsive menu creation
- Easy menu item addition
- Single selection
- Multi selection
- Beauty bordered menu
-
🎨 Text Styling
- Change text color
- Set background colors
- Apply text formatting (bold, italic, underline)
- Support for 8 standard and RGB colors
-
🖥️ Change terminal mode
- Raw mode
- Normal mode
- Disable output on terminal
- Restore default mode
-
🧮 Helper terminal codes
- ANSI escape sequences
- Box drawing codes
go get github.com/normatov07/iterm
easy and simple creating menu and get the index of the active item
import (
"fmt"
"github.com/normatov07/iterm"
)
func main() {
menu := iterm.NewMenu()
menu.SetTitle("Which framework do you like?")
menu.SetBorder()
menu.Add("Vue")
menu.Add("React")
menu.Add("Angular")
menu.Add("Svelte")
index, err := menu.DrawMenu()
if err != nil {
panic(err)
}
fmt.Println("Active item index:", index)
fmt.Println("Active item:", menu.GetActiveMenu())
}
You can also create a multi-select menu where users can select multiple items.
import (
"fmt"
"github.com/normatov07/iterm"
)
func main() {
multiMenu := iterm.NewMultiMenu()
multiMenu.SetTitle("Select your favorite languages")
multiMenu.SetBorder()
multiMenu.Add("Go")
multiMenu.Add("Python")
multiMenu.Add("JavaScript")
multiMenu.Add("Rust")
_, err := multiMenu.DrawMenu()
if err != nil {
panic(err)
}
fmt.Println("Selected items:", multiMenu.GetActiveMenu())
}
We have lots of patters to give elegant seen to text on terminal
import (
"github.com/normatov07/iterm"
"github.com/normatov07/iterm/color"
)
func main() {
// Basic colored text
iterm.NewText("Hello World").Color(color.RED).Println()
// Advanced styling
iterm.NewText("Styled Text").
Color(color.GREEN).
Bold().
Italic().
UnderLine().
Println()
// RGB color
iterm.NewText("Hello World").RGBColor(42, 161, 179).BackgroundRGBColor(0, 0, 0).Println()
println(iterm.RGBColor("RGB colored text",42, 161, 179))
println(iterm.BackgroundRGBColor("RGB back colored text",42, 161, 179))
}
You can ask for secure and insecure input (e.g: text, passwords) displaying or without displaying the input or patterned on the terminal.
password := iterm.AskSecurePatterned("Enter your password: ")
fmt.Println("\nPassword:", password)
age := iterm.Ask("How old are you?: ")
fmt.Println("Age:", age)
Change terminal mode.
iterm.SetRawMode()
defer iterm.RestoreTermMode()
Distributed under the MIT License. See LICENSE for more information.
O'tkir Normatov - normatov.milliy@gmail.com