build(deps): upgrade clipboard to latest

This commit is contained in:
ayn2op 2026-03-08 17:35:21 -04:00
parent 643946fe64
commit b02803906d
9 changed files with 82 additions and 43 deletions

6
go.mod
View file

@ -10,7 +10,7 @@ require (
github.com/BurntSushi/toml v1.6.0
github.com/alecthomas/chroma/v2 v2.23.1
github.com/andybalholm/brotli v1.2.0
github.com/ayn2op/clipboard v0.0.0-20260308080338-b25f12248108
github.com/ayn2op/clipboard v0.0.0-20260308203959-c5ad7df3fc97
github.com/ayn2op/tview v0.0.0-20260304052427-7549865d186e
github.com/deckarep/gosx-notifier v0.0.0-20180201035817-e127226297fb
github.com/diamondburned/arikawa/v3 v3.6.1-0.20260308005009-475d37ffd5fa
@ -56,8 +56,8 @@ require (
golang.org/x/exp/shiny v0.0.0-20260218203240-3dfff04db8fa // indirect
golang.org/x/image v0.36.0 // indirect
golang.org/x/mobile v0.0.0-20260217195705-b56b3793a9c4 // indirect
golang.org/x/sys v0.41.0 // indirect
golang.org/x/sys v0.42.0 // indirect
golang.org/x/term v0.40.0 // indirect
golang.org/x/text v0.34.0 // indirect
golang.org/x/time v0.14.0 // indirect
golang.org/x/time v0.15.0 // indirect
)

12
go.sum
View file

@ -14,8 +14,8 @@ github.com/alecthomas/repr v0.5.2 h1:SU73FTI9D1P5UNtvseffFSGmdNci/O6RsqzeXJtP0Qs
github.com/alecthomas/repr v0.5.2/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ=
github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY=
github.com/ayn2op/clipboard v0.0.0-20260308080338-b25f12248108 h1:7iC49NDHu4nF6EqySoIntQ88ceHeMVM198wMBAOFDFU=
github.com/ayn2op/clipboard v0.0.0-20260308080338-b25f12248108/go.mod h1:3kFnpNCa3dF6WryzOMCDao7PfZ7DTCh+pievlfuwV80=
github.com/ayn2op/clipboard v0.0.0-20260308203959-c5ad7df3fc97 h1:WujETUV+v0DEJyZgjeLzQvihWyL80c0Tg4qf0dDo+Io=
github.com/ayn2op/clipboard v0.0.0-20260308203959-c5ad7df3fc97/go.mod h1:3kFnpNCa3dF6WryzOMCDao7PfZ7DTCh+pievlfuwV80=
github.com/ayn2op/tview v0.0.0-20260304052427-7549865d186e h1:fc5qHUJV+XYlYabsJtWW/AwbGLFu6XMFTiHXDViUBeM=
github.com/ayn2op/tview v0.0.0-20260304052427-7549865d186e/go.mod h1:lZ8RdOegQWBQafTOasGE7Ps1/Ymy4jmXoPt5vz2QsS0=
github.com/danieljoos/wincred v1.2.3 h1:v7dZC2x32Ut3nEfRH+vhoZGvN72+dQ/snVXo/vMFLdQ=
@ -139,8 +139,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo=
golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
@ -153,8 +153,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI=
golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=

View file

@ -1,10 +1,10 @@
package clipboard
import designClipb "github.com/ayn2op/clipboard"
import "github.com/ayn2op/clipboard"
type Format = designClipb.Format
type Format = clipboard.Format
const (
FmtText Format = designClipb.FmtText
FmtImage = designClipb.FmtImage
FmtText Format = clipboard.FmtText
FmtImage = clipboard.FmtImage
)

View file

@ -1,11 +1,19 @@
//go:build !linux
//go:build !linux && !freebsd
package clipboard
import designClipb "github.com/ayn2op/clipboard"
var (
Init = designClipb.Init
Read = designClipb.Read
Write = designClipb.Write
import (
"github.com/ayn2op/clipboard"
)
func Init() error {
return clipboard.Init()
}
func Read(t Format) ([]byte, error) {
return clipboard.Read(clipboard.Format(t))
}
func Write(t Format, buf []byte) error {
return clipboard.Write(clipboard.Format(t), buf)
}

View file

@ -1,11 +1,10 @@
//go:build linux
//go:build linux || freebsd
package clipboard
import (
"bytes"
designClipb "github.com/ayn2op/clipboard"
"log/slog"
"github.com/ayn2op/clipboard"
"os"
"os/exec"
)
@ -14,7 +13,7 @@ var wayland bool
func Init() error {
if _, ok := os.LookupEnv("WAYLAND_DISPLAY"); !ok {
return designClipb.Init()
return clipboard.Init()
}
if _, err := exec.LookPath("wl-copy"); err != nil {
return err
@ -26,9 +25,9 @@ func Init() error {
return nil
}
func Read(t Format) []byte {
func Read(t Format) ([]byte, error) {
if !wayland {
return designClipb.Read(designClipb.Format(t))
return clipboard.Read(clipboard.Format(t))
}
// -n: Don't print a newline at the end
// -t type: MIME type specifier
@ -36,23 +35,19 @@ func Read(t Format) []byte {
outBuffer := bytes.Buffer{}
cmd.Stdout = &outBuffer
if err := cmd.Run(); err != nil {
slog.Error("failed to read clipboard", "err", err)
return nil
return nil, err
}
return outBuffer.Bytes()
return outBuffer.Bytes(), nil
}
func Write(t Format, buf []byte) <-chan struct{} {
func Write(t Format, buf []byte) error {
if !wayland {
return designClipb.Write(designClipb.Format(t), buf)
return clipboard.Write(clipboard.Format(t), buf)
}
// -t type: MIME type specifier
cmd := exec.Command("wl-copy", "-t", formatToType(t))
cmd.Stdin = bytes.NewReader(buf)
if err := cmd.Run(); err != nil {
slog.Error("failed to write to clipboard", "err", err)
}
return nil
return cmd.Run()
}
func formatToType(t Format) string {

View file

@ -436,7 +436,11 @@ func (gt *guildsTree) yankID() {
// Reference of a tree node in the guilds tree is its ID.
// discord.Snowflake (discord.GuildID and discord.ChannelID) have the String method.
if id, ok := node.GetReference().(fmt.Stringer); ok {
go clipboard.Write(clipboard.FmtText, []byte(id.String()))
go func() {
if err := clipboard.Write(clipboard.FmtText, []byte(id.String())); err != nil {
slog.Error("failed to copy node id", "err", err)
}
}()
}
}

View file

@ -69,8 +69,19 @@ func newMessageInput(cfg *config.Config, chatView *View) *messageInput {
mi.
SetPlaceholder(tview.NewLine(tview.NewSegment("Select a channel to start chatting", tcell.StyleDefault.Dim(true)))).
SetClipboard(
func(s string) { clipboard.Write(clipboard.FmtText, []byte(s)) },
func() string { return string(clipboard.Read(clipboard.FmtText)) },
func(s string) {
if err := clipboard.Write(clipboard.FmtText, []byte(s)); err != nil {
slog.Error("failed to write clipboard text", "err", err)
}
},
func() string {
data, err := clipboard.Read(clipboard.FmtText)
if err != nil {
slog.Error("failed to read clipboard text", "err", err)
return ""
}
return string(data)
},
).
SetDisabled(true)
@ -187,7 +198,12 @@ func (mi *messageInput) HandleEvent(event tcell.Event) tview.Command {
}
func (mi *messageInput) paste() {
if data := clipboard.Read(clipboard.FmtImage); data != nil {
data, err := clipboard.Read(clipboard.FmtImage)
if err != nil {
slog.Error("failed to read clipboard image", "err", err)
return
}
if data != nil {
name := "clipboard.png"
mi.attach(name, bytes.NewReader(data))
}

View file

@ -1022,7 +1022,11 @@ func (ml *messagesList) yankID() {
return
}
go clipboard.Write(clipboard.FmtText, []byte(msg.ID.String()))
go func() {
if err := clipboard.Write(clipboard.FmtText, []byte(msg.ID.String())); err != nil {
slog.Error("failed to copy message id", "err", err)
}
}()
}
func (ml *messagesList) yankContent() {
@ -1032,7 +1036,11 @@ func (ml *messagesList) yankContent() {
return
}
go clipboard.Write(clipboard.FmtText, []byte(msg.Content))
go func() {
if err := clipboard.Write(clipboard.FmtText, []byte(msg.Content)); err != nil {
slog.Error("failed to copy message content", "err", err)
}
}()
}
func (ml *messagesList) yankURL() {
@ -1042,7 +1050,11 @@ func (ml *messagesList) yankURL() {
return
}
go clipboard.Write(clipboard.FmtText, []byte(msg.URL()))
go func() {
if err := clipboard.Write(clipboard.FmtText, []byte(msg.URL())); err != nil {
slog.Error("failed to copy message url", "err", err)
}
}()
}
func (ml *messagesList) open() {

View file

@ -64,7 +64,11 @@ func (f *Form) onError(err error) {
AddButtons([]string{"Copy", "Close"}).
SetDoneFunc(func(buttonIndex int, _ string) {
if buttonIndex == 0 {
go clipboard.Write(clipboard.FmtText, []byte(message))
go func() {
if err := clipboard.Write(clipboard.FmtText, []byte(message)); err != nil {
slog.Error("failed to copy error message", "err", err)
}
}()
} else {
f.RemoveLayer(errorLayerName)
}