init commit

This commit is contained in:
ysandler
2026-01-27 22:01:30 -06:00
commit ee23a4f39c
22 changed files with 1605 additions and 0 deletions

51
internal/clipboard/x11.go Normal file
View File

@@ -0,0 +1,51 @@
package clipboard
import (
"context"
"golang.design/x/clipboard"
)
type X11Clipboard struct{}
func NewX11() (*X11Clipboard, error) {
if err := clipboard.Init(); err != nil {
return nil, err
}
return &X11Clipboard{}, nil
}
func (c *X11Clipboard) Read() (string, error) {
return string(clipboard.Read(clipboard.FmtText)), nil
}
func (c *X11Clipboard) Write(content string) error {
clipboard.Write(clipboard.FmtText, []byte(content))
return nil
}
func (c *X11Clipboard) Watch(ctx context.Context) <-chan string {
out := make(chan string)
go func() {
defer close(out)
// golang.design/x/clipboard provides a Watch function
ch := clipboard.Watch(ctx, clipboard.FmtText)
for {
select {
case <-ctx.Done():
return
case data, ok := <-ch:
if !ok {
return
}
if len(data) > 0 {
out <- string(data)
}
}
}
}()
return out
}