乐趣区

关于ide:厌倦了单一的黑色背景来动手美化自己的终端吧

【导语】:基于 TUI 构建的 Go 终端输入款式库。

简介

Lip Gloss 是一个精美的终端输入款式库,基于 TUI 构建,能够 DIY 本人 Go 终端款式,定义文本款式、背景配色等。Lip Gloss 对终端渲染采纳的是表白性、申明性的办法。如果你对 CSS 很相熟,那 Lip Gloss 对你来说就很简略了。

import "github.com/charmbracelet/lipgloss"  
  
var style = lipgloss.NewStyle().  
    Bold(true).  
    Foreground(lipgloss.Color("#FAFAFA")).  
    Background(lipgloss.Color("#7D56F4")).  
    PaddingTop(2).  
    PaddingLeft(4).  
    Width(22)  
  
    fmt.Println(style.Render("Hello, kitty."))

我的项目地址是:

https://github.com/charmbrace…

色彩设置

Lip Gloss 反对以下色彩的配置文件:

  • ANSI 16 Colors (4-bit)
lipgloss.Color("5")  // magenta  
lipgloss.Color("9")  // red  
lipgloss.Color("12") // light blue  
  • ANSI 256 Colors (8-bit)
lipgloss.Color("86")  // aqua  
lipgloss.Color("201") // hot pink  
lipgloss.Color("202") // orange  
  • True Color (24-bit)
lipgloss.Color("#0000FF") // good ol' 100% blue  
lipgloss.Color("#04B575") // a green  
lipgloss.Color("#3C3C3C") // a dark gray  

这些配置文件会被自动检测,并且以后调色板色域之外的色彩将被主动强制为其最靠近的可用值。

  • Adaptive Colors 还能够为浅色和深色背景指定色彩选项:
lipgloss.AdaptiveColor{Light: "236", Dark: "248"}  

内联格局

Lip Gloss 反对通常的 ANSI 文本格式选项:

var style = lipgloss.NewStyle().  
    Bold(true).  
    Italic(true).  
    Faint(true).  
    Blink(true).  
    Strikethrough(true).  
    Underline(true).  
    Reverse(true)  

块级格式化

Lip Gloss 还反对块级格式化的规定:

// Padding  
var style = lipgloss.NewStyle().  
    PaddingTop(2).  
    PaddingRight(4).  
    PaddingBottom(2).  
    PaddingLeft(4)  
  
// Margins  
var style = lipgloss.NewStyle().  
    MarginTop(2).  
    RightMarginRight(4).  
    MarginBottom(2).  
    MarginLeft(4)  

还有用于边距和填充的简写语法,语法与 CSS 雷同:

lipgloss.NewStyle().Padding(2)  
  
lipgloss.NewStyle().Margin(2, 4)  
  
lipgloss.NewStyle().Padding(1, 4, 2)  
  
lipgloss.NewStyle().Margin(2, 4, 3, 1)  

文本对齐

能够设置文本左对齐、右对齐、居中显示:

var style = lipgloss.NewStyle().  
    Width(24).  
    Align(lipgloss.Left).  // 左对齐  
    Align(lipgloss.Right). // 右对齐  
    Align(lipgloss.Center) // 居中  

宽度和高度

设置宽度和高度非常简单:

var str = lipgloss.NewStyle().  
    Width(24).  
    Height(32).  
    Foreground(lipgloss.Color("63")).  
    Render("What’s for lunch?")  

复制款式

能够复制款式,在已有款式的根底上复制并增加新的成果:

var style = lipgloss.NewStyle().Foreground(lipgloss.Color("219"))  
  
var wildStyle = style.Copy().Blink(true)  

继承款式

能够从其余款式继承:

var styleA = lipgloss.NewStyle().  
    Foreground(lipgloss.Color("229")).  
    Background(lipgloss.Color("63"))  
  
// 只有 background 会被继承,因为 foreground 被从新设置了  
var styleB = lipgloss.NewStyle().  
    Foreground(lipgloss.Color("201")).  
    Inherit(styleA)  

勾销款式

能够设置勾销款式,勾销后,复制和继承都不会应用该款式:

var style = lipgloss.NewStyle().  
    Bold(true).                        // 加粗  
    UnsetBold().                       // 勾销加粗  
    Background(lipgloss.Color("227")). // 背景色彩  
    UnsetBackground()                  // 勾销背景色彩  

预期的款式

有时在开发组件时,您心愿确保款式定义恪守 UI 中的预期目标,能够强制设置该款式,不容许其他人再批改相干的这个款式:

// 强制渲染,疏忽 margins, padding, borders.  
someStyle.Inline(true).Render("yadda yadda")  
  
// 增加限度,内联(true),最大宽度(5)someStyle.Inline(true).MaxWidth(5).Render("yadda yadda")  
  
// 增加限度,最大宽度(5),最大高度(5)someStyle.MaxWidth(5).MaxHeight(5).Render("yadda yadda")  

渲染

应用 Render 办法:

fmt.Println(lipgloss.NewStyle().Bold(true).Render("Hello, kitty."))  

或者应用 Stringer 接口:

var style = lipgloss.NewStyle().String("你好,猫咪。").Bold(true)  
  
fmt.Printf("%s\n", style)  

段落连贯

程度或垂直连贯文本段落:

// 程度合并  
lipgloss.HorizontalJoin(lipgloss.Bottom, paragraphA, paragraphB, paragraphC)  
  
// 垂直合并  
lipgloss.VerticalJoin(lipgloss.Center, paragraphA, paragraphB)  

将文本放在空格中

// 将段落程度居中搁置在宽度为 80 的空间中  
block := lipgloss.PlaceHorizontal(80, lipgloss.Center, fancyStyledParagraph)  
  
// 在高度为 30 的空间中搁置一个段落  
block := lipgloss.PlaceVertical(30, lipgloss.Bottom, fancyStyledParagraph)  
  
// 将段落放在 30x80 单元格空间的右下角。block := lipgloss.Place(30, 80, lipgloss.Right, lipgloss.Bottom, fancyStyledParagraph)  

开源前哨 日常分享热门、乏味和实用的开源我的项目。参加保护 10 万 + Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。

退出移动版