mirror of
				https://github.com/taigrr/wtf
				synced 2025-01-18 04:03:14 -08:00 
			
		
		
		
	This module displaysw which source is providing power (AC or battery) and for the battery displays the current charge capacity, how long it will last, and the battery state.
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package cmdrunner
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"os/exec"
 | 
						|
	"strings"
 | 
						|
 | 
						|
	"github.com/olebedev/config"
 | 
						|
	"github.com/senorprogrammer/wtf/wtf"
 | 
						|
)
 | 
						|
 | 
						|
// Config is a pointer to the global config object
 | 
						|
var Config *config.Config
 | 
						|
 | 
						|
type Widget struct {
 | 
						|
	wtf.TextWidget
 | 
						|
 | 
						|
	args   []string
 | 
						|
	cmd    string
 | 
						|
	result string
 | 
						|
}
 | 
						|
 | 
						|
func NewWidget() *Widget {
 | 
						|
	widget := Widget{
 | 
						|
		TextWidget: wtf.NewTextWidget(" 🏃 Runner ", "cmdrunner", false),
 | 
						|
 | 
						|
		args: wtf.ToStrs(Config.UList("wtf.mods.cmdrunner.args")),
 | 
						|
		cmd:  Config.UString("wtf.mods.cmdrunner.cmd"),
 | 
						|
	}
 | 
						|
 | 
						|
	widget.View.SetWrap(true)
 | 
						|
 | 
						|
	return &widget
 | 
						|
}
 | 
						|
 | 
						|
func (widget *Widget) Refresh() {
 | 
						|
	if widget.Disabled() {
 | 
						|
		return
 | 
						|
	}
 | 
						|
 | 
						|
	widget.UpdateRefreshedAt()
 | 
						|
	widget.execute()
 | 
						|
	widget.View.Clear()
 | 
						|
	widget.View.SetTitle(fmt.Sprintf(" %s ", widget))
 | 
						|
 | 
						|
	fmt.Fprintf(widget.View, "%s", widget.result)
 | 
						|
}
 | 
						|
 | 
						|
func (widget *Widget) String() string {
 | 
						|
	args := strings.Join(widget.args, " ")
 | 
						|
	return fmt.Sprintf("%s %s", widget.cmd, args)
 | 
						|
}
 | 
						|
 | 
						|
func (widget *Widget) execute() {
 | 
						|
	cmd := exec.Command(widget.cmd, widget.args...)
 | 
						|
	widget.result = wtf.ExecuteCommand(cmd)
 | 
						|
}
 |