dotfiles

Repositório dotfiles
git clone git://git.sivaldodavi.com/dotfiles.git
Log | Files | Refs | README

clip (1043B)


      1 #!/bin/sh
      2 
      3 HIST="${XDG_CACHE_HOME:-$HOME/.cache}/clipboard-history"
      4 
      5 _daemon() {
      6     mkdir -p "$(dirname "$HIST")"
      7     touch "$HIST"
      8     last=""
      9     while true; do
     10         current=$(xclip -o -selection clipboard 2>/dev/null)
     11         if [ -n "$current" ] && [ "$current" != "$last" ]; then
     12             last="$current"
     13             tmp=$(mktemp)
     14             printf '%s\n---\n' "$current" | cat - "$HIST" > "$tmp"
     15             mv "$tmp" "$HIST"
     16         fi
     17         sleep 1
     18     done
     19 }
     20 
     21 _pick() {
     22     [ -f "$HIST" ] || { echo "Histórico vazio."; exit 1; }
     23 
     24     chosen=$(awk '
     25         /^---$/ { if (entry != "") print entry; entry=""; next }
     26         { entry = (entry == "") ? $0 : entry " · " $0 }
     27         END { if (entry != "") print entry }
     28     ' "$HIST" | dmenu -l 15 -p "Clipboard:")
     29 
     30     [ -z "$chosen" ] && exit 0
     31 
     32     printf '%s' "$chosen" | sed 's/ · /\n/g' | xclip -selection clipboard
     33 }
     34 
     35 case "${1:-pick}" in
     36     daemon) _daemon ;;
     37     pick)   _pick   ;;
     38     *)      printf 'Uso: %s [daemon|pick]\n' "$(basename "$0")" >&2; exit 1 ;;
     39 esac