zenity/internal/zenutil/window_unix.go
2022-06-09 14:28:27 +01:00

42 lines
669 B
Go

//go:build !windows && !darwin
package zenutil
import (
"bytes"
"fmt"
"io"
"os/exec"
"strconv"
)
// ParseWindowId is internal.
func ParseWindowId(id string) int {
wid, _ := strconv.ParseUint(id, 0, 64)
return int(wid)
}
// GetParentWindowId is internal.
func GetParentWindowId() int {
buf, err := exec.Command("ps", "-xo", "pid=,ppid=").CombinedOutput()
if err != nil {
return 0
}
ppids := map[int]int{}
reader := bytes.NewReader(buf)
for {
var pid, ppid int
_, err := fmt.Fscan(reader, &pid, &ppid)
if err == io.EOF {
break
}
if err != nil {
return 0
}
ppids[pid] = ppid
}
// Find the relevant pid and window id.
return 0
}