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.NewBattery("BAT0", 80, 30, 20),
|
||||
providers.NewWiFi("wlp0s20f3", 75),
|
||||
providers.NewIPType("wlp0s20f3"),
|
||||
// providers.NewIPType("wlp0s20f3"),
|
||||
// providers.NewIPAddress("wlp0s20f3"),
|
||||
providers.NewAudioPlayer(32),
|
||||
providers.NewBacklight(),
|
||||
)
|
||||
|
||||
if err := b.Emit([]*i3bar.Block{
|
||||
|
|
|
@ -132,12 +132,6 @@ func (b *I3bar) tick(override bool) error {
|
|||
TextColor: defaultColorSet.Bad,
|
||||
}
|
||||
}
|
||||
if block == nil {
|
||||
block = &Block{
|
||||
FullText: "MISSING",
|
||||
TextColor: defaultColorSet.Warning,
|
||||
}
|
||||
}
|
||||
|
||||
if block != gen.Last {
|
||||
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, ""
|
||||
}
|
|
@ -82,7 +82,7 @@ func (g *CPU) Block(colors *i3bar.ColorSet) (*i3bar.Block, error) {
|
|||
|
||||
block := &i3bar.Block{
|
||||
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),
|
||||
}
|
||||
|
||||
|
|
|
@ -19,3 +19,10 @@ func runCommand(program string, args ...string) ([]byte, error) {
|
|||
}
|
||||
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