cross-platform clipboard package that supports accessing text and image in Go (macOS/Linux/Windows/Android/iOS)
- Cross platform supports: macOS, Linux (X11), Windows, iOS, and Android
- Copy/paste UTF-8 text
- Copy/paste PNG encoded images (Desktop-only)
- Command
gclip
as a demo application - Mobile app
gclip-gui
as a demo application
- A command line tool
gclip
for command line clipboard accesses, see document here. - A GUI application
gclip-gui
for functionality verifications on mobile systems, see a document here.
gclip
command offers the ability to interact with the system clipboard
from the shell. To install:
$ go install golang.design/x/clipboard/cmd/gclip@latest
$ gclip gclip is a command that provides clipboard interaction. usage: gclip [-copy|-paste] [-f <file>] options: -copy copy data to clipboard -f string source or destination to a given file path -paste paste data from clipboard examples: gclip -paste paste from clipboard and prints the content gclip -paste -f x.txt paste from clipboard and save as text to x.txt gclip -paste -f x.png paste from clipboard and save as image to x.png cat x.txt | gclip -copy copy content from x.txt to clipboard gclip -copy -f x.txt copy content from x.txt to clipboard gclip -copy -f x.png copy x.png as image data to clipboard
If -copy
is used, the command will exit when the data is no longer
available from the clipboard. You can always send the command to the
background using a shell &
operator, for example:
$ cat x.txt | gclip -copy &
This package spent efforts to provide cross platform abstraction regarding accessing system clipboards, but here are a few details you might need to know.
- macOS: require Cgo, no dependency
- Linux: require X11 dev package. For instance, install
libx11-dev
orxorg-dev
orlibX11-devel
to access X window system. - Windows: no Cgo, no dependency
- iOS/Android: collaborate with
gomobile
In general, when you need test your implementation regarding images, There are system level shortcuts to put screenshot image into your system clipboard:
- On macOS, use
Ctrl+Shift+Cmd+4
- On Linux/Ubuntu, use
Ctrl+Shift+PrintScreen
- On Windows, use
Shift+Win+s
As described in the API documentation, the package supports read/write UTF8 encoded plain text or PNG encoded image data. Thus, the other types of data are not supported yet, i.e. undefined behavior.
The main purpose of building this package is to support the midgard project, which offers clipboard-based features like universal clipboard service that syncs clipboard content across multiple systems, allocating public accessible for clipboard content, etc.
To know more projects, check our wiki page.
from https://github.com/golang-design/clipboard
No comments:
Post a Comment