implement basic makoctl notification list
This commit is contained in:
parent
372fd3b36f
commit
a32a141867
3 changed files with 72 additions and 38 deletions
11
cmd/mako.go
11
cmd/mako.go
|
@ -1,20 +1,23 @@
|
||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"git.dayl.in/daylin/hyprman/internal"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
// "git.dayl.in/daylin/hyprman/internal"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var makoCmd = &cobra.Command{
|
var makoCmd = &cobra.Command{
|
||||||
Use: "mako",
|
Use: "mako",
|
||||||
Short: "mako integration",
|
Short: "mako integration",
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
fmt.Println("hahah mako baby")
|
hyprman.ListNotifications(number)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
number int
|
||||||
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
rootCmd.AddCommand(makoCmd)
|
rootCmd.AddCommand(makoCmd)
|
||||||
|
makoCmd.Flags().IntVarP(&number, "number", "n", 10, "number of notifications")
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,6 +138,11 @@ func openWorkspaces(monitors []Monitor) []int {
|
||||||
}
|
}
|
||||||
|
|
||||||
func notify(message string) {
|
func notify(message string) {
|
||||||
cmd := exec.Command("notify-send", "hyprman", message)
|
cmd := exec.Command(
|
||||||
|
"notify-send",
|
||||||
|
"--app-name=hyprman",
|
||||||
|
"--transient",
|
||||||
|
message,
|
||||||
|
)
|
||||||
cmd.Run()
|
cmd.Run()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,35 +1,61 @@
|
||||||
package hyprman
|
package hyprman
|
||||||
|
|
||||||
// import (
|
import (
|
||||||
// "log"
|
"encoding/json"
|
||||||
// "os/exec"
|
"fmt"
|
||||||
// )
|
"log"
|
||||||
//
|
"os/exec"
|
||||||
// type MakoHistory struct {
|
)
|
||||||
// Type string `json:"type"`
|
|
||||||
// Data [][]MakoNotification `json:"data"`
|
type MakoHistory struct {
|
||||||
// }
|
Type string `json:"type"`
|
||||||
//
|
Data [][]MakoNotification `json:"data"`
|
||||||
// type MakoNotification struct {
|
}
|
||||||
// AppName MakoNotificationData `json:"app-name"`
|
|
||||||
// // AppIcon MakoNotificationData `json:"app-icon"`
|
type MakoNotification struct {
|
||||||
// // Category MakoNotificationData
|
AppName MakoNotificationData `json:"app-name"`
|
||||||
// // DesktopEntry MakoNotificationData `json:"desktop-entry"`
|
Summary MakoNotificationData
|
||||||
// Summary MakoNotificationData `json:"summary"`
|
Body MakoNotificationData
|
||||||
// Body MakoNotificationData
|
// AppIcon MakoNotificationData `json:"app-icon"`
|
||||||
// // Id MakoNotificationData
|
// Category MakoNotificationData
|
||||||
// // Urgency MakoNotificationData
|
// DesktopEntry MakoNotificationData `json:"desktop-entry"`
|
||||||
// // Actions MakoNotificationData
|
// Id MakoNotificationData
|
||||||
// }
|
// Urgency MakoNotificationData
|
||||||
//
|
// Actions MakoNotificationData
|
||||||
// type MakoNotificationData struct {
|
}
|
||||||
// Type string `json:"type"`
|
|
||||||
// Data string `json:"data"`
|
type MakoNotificationData struct {
|
||||||
// }
|
Type string `json:"type"`
|
||||||
//
|
Data string `json:"data"`
|
||||||
// func getHistory() MakoHistory {
|
}
|
||||||
// makoOutput, err := exec.Command("makoctl", "history").CombinedOutput()
|
|
||||||
// if err != nil {
|
func getHistory() MakoHistory {
|
||||||
// log.Fatal(err)
|
var history MakoHistory
|
||||||
// }
|
makoOutput, err := exec.Command("makoctl", "history").CombinedOutput()
|
||||||
// }
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
json.Unmarshal(makoOutput, &history)
|
||||||
|
return history
|
||||||
|
}
|
||||||
|
|
||||||
|
func displayNotification(n MakoNotification) {
|
||||||
|
fmt.Println("- ", n.AppName.Data)
|
||||||
|
if len(n.Summary.Data) > 0 {
|
||||||
|
fmt.Println(n.Summary.Data)
|
||||||
|
}
|
||||||
|
if len(n.Body.Data) > 0 {
|
||||||
|
fmt.Println(n.Body.Data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ListNotifications(number int) {
|
||||||
|
history := getHistory()
|
||||||
|
// TODO: align output ? by app-name
|
||||||
|
for i, notification := range history.Data[0] {
|
||||||
|
displayNotification(notification)
|
||||||
|
if i > number-1 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue