From cffb16d7f7226e471efe32c2ff0b6af2c0187bba Mon Sep 17 00:00:00 2001 From: bbedward Date: Sun, 7 Dec 2025 20:10:31 -0500 Subject: [PATCH] matugen: make signalByName helper not use exec --- core/internal/matugen/matugen.go | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/core/internal/matugen/matugen.go b/core/internal/matugen/matugen.go index c5ff3657..4b821ba7 100644 --- a/core/internal/matugen/matugen.go +++ b/core/internal/matugen/matugen.go @@ -549,25 +549,29 @@ func refreshGTK(configDir, mode string) { } func signalTerminals() { - signalProcess("kitty", syscall.SIGUSR1) - signalProcess("ghostty", syscall.SIGUSR2) - signalProcess(".kitty-wrapped", syscall.SIGUSR1) - signalProcess(".ghostty-wrappe", syscall.SIGUSR2) + signalByName("kitty", syscall.SIGUSR1) + signalByName("ghostty", syscall.SIGUSR2) + signalByName(".kitty-wrapped", syscall.SIGUSR1) + signalByName(".ghostty-wrappe", syscall.SIGUSR2) } -func signalProcess(name string, sig syscall.Signal) { - cmd := exec.Command("pgrep", "-x", name) - output, err := cmd.Output() +func signalByName(name string, sig syscall.Signal) { + entries, err := os.ReadDir("/proc") if err != nil { return } - pids := strings.Fields(string(output)) - for _, pidStr := range pids { - pid, err := strconv.Atoi(pidStr) + for _, entry := range entries { + pid, err := strconv.Atoi(entry.Name()) if err != nil { continue } - syscall.Kill(pid, sig) + comm, err := os.ReadFile(filepath.Join("/proc", entry.Name(), "comm")) + if err != nil { + continue + } + if strings.TrimSpace(string(comm)) == name { + syscall.Kill(pid, sig) + } } }