クリップボードの内容をモニターして、自動的に発動したり同期したりするの動かしているのだけれど
ファイルマネージャ(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

コメントする

perl adv
perl adv