-
Notifications
You must be signed in to change notification settings - Fork 3
/
_wlclipboard.jl
38 lines (31 loc) · 875 Bytes
/
_wlclipboard.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function _isavailable_wlclipboard()
return success(pipeline(`which wl-copy`))
end
"""
_wlclipboard() -> AbstractMatrix{<:Colorant}
Paste an image from clipboard using `wl-paste`
"""
function _wlclipboard()
img_buf = IOBuffer()
# Pipe clipboard image to buffer
if success(pipeline(`wl-paste -t image/png`; stdout=img_buf))
# Load image from buffer
img = load(img_buf)
return img
else
error("No image in clipboard")
end
end
"""
_wlclipboard(img::AbstractMatrix{<:Colorant})
Copy an image to clipboard using `wl-copy`
"""
function _wlclipboard(img::AbstractMatrix{<:Colorant})
img_buf = IOBuffer()
# Save given image to buffer
save(Stream{format"PNG"}(img_buf), img)
# Copy to clipboard
open(`wl-copy -t image/png`, "w", stdout) do f
print(f, String(take!(img_buf)))
end
end