Add interactive terminal interface
parent
667f953363
commit
e7ed95b8c3
@ -1,3 +1,9 @@
|
||||
module gitlab.com/tslocum/brightness
|
||||
|
||||
go 1.15
|
||||
|
||||
require (
|
||||
github.com/gdamore/tcell/v2 v2.0.0-dev.0.20200926152101-0fb77ddaa5b4
|
||||
gitlab.com/tslocum/cview v1.5.1-0.20201012004508-bf9ccbdf1a8c
|
||||
golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634 // indirect
|
||||
)
|
||||
|
@ -0,0 +1,26 @@
|
||||
github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko=
|
||||
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
|
||||
github.com/gdamore/tcell/v2 v2.0.0-dev/go.mod h1:vSVL/GV5mCSlPC6thFP5kfOFdM9MGZcalipmpTxTgQA=
|
||||
github.com/gdamore/tcell/v2 v2.0.0-dev.0.20200926152101-0fb77ddaa5b4 h1:9WLVV5c2UI2qvgROlgzLgCuK5gi7igcU5LNsPXCSFB8=
|
||||
github.com/gdamore/tcell/v2 v2.0.0-dev.0.20200926152101-0fb77ddaa5b4/go.mod h1:vSVL/GV5mCSlPC6thFP5kfOFdM9MGZcalipmpTxTgQA=
|
||||
github.com/lucasb-eyer/go-colorful v1.0.3 h1:QIbQXiugsb+q10B+MI+7DI1oQLdmnep86tWFlaaUAac=
|
||||
github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
|
||||
github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
|
||||
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY=
|
||||
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
gitlab.com/tslocum/cbind v0.1.2 h1:ptDjO7WeOl1HglprsK18L8I9JeRkmtuBoBBaYw/6/Ow=
|
||||
gitlab.com/tslocum/cbind v0.1.2/go.mod h1:HfB7qAhHSZbn1rFK8M9SvSN5NG6ScAg/3h3iE6xdeeI=
|
||||
gitlab.com/tslocum/cview v1.5.1-0.20201012004508-bf9ccbdf1a8c h1:v2JiXw0558CnB1EWMaLCgmjLENvlcQyYx/0zyzWuYsI=
|
||||
gitlab.com/tslocum/cview v1.5.1-0.20201012004508-bf9ccbdf1a8c/go.mod h1:i9NyxtwBtkiVFrwmsh3Bv3dunvipjZrKX0TTdPHbzcw=
|
||||
golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
|
||||
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634 h1:bNEHhJCnrwMKNMmOx3yAynp5vs5/gRy+XWFtZFu7NBM=
|
||||
golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
@ -0,0 +1,55 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/gdamore/tcell/v2"
|
||||
"gitlab.com/tslocum/cview"
|
||||
)
|
||||
|
||||
func center(width, height int, p cview.Primitive) cview.Primitive {
|
||||
subFlex := cview.NewFlex()
|
||||
subFlex.SetDirection(cview.FlexRow)
|
||||
subFlex.AddItem(cview.NewBox(), 0, 1, false)
|
||||
subFlex.AddItem(p, height, 1, true)
|
||||
subFlex.AddItem(cview.NewBox(), 0, 1, false)
|
||||
|
||||
flex := cview.NewFlex()
|
||||
flex.AddItem(cview.NewBox(), 0, 1, false)
|
||||
flex.AddItem(subFlex, width, 1, true)
|
||||
flex.AddItem(cview.NewBox(), 0, 1, false)
|
||||
|
||||
return flex
|
||||
}
|
||||
|
||||
func runTUI(backlight *backlight) error {
|
||||
done := make(chan error)
|
||||
|
||||
app := cview.NewApplication()
|
||||
app.EnableMouse(true)
|
||||
|
||||
sliderChanged := func(value int) {
|
||||
err := backlight.setBrightness(value)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
form := cview.NewForm()
|
||||
form.AddSlider("Brightness", backlight.current, backlight.max, 10, sliderChanged)
|
||||
form.SetCancelFunc(func() {
|
||||
done <- nil
|
||||
})
|
||||
form.GetFormItem(0).SetFinishedFunc(func(key tcell.Key) {
|
||||
done <- nil
|
||||
})
|
||||
|
||||
app.SetRoot(center(40, 20, form), true)
|
||||
go func() {
|
||||
done <- app.Run()
|
||||
}()
|
||||
|
||||
err := <-done
|
||||
app.Stop()
|
||||
return err
|
||||
}
|
Loading…
Reference in New Issue