Documentation ¶
Overview ¶
Package clipboard provides cross platform clipboard access and supports macOS/Linux/Windows/Android/iOS platform. Before interacting with the clipboard, one must call Init to assert if it is possible to use this package:
err := clipboard.Init() if err != nil { panic(err) }
The most common operations are `Read` and `Write`. To use them:
// write/read text format data of the clipboard, and // the byte buffer regarding the text are UTF8 encoded. clipboard.Write(clipboard.FmtText, []byte("text data")) clipboard.Read(clipboard.FmtText) // write/read image format data of the clipboard, and // the byte buffer regarding the image are PNG encoded. clipboard.Write(clipboard.FmtImage, []byte("image data")) clipboard.Read(clipboard.FmtImage)
Note that read/write regarding image format assumes that the bytes are PNG encoded since it serves the alpha blending purpose that might be used in other graphical software.
In addition, `clipboard.Write` returns a channel that can receive an empty struct as a signal, which indicates the corresponding write call to the clipboard is outdated, meaning the clipboard has been overwritten by others and the previously written data is lost. For instance:
changed := clipboard.Write(clipboard.FmtText, []byte("text data")) select { case <-changed: println(`"text data" is no longer available from clipboard.`) }
You can ignore the returning channel if you don't need this type of notification. Furthermore, when you need more than just knowing whether clipboard data is changed, use the watcher API:
ch := clipboard.Watch(context.TODO(), clipboard.FmtText) for data := range ch { // print out clipboard data whenever it is changed println(string(data)) }
Index ¶
- Constants
- func C2GoStr(str *C.char) string
- func Go2CStr(str string) *C.char
- func GoStr2CPtr(s string) uintptr
- func Init() error
- func Read(t Format) []byte
- func RegisterHTMLClipboardFormat()
- func RegisterQQRichTextClipboardFormat()
- func SyncWrite(t Format, buf []byte) error
- func Watch(ctx context.Context, t Format) <-chan []byte
- func Write(t Format, buf []byte) <-chan struct{}
- type Format
Examples ¶
Constants ¶
const ( QQRICHTEXT_FORMAT = "QQ_RichEdit_Format" HTML_FORMAT = "HTML Format" )
Variables ¶
This section is empty.
Functions ¶
func Init ¶
func Init() error
Init initializes the clipboard package. It returns an error if the clipboard is not available to use. This may happen if the target system lacks required dependency, such as libx11-dev in X11 environment. For example,
err := clipboard.Init() if err != nil { panic(err) }
If Init returns an error, any subsequent Read/Write/Watch call may result in an unrecoverable panic.
func Read ¶
Read returns a chunk of bytes of the clipboard data if it presents in the desired format t presents. Otherwise, it returns nil.
Example ¶
package main import ( "fmt" "github.com/buhuang28/clipboard" ) func main() { err := clipboard.Init() if err != nil { panic(err) } fmt.Println(string(clipboard.Read(clipboard.FmtText))) }
Output: Hello, 世界
func RegisterHTMLClipboardFormat ¶
func RegisterHTMLClipboardFormat()
func RegisterQQRichTextClipboardFormat ¶
func RegisterQQRichTextClipboardFormat()
func Watch ¶
Watch returns a receive-only channel that received the clipboard data whenever any change of clipboard data in the desired format happens.
The returned channel will be closed if the given context is canceled.
Example ¶
package main import ( "context" "fmt" "time" "github.com/buhuang28/clipboard" ) func main() { err := clipboard.Init() if err != nil { panic(err) } ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) defer cancel() changed := clipboard.Watch(context.Background(), clipboard.FmtText) go func(ctx context.Context) { clipboard.Write(clipboard.FmtText, []byte("你好,world")) }(ctx) fmt.Println(string(<-changed)) }
Output: 你好,world
func Write ¶
Write writes a given buffer to the clipboard in a specified format. Write returned a receive-only channel can receive an empty struct as a signal, which indicates the clipboard has been overwritten from this write. If format t indicates an image, then the given buf assumes the image data is PNG encoded.
Example ¶
package main import ( "github.com/buhuang28/clipboard" ) func main() { err := clipboard.Init() if err != nil { panic(err) } clipboard.Write(clipboard.FmtText, []byte("Hello, 世界")) }
Output:
Types ¶
Directories ¶
Path | Synopsis |
---|---|
cmd
|
|
gclip-gui
This is a very basic example for verification purpose that demonstrates how the golang.design/x/clipboard can interact with macOS/Linux/Windows/Android/iOS system clipboard.
|
This is a very basic example for verification purpose that demonstrates how the golang.design/x/clipboard can interact with macOS/Linux/Windows/Android/iOS system clipboard. |