クリップボードの内容をモニターして、自動的に発動したり同期したりするの動かしているのだけれど
ファイルマネージャ(thunar や nautilus や PCMan) で Ctrl-X or Ctrl-C した場合に
ファイルパスの文字列を Ctrl-C した場合と区別したい。
xclip -selection clipboard -t TARGETS -o が有用なようだ。
(urxvt で文字列をコピー)
# xclip -selection clipboard -t TARGETS -o
TARGETS
UTF8_STRING
# xclip -selection clipboard -o
/home/user/file
(nautilus でファイルを選択して Ctrl-X)
# xclip -selection clipboard -t TARGETS -o
TIMESTAMP
TARGETS
MULTIPLE
x-special/gnome-copied-files
text/uri-list
UTF8_STRING
COMPOUND_TEXT
TEXT
STRING
text/plain;charset=utf-8
text/plain
# xclip -selection clipboard -t x-special/gnome-copied-files -o
cut
file:///home/user/file
# xclip -selection clipboard -o
/home/user/file
ちなみに xclip には xclip-copyfile xclip-cutfile xclip-pastefile が含まれていて、ssh -Y でリモート間でもファイルを転送できます。
host1# mkdir dir1
host1# echo content1 > dir1/file1
host1# echo content2 > dir1/file2
host1# xclip-copyfile dir1
host1# ssh -Y host2
host2# xclip-pastefile
x dir1/
x dir1/file1
x dir1/file2
host2# cat dir1/file1
content1
FreeBSD の場合は /usr/local/bin/xclip-pastefile を修正する必要があるかも。
host1# xclip-copyfile dir1
host1# ssh -Y host2
host2# xclip-pastefile
tar: Error opening archive: Failed to open '/dev/sa0'
host2# exit
host1# xclip-copyfile dir1
host1# ssh -Y host2
host2% xclip -selection secondary -o | gunzip -c | tar xv -f -
x dir1/
x dir1/file1
x dir1/file2
host2% cat
#!/bin/sh
set -e
if [ "x$1" != "x" ]; then
echo "Usage: $0" >&2
exit 1
fi
xclip -selection secondary -o | gunzip -c | tar xv