summaryrefslogtreecommitdiff
path: root/session.go
diff options
context:
space:
mode:
authorGrail Finder <wohilas@gmail.com>2026-03-13 09:23:17 +0300
committerGrail Finder <wohilas@gmail.com>2026-03-13 09:23:57 +0300
commitd9b820c9c4971922fcde0b373f70c54c870446d5 (patch)
treed3514939d2b6cdcaf85bbb76393b4047026fb5af /session.go
parentadc4dea644f3f14be8e282e280d6765e57919300 (diff)
Enha: insert to paste
Diffstat (limited to 'session.go')
-rw-r--r--session.go28
1 files changed, 25 insertions, 3 deletions
diff --git a/session.go b/session.go
index 980d998..ef3bab1 100644
--- a/session.go
+++ b/session.go
@@ -1,6 +1,7 @@
package main
import (
+ "bytes"
"encoding/json"
"errors"
"fmt"
@@ -161,10 +162,31 @@ func loadOldChatOrGetNew() []models.RoleMsg {
}
func copyToClipboard(text string) error {
- cmd := exec.Command("xclip", "-selection", "clipboard")
- cmd.Stdin = nil
+ var cmd *exec.Cmd
+ if _, err := exec.LookPath("xclip"); err == nil {
+ cmd = exec.Command("xclip", "-selection", "clipboard")
+ } else if _, err := exec.LookPath("wl-copy"); err == nil {
+ cmd = exec.Command("wl-copy")
+ } else {
+ return errors.New("no clipboard tool found (install xclip or wl-clipboard)")
+ }
+ cmd.Stdin = strings.NewReader(text)
cmd.Stdout = nil
cmd.Stderr = nil
- cmd.Stdin = strings.NewReader(text)
return cmd.Run()
}
+
+func readFromClipboard() (string, error) {
+ var cmd *exec.Cmd
+ if _, err := exec.LookPath("xclip"); err == nil {
+ cmd = exec.Command("xclip", "-selection", "clipboard", "-out")
+ } else if _, err := exec.LookPath("wl-paste"); err == nil {
+ cmd = exec.Command("wl-paste")
+ } else {
+ return "", errors.New("no clipboard tool found (install xclip or wl-clipboard)")
+ }
+ var out bytes.Buffer
+ cmd.Stdout = &out
+ err := cmd.Run()
+ return out.String(), err
+}