first commit
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"ArinDash/util"
|
||||
"ArinDash/widgets"
|
||||
"context"
|
||||
|
||||
"github.com/mum4k/termdash"
|
||||
"github.com/mum4k/termdash/cell"
|
||||
"github.com/mum4k/termdash/container"
|
||||
"github.com/mum4k/termdash/container/grid"
|
||||
"github.com/mum4k/termdash/keyboard"
|
||||
"github.com/mum4k/termdash/linestyle"
|
||||
"github.com/mum4k/termdash/terminal/tcell"
|
||||
"github.com/mum4k/termdash/terminal/terminalapi"
|
||||
"github.com/mum4k/termdash/widgets/textinput"
|
||||
)
|
||||
|
||||
const rootID = "root"
|
||||
|
||||
func quitter(cancel context.CancelFunc) func(k *terminalapi.Keyboard) {
|
||||
quitter := func(k *terminalapi.Keyboard) {
|
||||
if k.Key == keyboard.KeyEsc || k.Key == keyboard.KeyCtrlC {
|
||||
cancel()
|
||||
}
|
||||
}
|
||||
return quitter
|
||||
}
|
||||
|
||||
func initWidgets(ctx context.Context, term *tcell.Terminal) {
|
||||
var titleUpdate = make(chan string)
|
||||
|
||||
widgets.Create(ctx, term,
|
||||
widgets.New("Clock", widgets.Clock()),
|
||||
widgets.New("ChangeTitle", widgets.TextInput(titleUpdate, textinput.Label("Update Title: "), textinput.PlaceHolder("New Title"))),
|
||||
widgets.New("Wifi", widgets.WifiQRCode()),
|
||||
widgets.New("Docker", widgets.DockerList()),
|
||||
widgets.New("PiHole", widgets.PiholeStats()),
|
||||
)
|
||||
}
|
||||
|
||||
func layout() []container.Option {
|
||||
builder := grid.New()
|
||||
builder.Add(
|
||||
grid.ColWidthFixed(84,
|
||||
grid.RowHeightFixed(44,
|
||||
grid.Widget(widgets.Get["Wifi"],
|
||||
container.BorderTitle("Wifi"),
|
||||
container.Border(linestyle.Light),
|
||||
container.BorderColor(cell.ColorWhite)),
|
||||
),
|
||||
grid.RowHeightFixed(1,
|
||||
grid.Widget(widgets.Get["empty"]),
|
||||
),
|
||||
),
|
||||
grid.ColWidthPerc(20,
|
||||
grid.RowHeightFixed(8,
|
||||
grid.Widget(widgets.Get["Clock"],
|
||||
container.BorderTitle("Time"),
|
||||
container.Border(linestyle.Light),
|
||||
container.BorderColor(cell.ColorWhite),
|
||||
),
|
||||
),
|
||||
grid.RowHeightFixed(8,
|
||||
grid.Widget(widgets.Get["PiHole"],
|
||||
container.BorderTitle("pi-hole"),
|
||||
container.Border(linestyle.Light),
|
||||
container.BorderColor(cell.ColorWhite),
|
||||
),
|
||||
),
|
||||
grid.RowHeightPerc(85,
|
||||
grid.Widget(widgets.Get["empty"]),
|
||||
),
|
||||
),
|
||||
grid.ColWidthPerc(35,
|
||||
grid.RowHeightPerc(25,
|
||||
grid.Widget(widgets.Get["empty"]),
|
||||
),
|
||||
),
|
||||
grid.ColWidthPerc(35,
|
||||
grid.RowHeightPerc(25,
|
||||
grid.Widget(widgets.Get["Docker"],
|
||||
container.BorderTitle("Docker"),
|
||||
container.Border(linestyle.Light),
|
||||
container.BorderColor(cell.ColorWhite),
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
return util.PanicOnErrorWithResult(builder.Build())
|
||||
}
|
||||
|
||||
func main() {
|
||||
term := util.PanicOnErrorWithResult(tcell.New(tcell.ColorMode(terminalapi.ColorMode256)))
|
||||
defer term.Close()
|
||||
ctx, cancel := context.WithCancel(context.Background())
|
||||
|
||||
initWidgets(ctx, term)
|
||||
|
||||
rootContainer := util.PanicOnErrorWithResult(container.New(term, container.ID(rootID)))
|
||||
util.PanicOnError(rootContainer.Update(rootID, layout()...))
|
||||
util.PanicOnError(termdash.Run(ctx, term, rootContainer, termdash.KeyboardSubscriber(quitter(cancel)), termdash.RedrawInterval(util.RedrawInterval)))
|
||||
}
|
||||
Reference in New Issue
Block a user