| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | 
							- #!/bin/bash
 - 
 - . $(ffoom path)
 - 
 - ffoo import config
 - ffoo import pretty
 - 
 - STORAGE_DIR="$SATURNIN_CACHE_HOME/clips"
 - 
 - usage() {
 -     usage_is "[ls]"
 -     usage_is "save [-1|-2|-c]"
 -     usage_is "load [-1|-2|-c]"
 - }
 - 
 - clipln() {
 -     #
 -     # Print desired clipboard(s) and \n
 -     #
 -     case $1 in
 -         primary|secondary|clipboard)
 -             xclip -o -selection $1   2>/dev/null
 -             ;;
 -         ALL)
 -             xclip -o -selection primary   2>/dev/null
 -             xclip -o -selection secondary 2>/dev/null
 -             xclip -o -selection clipboard 2>/dev/null
 -             ;;
 -     esac
 -     echo ""
 - }
 - 
 - save_clip() {
 -     local clipname=$1
 -     mkdir -p "$STORAGE_DIR" || die "could not create directory for saving"
 -     local path="$STORAGE_DIR/$(date +%Y%m%d-%H%M%S.clip)"
 -     clipln $clipname > "$path"
 - }
 - 
 - lsclips() {
 -     local clipname=$1
 -     local ft hint name
 -     test -d "$STORAGE_DIR" || return 0
 -     ls "$STORAGE_DIR/"*.clip 2>/dev/null \
 -       | while read name;
 -         do
 -             ft=$(file -b -i $name | cut -d\; -f1)
 -             case $ft in
 -                 text/*)
 -                     hint=$(head -c 80 $name | tr '\n' '↵')
 -                     ;;
 -                 *)
 -                     hint=$(head -c 16 $name | hexdump -C | head -1)
 -                     ;;
 -             esac
 -             echos "$(basename $name) || $ft || $hint"
 -         done
 - }
 - 
 - load_clip() {
 -     local clipname=$1
 -     local name=$(saturnin clip ls | saturnin dmenu | cut -d\   -f 1)
 -     cat $STORAGE_DIR/$name | xclip -i -selection $clipname
 - }
 - 
 - clipname=primary
 - action=list
 - while true; do case "$1" in
 -     save) action=save;          shift   ;;
 -     load) action=load;          shift   ;;
 -     ls)   action=list;          shift   ;;
 -     -1)   clipname=primary;     shift   ;;
 -     -2)   clipname=secondary;   shift   ;;
 -     -c)   clipname=clipboard;   shift   ;;
 -     "")   break;                        ;;
 -     *)    usage;                        ;;
 - esac done
 - 
 - debug "\$@='$@'"
 - debug -v clipname action
 - 
 - case $action in
 -     save) save_clip $clipname ;;
 -     load) load_clip $clipname ;;
 -     list) lsclips ;;
 - esac
 - 
 
 
  |