rewrite
This commit is contained in:
parent
399d484f6e
commit
283e7bd1fc
@ -1,21 +0,0 @@
|
||||
package hypr
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
)
|
||||
|
||||
func Execute(cmd string) error {
|
||||
conn, err := net.Dial("unix", os.ExpandEnv("/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
if _, err := fmt.Fprintln(conn, cmd); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
@ -1,36 +0,0 @@
|
||||
package hypr
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os/exec"
|
||||
|
||||
"git.milar.in/milarin/slices"
|
||||
)
|
||||
|
||||
func GetWindows() ([]*Window, error) {
|
||||
cmd := exec.Command("hyprctl", "-j", "clients")
|
||||
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := cmd.Start(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
windows := make([]*Window, 0, 5)
|
||||
if err := json.NewDecoder(stdout).Decode(&windows); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := cmd.Wait(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
windows = slices.Filter(windows, func(w *Window) bool {
|
||||
return w.PID != -1
|
||||
})
|
||||
|
||||
return windows, nil
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
package hypr
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"context"
|
||||
"net"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"git.milar.in/milarin/channel"
|
||||
"git.milar.in/milarin/slices"
|
||||
)
|
||||
|
||||
func GetEventChannel(ctx context.Context, types ...EventType) (<-chan Event, error) {
|
||||
conn, err := net.Dial("unix", os.ExpandEnv("/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock"))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
out := make(chan Event, 10)
|
||||
|
||||
go func() {
|
||||
defer conn.Close()
|
||||
<-ctx.Done()
|
||||
}()
|
||||
|
||||
go func() {
|
||||
defer close(out)
|
||||
defer conn.Close()
|
||||
|
||||
sc := bufio.NewScanner(conn)
|
||||
for sc.Scan() {
|
||||
out <- parseEvent(sc.Text())
|
||||
}
|
||||
}()
|
||||
|
||||
if len(types) == 0 {
|
||||
return out, nil
|
||||
}
|
||||
|
||||
typeMap := slices.ToStructMap(slices.Map(types, strings.ToLower))
|
||||
return channel.Filter(out, func(e Event) bool {
|
||||
_, ok := typeMap[e.Type]
|
||||
return ok
|
||||
}), nil
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
package hypr
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
func GetWorkspaces() ([]*Workspace, error) {
|
||||
cmd := exec.Command("hyprctl", "-j", "workspaces")
|
||||
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := cmd.Start(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
workspaces := make([]*Workspace, 0, 5)
|
||||
if err := json.NewDecoder(stdout).Decode(&workspaces); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := cmd.Wait(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return workspaces, nil
|
||||
}
|
||||
|
||||
func GetActiveWorkspace() (*Workspace, error) {
|
||||
cmd := exec.Command("hyprctl", "-j", "activeworkspace")
|
||||
|
||||
stdout, err := cmd.StdoutPipe()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := cmd.Start(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
workspace := &Workspace{}
|
||||
if err := json.NewDecoder(stdout).Decode(workspace); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := cmd.Wait(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return workspace, nil
|
||||
}
|
Loading…
Reference in New Issue
Block a user