Add support for i3status-rust
This commit is contained in:
parent
00e13fc7ad
commit
2ba309fe36
@ -167,6 +167,10 @@ func (a *AppState) initialize() {
|
|||||||
}
|
}
|
||||||
a.ValidOperations = make(map[string][]string)
|
a.ValidOperations = make(map[string][]string)
|
||||||
a.OpFuncs = make(map[string]func([]string) int)
|
a.OpFuncs = make(map[string]func([]string) int)
|
||||||
|
a.addOperation("i3status",
|
||||||
|
[]string{"i3status - Output json appropriate for an i3status-rust block"},
|
||||||
|
a.opI3Status,
|
||||||
|
)
|
||||||
a.addOperation("ls",
|
a.addOperation("ls",
|
||||||
[]string{"ls - List Tasks"},
|
[]string{"ls - List Tasks"},
|
||||||
a.opListTasks,
|
a.opListTasks,
|
||||||
|
15
helpers.go
15
helpers.go
@ -3,7 +3,10 @@ package main
|
|||||||
import (
|
import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
"unicode"
|
"unicode"
|
||||||
|
|
||||||
|
todotxt "git.bullercodeworks.com/brian/go-todotxt"
|
||||||
)
|
)
|
||||||
|
|
||||||
func itoa(val int) string {
|
func itoa(val int) string {
|
||||||
@ -76,3 +79,15 @@ func sliceIsValidTags(v []string) bool {
|
|||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func copyTaskList(t todotxt.TaskList) todotxt.TaskList {
|
||||||
|
re := todotxt.NewTaskList()
|
||||||
|
for _, v := range t {
|
||||||
|
re.AddTask(&v)
|
||||||
|
}
|
||||||
|
return *re
|
||||||
|
}
|
||||||
|
|
||||||
|
func dateWithinNextDay(d time.Time) bool {
|
||||||
|
return !d.IsZero() && d.Before(time.Now().Add(time.Hour*24))
|
||||||
|
}
|
||||||
|
29
task_ops.go
29
task_ops.go
@ -8,6 +8,35 @@ import (
|
|||||||
todotxt "git.bullercodeworks.com/brian/go-todotxt"
|
todotxt "git.bullercodeworks.com/brian/go-todotxt"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (a *AppState) opI3Status(args []string) int {
|
||||||
|
var filterString string
|
||||||
|
state := "Idle"
|
||||||
|
if len(args) > 0 {
|
||||||
|
filterString = strings.Join(args, " ")
|
||||||
|
a.TaskList = a.getFilteredList(filterString)
|
||||||
|
}
|
||||||
|
total := len(*a.TaskList)
|
||||||
|
var incomplete int
|
||||||
|
for _, v := range *a.TaskList {
|
||||||
|
if !v.HasCompletedDate() {
|
||||||
|
incomplete++
|
||||||
|
if dateWithinNextDay(v.DueDate) {
|
||||||
|
state = "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if state != "Warning" {
|
||||||
|
warning := a.config.Get("i3status_warning")
|
||||||
|
if warning != "" {
|
||||||
|
if len(*a.getFilteredList(warning)) > 0 {
|
||||||
|
state = "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fmt.Printf("{\"icon\":\"tasks\",\"state\":\"%s\", \"text\": \"%s: %d/%d\"}", state, filterString, incomplete, total)
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
func (a *AppState) opListTasks(args []string) int {
|
func (a *AppState) opListTasks(args []string) int {
|
||||||
var lastIdx int
|
var lastIdx int
|
||||||
var filterString string
|
var filterString string
|
||||||
|
Loading…
Reference in New Issue
Block a user