Use a opção -t
para especificar o tipo de conteúdo, como
xclip -selection clipboard -t image/png -i example.png
Eu gostaria de escrever um script para pegar um arquivo de imagem, escalá-lo em 50% e colocá-lo na área de transferência para que possa ser colado facilmente. A parte em que estou preso é como colocar uma imagem na área de transferência.
Eu conheço o xclip, mas o AFAICS lida apenas com texto. É possível ter uma imagem na área de transferência sem o aplicativo que a gerou por aí? - Desculpe, não tenho certeza do funcionamento de como funciona a área de transferência!
Graças à resposta de Florian abaixo, consegui o que eu queria, que era tirar uma captura de tela e dimensioná-la automaticamente para um máximo de 600px de largura (por exemplo, para colar em um e-mail). O problema que enfrentei foi que o Thunderbird não aceita image/png
da área de transferência. Consegui arredondar isso convertendo-o para text/html
com um data
url. Aqui está o meu código, caso alguém considere útil:
#!/bin/bash
TMP=/tmp/screenshot.png
function screenshotfail {
notify-send -u low -i image "Screenshot failed."
exit
}
# Take screenshot
gnome-screenshot -a -b -p -f "$TMP" || screenshotfail
# Ensure it's max 600px wide
mogrify -resize '>600x' "$TMP" || screenshotfail
# optimise the png if optipng is installed.
which optipng >/dev/null && optipng "$TMP"
# Copy to clipboard.
#
# This is what does not work for Thunderbird:
# xclip -selection clipboard -t image/png <"$TMP" || screenshotfail
# But this does:
echo "<img src='data:image/png;base64,"$(base64 -w0 "$TMP")"' />" | \
xclip -selection clipboard -t text/html || screenshotfail
# Remove the temp file.
rm -f "$TMP"
# Notify user.
notify-send -u low -i image "600px screenshot copied to clipboard"
Use a opção -t
para especificar o tipo de conteúdo, como
xclip -selection clipboard -t image/png -i example.png
Tags command-line clipboard