aboutsummaryrefslogtreecommitdiff
path: root/clip
diff options
context:
space:
mode:
Diffstat (limited to 'clip')
-rwxr-xr-xclip31
1 files changed, 21 insertions, 10 deletions
diff --git a/clip b/clip
index dbd3f33..9f039f8 100755
--- a/clip
+++ b/clip
@@ -13,40 +13,51 @@
13 13
14menu="dmenu -i -l 25" 14menu="dmenu -i -l 25"
15 15
16usage() {
17 echo "Usage: clip [-m MENU]"
18}
19
16while getopts "m:" opt; do 20while getopts "m:" opt; do
17 case "$opt" in 21 case "$opt" in
18 m) 22 m)
19 menu="$OPTARG" 23 menu="$OPTARG"
20 ;; 24 ;;
25 *)
26 usage
27 exit 1
28 ;;
21 esac 29 esac
22done 30done
23shift `expr $OPTIND - 1` 31shift "$((OPTIND - 1))"
24 32
25dir="/tmp/clipdir" 33dir="/tmp/clipdir"
26mkdir -p "$dir" 34mkdir -p "$dir"
27 35
28file1="$(mktemp -p $dir $(date +%s).XXXXX)" 36file1="$(mktemp -p "$dir" "$(date +%s)".XXXXX)"
29file2="$(mktemp -p $dir $(date +%s)b.XXXX)" 37file2="$(mktemp -p "$dir" "$(date +%s)"b.XXXX)"
38echo "created $file1"
39echo "created $file2"
30xsel > "$file1" 40xsel > "$file1"
31xsel -b > "$file2" 41xsel -b > "$file2"
32 42
33# Avoid duplicates 43# Avoid duplicates
34for f in $dir/*; do 44for f in "$dir"/*; do
35 [ "$f" != "$file1" ] && if diff "$f" "$file1"; then rm "$file1"; fi 45 [ "$f" != "$file1" ] && if diff "$f" "$file1"; then rm "$file1"; fi
36 [ "$f" != "$file2" ] && if diff "$f" "$file2"; then rm "$file2"; fi 46 [ "$f" != "$file2" ] && if diff "$f" "$file2"; then rm "$file2"; fi
37done 47done
38 48
39list="$(mktemp)" 49list="$(mktemp)"
40ls $dir > $list; 50ls "$dir" > "$list";
41 51
42lines="$(mktemp)" 52lines="$(mktemp)"
43for f in $dir/*; do 53for f in "$dir"/*; do
44 nlines=$(expr 1 + "$(wc -l $f | awk '{print $1}')") 54 nlines="$(wc -l "$f" | awk '{print $1}')"
45 fclean=$(echo $f | sed "s|$dir\/||") 55 fclean="$(echo "$f" | sed "s|$dir\/||")"
46 printf "$fclean ($nlines) | $(head -n 1 $f)\n" >> "$lines" 56 printf '%s (%s) | %s\n' \
57 "$fclean" "$((1+nlines))" "$(head -n 1 "$f")" >> "$lines"
47done 58done
48 59
49selected=$(sort -r $lines | $menu | awk '{print $1}') 60selected=$(sort -r "$lines" | $menu | awk '{print $1}')
50if [ -n "$selected" ]; then 61if [ -n "$selected" ]; then
51 xsel -ib < "$dir/$selected" 62 xsel -ib < "$dir/$selected"
52fi 63fi

Generated with cgit - Back to sebastiano.tronto.net