clipboard.go

 1package ansi
 2
 3import "encoding/base64"
 4
 5// Clipboard names.
 6const (
 7	SystemClipboard  = 'c'
 8	PrimaryClipboard = 'p'
 9)
10
11// SetClipboard returns a sequence for manipulating the clipboard.
12//
13//	OSC 52 ; Pc ; Pd ST
14//	OSC 52 ; Pc ; Pd BEL
15//
16// Where Pc is the clipboard name and Pd is the base64 encoded data.
17// Empty data or invalid base64 data will reset the clipboard.
18//
19// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands
20func SetClipboard(c byte, d string) string {
21	if d != "" {
22		d = base64.StdEncoding.EncodeToString([]byte(d))
23	}
24	return "\x1b]52;" + string(c) + ";" + d + "\x07"
25}
26
27// SetSystemClipboard returns a sequence for setting the system clipboard.
28//
29// This is equivalent to SetClipboard(SystemClipboard, d).
30func SetSystemClipboard(d string) string {
31	return SetClipboard(SystemClipboard, d)
32}
33
34// SetPrimaryClipboard returns a sequence for setting the primary clipboard.
35//
36// This is equivalent to SetClipboard(PrimaryClipboard, d).
37func SetPrimaryClipboard(d string) string {
38	return SetClipboard(PrimaryClipboard, d)
39}
40
41// ResetClipboard returns a sequence for resetting the clipboard.
42//
43// This is equivalent to SetClipboard(c, "").
44//
45// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands
46func ResetClipboard(c byte) string {
47	return SetClipboard(c, "")
48}
49
50// ResetSystemClipboard is a sequence for resetting the system clipboard.
51//
52// This is equivalent to ResetClipboard(SystemClipboard).
53const ResetSystemClipboard = "\x1b]52;c;\x07"
54
55// ResetPrimaryClipboard is a sequence for resetting the primary clipboard.
56//
57// This is equivalent to ResetClipboard(PrimaryClipboard).
58const ResetPrimaryClipboard = "\x1b]52;p;\x07"
59
60// RequestClipboard returns a sequence for requesting the clipboard.
61//
62// See: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Operating-System-Commands
63func RequestClipboard(c byte) string {
64	return "\x1b]52;" + string(c) + ";?\x07"
65}
66
67// RequestSystemClipboard is a sequence for requesting the system clipboard.
68//
69// This is equivalent to RequestClipboard(SystemClipboard).
70const RequestSystemClipboard = "\x1b]52;c;?\x07"
71
72// RequestPrimaryClipboard is a sequence for requesting the primary clipboard.
73//
74// This is equivalent to RequestClipboard(PrimaryClipboard).
75const RequestPrimaryClipboard = "\x1b]52;p;?\x07"