From 4602f5f6cf2ba94f96317ad11a3d1fa7de07e18f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miroslav=20=C5=A0ediv=C3=BD?= Date: Thu, 28 Jan 2021 21:19:31 +0100 Subject: [PATCH] xclip verbose error output. --- internal/desktop/clipboard.go | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/internal/desktop/clipboard.go b/internal/desktop/clipboard.go index 3dd0cb09..6e113bc2 100644 --- a/internal/desktop/clipboard.go +++ b/internal/desktop/clipboard.go @@ -1,17 +1,40 @@ package desktop import ( + "fmt" + "bytes" "os/exec" "strings" ) func (manager *DesktopManagerCtx) ReadClipboard() (string, error) { - out, err := exec.Command("xclip", "-selection", "clipboard", "-o").Output() - return string(out), err + cmd := exec.Command("xclip", "-selection", "clipboard", "-o") + + var stdout, stderr bytes.Buffer + cmd.Stdout = &stdout + cmd.Stderr = &stderr + + err := cmd.Run() + if err != nil { + msg := strings.TrimSpace(string(stderr.Bytes())) + return "", fmt.Errorf("%s", msg) + } + + return string(stdout.Bytes()), nil } func (manager *DesktopManagerCtx) WriteClipboard(data string) error { cmd := exec.Command("xclip", "-selection", "clipboard", "-i") - cmd.Stdin = strings.NewReader(data) - return cmd.Run() + cmd.Stdin = strings.NewReader(data) + + var stderr bytes.Buffer + cmd.Stderr = &stderr + + err := cmd.Run() + if err != nil { + msg := strings.TrimSpace(string(stderr.Bytes())) + return fmt.Errorf("%s", msg) + } + + return nil }