#!/bin/zsh # backclip - simple X11 clipboard manager # # run backclip -d to collect $N last selections in a ring buffer, # run backclip to put them into selection buffer again using dmenu. DIR=/tmp/.backclip-$UID N=32 if [[ "$1" = -d ]]; then mkdir -p -m 700 $DIR i=0 xprop -spy -root CUT_BUFFER0 | while read; do oi=$i xclip -o >$DIR/.$oi # check for duplicate selection if ! cmp -s $DIR/.$oi $DIR/$oi; then (( i = (i+1) % N )) mv $DIR/.$oi $DIR/$i fi done else xsel -i <$DIR/$(for f in $DIR/*(om); do echo -n $f:t ' ' tr '[:space:]' ' ' <$f |head -1 |head -c 300 echo done | dmenu ${=BACKCLIPOPT} -l $N | cut -d' ' -f1) fi