TermUI Go语言编写终端仪表盘 TermUI

polaris2015-03-28 11:13:48 • 8647 次点击    
这是一个分享于 2015-03-28 11:13:48 的项目,其中的信息可能已经有所发展或是发生改变。

Go terminal dashboard. Inspired by blessed-contrib, but purely in Go.

Cross-platform, easy to compile, and fully-customizable.

Demo: (cast under osx 10.10; Terminal.app; Menlo Regular 12pt.)

demo

Grid layout:

Expressive syntax, using 12 columns grid system

    import ui "github.com/gizak/termui"
    // init and create widgets...

    // build
    ui.Body.AddRows(
        ui.NewRow(
            ui.NewCol(6, 0, widget0),
            ui.NewCol(6, 0, widget1)),
        ui.NewRow(
            ui.NewCol(3, 0, widget2),
            ui.NewCol(3, 0, widget30, widget31, widget32),
            ui.NewCol(6, 0, widget4)))

    // calculate layout
    ui.Body.Align()

    ui.Render(ui.Body)

demo code:

grid

Installation

go get github.com/gizak/termui

Usage

Each component's layout is a bit like HTML block (box model), which has border and padding.

The Border property can be chosen to hide or display (with its border label), when it comes to display, the label takes 1 padding space (i.e. in css: padding: 1;, innerHeight and innerWidth therefore shrunk by 1).

    import ui "github.com/gizak/termui" // <- ui shortcut, optional

    func main() {
        err := ui.Init()
        if err != nil {
            panic(err)
        }
        defer ui.Close()

        p := ui.NewPar(":PRESS q TO QUIT DEMO")
        p.Height = 3
        p.Width = 50
        p.TextFgColor = ui.ColorWhite
        p.Border.Label = "Text Box"
        p.Border.FgColor = ui.ColorCyan

        g := ui.NewGauge()
        g.Percent = 50
        g.Width = 50
        g.Height = 3
        g.Y = 11
        g.Border.Label = "Gauge"
        g.BarColor = ui.ColorRed
        g.Border.FgColor = ui.ColorWhite
        g.Border.LabelFgColor = ui.ColorCyan

        ui.Render(p, g)

        // event handler...
    }

Note that components can be overlapped (I'd rather call this a feature...), Render(rs ...Renderer) renders its args from left to right (i.e. each component's weight is arising from left to right).

Themes

All colors in all components can be changed at any time, while there provides some predefined color schemes:

// for now there are only two themes: default and helloworld
termui.UseTheme("helloworld")

// create components...

The default theme's settings depend on the user's terminal color scheme, which is saying if your terminal default font color is white and background is white, it will be like:

default

The helloworld color scheme drops in some colors!

helloworld

Widgets

Par

demo code

par

List

demo code

list

Gauge

demo code

gauge

Line Chart

demo code

linechart

Bar Chart

demo code

barchart

Sparklines

demo code

sparklines

Golang terminal dashboardRead More

Latest commit to the master branch on 7-22-2024
Download as zip
授权协议:
MIT
开发语言:
Go 查看源码»
操作系统:
跨平台
8647 次点击  ∙  1 赞  
加入收藏 微博
4 回复  |  直到
lhlt138
lhlt138 · #1 · 10年之前

qkb_75_go
qkb_75_go · #2 · 10年之前

看起来比较 简陋 呀。 不过是 golang 写的,而 GUI 一直不是 golang 的强项。敝帚自珍吧。

elick
elick · #3 · 10年之前

用在什么地方呢

polaris
polaris · #4 · 10年之前
elickelick #3 回复

用在什么地方呢

这里一个使用的项目,监控的 http://studygolang.com/resources/532

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传