Compare commits

...

2 commits

Author SHA1 Message Date
frosty 4fb9dd34d6 show fail message for template issues 2024-09-06 06:52:44 -04:00
frosty 170d4e3484 pass update function to monitorUpdates 2024-09-06 06:48:40 -04:00

21
main.go
View file

@ -73,12 +73,11 @@ func (m *Module) Run() {
tmpl, err := template.New("module").Parse(m.Template) tmpl, err := template.New("module").Parse(m.Template)
if err != nil { if err != nil {
log.Printf("template parsing error: %v\n", err) log.Printf("template parsing error: %v\n", err)
return output.WriteString("failed")
} }
if err := tmpl.Execute(&output, info); err != nil { if err := tmpl.Execute(&output, info); err != nil {
log.Printf("template execution error: %v\n", err) log.Printf("template execution error: %v\n", err)
return output.WriteString("failed")
} }
} else { } else {
fmt.Fprintf(&output, "%v", info) fmt.Fprintf(&output, "%v", info)
@ -140,7 +139,7 @@ func createOutput(b *bytes.Buffer) {
b.Write(suffix) b.Write(suffix)
} }
func monitorUpdates(setXRootName bool) { func monitorUpdates(outputHandler func([]byte)) {
var lastOutput []byte var lastOutput []byte
var combinedOutput bytes.Buffer var combinedOutput bytes.Buffer
@ -150,11 +149,7 @@ func monitorUpdates(setXRootName bool) {
combinedOutputBytes := combinedOutput.Bytes() combinedOutputBytes := combinedOutput.Bytes()
if !bytes.Equal(combinedOutputBytes, lastOutput) { if !bytes.Equal(combinedOutputBytes, lastOutput) {
if setXRootName { outputHandler(combinedOutputBytes)
xproto.ChangeProperty(x, xproto.PropModeReplace, root, xproto.AtomWmName, xproto.AtomString, 8, uint32(len(combinedOutputBytes)), combinedOutputBytes)
} else {
fmt.Printf("%s\n", combinedOutputBytes)
}
lastOutput = append([]byte(nil), combinedOutputBytes...) lastOutput = append([]byte(nil), combinedOutputBytes...)
} }
} }
@ -185,7 +180,13 @@ func main() {
go modules[i].Init(i) go modules[i].Init(i)
} }
go monitorUpdates(flags.SetXRootName) go monitorUpdates(func(combinedOutputBytes []byte) {
if flags.SetXRootName {
xproto.ChangeProperty(x, xproto.PropModeReplace, root, xproto.AtomWmName, xproto.AtomString, 8, uint32(len(combinedOutputBytes)), combinedOutputBytes)
} else {
fmt.Printf("%s\n", combinedOutputBytes)
}
})
for sig := range sigChan { for sig := range sigChan {
go handleSignal(sig) go handleSignal(sig)