履歴機能を提供するソフトウェアはあるが、検索できないのとカスタマイズ性に優れていないので、下記のコマンドを作成した。
~/bin/save-xclip-history
#!/bin/bash
save(){
local content="$1"
(echo "$content" | file - | grep -q text) || return
if ! grep -q -F -x -e "$content" ~/.xclip-history; then
echo "$content" >> ~/.xclip-history
fi
}
while true; do
save "$(xclip -o -selection clipboard)"
save "$(xclip -o -selection primary)"
sleep 1
done
~/bin/dmenu_paste
#!/bin/bash
xdotool type -- "$(cat ~/.xclip-history | tac | dmenu -b -l 15 -p '>')"
.xinitrc
に save-xclip-history &
と書いておけば、自動で保存される。
呼び出しは、任意のキーに割り当てる。 awesome ではこんな感じ。
~/.config/awesome/rc.lua
awful.key({ modkey, }, "v", function () awful.util.spawn("dmenu_paste") end),