Alter 5 files
Update main.go Update i3bar.go Add backlight.go Update cpu.go Update providers.go
This commit is contained in:
parent
a132c1de0c
commit
e5d4c690e7
5 changed files with 111 additions and 17 deletions
|
@ -53,9 +53,10 @@ func run() error {
|
||||||
// providers.NewDisk("/", 30, 10),
|
// providers.NewDisk("/", 30, 10),
|
||||||
providers.NewBattery("BAT0", 80, 30, 20),
|
providers.NewBattery("BAT0", 80, 30, 20),
|
||||||
providers.NewWiFi("wlp0s20f3", 75),
|
providers.NewWiFi("wlp0s20f3", 75),
|
||||||
providers.NewIPType("wlp0s20f3"),
|
// providers.NewIPType("wlp0s20f3"),
|
||||||
// providers.NewIPAddress("wlp0s20f3"),
|
// providers.NewIPAddress("wlp0s20f3"),
|
||||||
providers.NewAudioPlayer(32),
|
providers.NewAudioPlayer(32),
|
||||||
|
providers.NewBacklight(),
|
||||||
)
|
)
|
||||||
|
|
||||||
if err := b.Emit([]*i3bar.Block{
|
if err := b.Emit([]*i3bar.Block{
|
||||||
|
|
|
@ -17,13 +17,13 @@ import (
|
||||||
type generatorInfo struct {
|
type generatorInfo struct {
|
||||||
Provider BlockGenerator
|
Provider BlockGenerator
|
||||||
HasClickConsumer bool
|
HasClickConsumer bool
|
||||||
Last *Block
|
Last *Block
|
||||||
}
|
}
|
||||||
|
|
||||||
type I3bar struct {
|
type I3bar struct {
|
||||||
writer io.Writer
|
writer io.Writer
|
||||||
reader io.Reader
|
reader io.Reader
|
||||||
updateSignal syscall.Signal
|
updateSignal syscall.Signal
|
||||||
|
|
||||||
generators []*generatorInfo
|
generators []*generatorInfo
|
||||||
tickNumber uint8
|
tickNumber uint8
|
||||||
|
@ -31,9 +31,9 @@ type I3bar struct {
|
||||||
|
|
||||||
func New(writer io.Writer, reader io.Reader, updateSignal syscall.Signal) *I3bar {
|
func New(writer io.Writer, reader io.Reader, updateSignal syscall.Signal) *I3bar {
|
||||||
return &I3bar{
|
return &I3bar{
|
||||||
writer: writer,
|
writer: writer,
|
||||||
reader: reader,
|
reader: reader,
|
||||||
updateSignal: updateSignal,
|
updateSignal: updateSignal,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -132,12 +132,6 @@ func (b *I3bar) tick(override bool) error {
|
||||||
TextColor: defaultColorSet.Bad,
|
TextColor: defaultColorSet.Bad,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if block == nil {
|
|
||||||
block = &Block{
|
|
||||||
FullText: "MISSING",
|
|
||||||
TextColor: defaultColorSet.Warning,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if block != gen.Last {
|
if block != gen.Last {
|
||||||
gen.Last = block
|
gen.Last = block
|
||||||
|
|
92
internal/providers/backlight.go
Normal file
92
internal/providers/backlight.go
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
package providers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/codemicro/bar/internal/i3bar"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Backlight struct {
|
||||||
|
name string
|
||||||
|
|
||||||
|
showUntil time.Time
|
||||||
|
lastValue int
|
||||||
|
|
||||||
|
maxValue int
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewBacklight() i3bar.BlockGenerator {
|
||||||
|
return &Backlight{
|
||||||
|
name: "backlight",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Backlight) Frequency() uint8 {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Backlight) parseIntFromFile(fname string) (int, error) {
|
||||||
|
fcont, err := os.ReadFile(fname)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
i, err := strconv.Atoi(strings.TrimSpace(string(fcont)))
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return i, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Backlight) getMaxVal() (int, error) {
|
||||||
|
if g.maxValue != 0 {
|
||||||
|
return g.maxValue, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
i, err := g.parseIntFromFile("/sys/class/backlight/intel_backlight/max_brightness")
|
||||||
|
if err != nil {
|
||||||
|
return 0, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
g.maxValue = i
|
||||||
|
return g.maxValue, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Backlight) getCurrentVal() (int, error) {
|
||||||
|
return g.parseIntFromFile("/sys/class/backlight/intel_backlight/brightness")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Backlight) Block(cs *i3bar.ColorSet) (*i3bar.Block, error) {
|
||||||
|
// this is a sun emoji: ☀
|
||||||
|
|
||||||
|
if g.maxValue == 0 {
|
||||||
|
if _, err := g.getMaxVal(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if cv, err := g.getCurrentVal(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
} else if cv != g.lastValue {
|
||||||
|
g.lastValue = cv
|
||||||
|
g.showUntil = time.Now().Add(time.Second * 5)
|
||||||
|
}
|
||||||
|
|
||||||
|
if g.showUntil.After(time.Now()) {
|
||||||
|
return &i3bar.Block{
|
||||||
|
Name: g.name,
|
||||||
|
FullText: fmt.Sprintf("☀ %s%%", leftPad(fmt.Sprint((g.lastValue*100)/g.maxValue), ' ', 3)),
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *Backlight) GetNameAndInstance() (string, string) {
|
||||||
|
return g.name, ""
|
||||||
|
}
|
|
@ -24,7 +24,7 @@ func NewCPU(okThreshold, warningThreshold float32) i3bar.BlockGenerator {
|
||||||
m := &CPU{
|
m := &CPU{
|
||||||
OkThreshold: okThreshold,
|
OkThreshold: okThreshold,
|
||||||
WarningThreshold: warningThreshold,
|
WarningThreshold: warningThreshold,
|
||||||
name: "cpu",
|
name: "cpu",
|
||||||
}
|
}
|
||||||
_ = m.doSample()
|
_ = m.doSample()
|
||||||
return m
|
return m
|
||||||
|
@ -82,7 +82,7 @@ func (g *CPU) Block(colors *i3bar.ColorSet) (*i3bar.Block, error) {
|
||||||
|
|
||||||
block := &i3bar.Block{
|
block := &i3bar.Block{
|
||||||
Name: g.name,
|
Name: g.name,
|
||||||
FullText: fmt.Sprintf("CPU: %.1f%%", p),
|
FullText: fmt.Sprintf("CPU: %s%%", leftPad(fmt.Sprintf("%.1f", p), ' ', 4)),
|
||||||
ShortText: fmt.Sprintf("C: %.1f%%", p),
|
ShortText: fmt.Sprintf("C: %.1f%%", p),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,4 +97,4 @@ func (g *CPU) Block(colors *i3bar.ColorSet) (*i3bar.Block, error) {
|
||||||
|
|
||||||
func (g *CPU) GetNameAndInstance() (string, string) {
|
func (g *CPU) GetNameAndInstance() (string, string) {
|
||||||
return g.name, ""
|
return g.name, ""
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,3 +19,10 @@ func runCommand(program string, args ...string) ([]byte, error) {
|
||||||
}
|
}
|
||||||
return bytes.TrimSpace(out), err
|
return bytes.TrimSpace(out), err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func leftPad(x string, c rune, n int) string {
|
||||||
|
for len(x) < n {
|
||||||
|
x = string(c) + x
|
||||||
|
}
|
||||||
|
return x
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue