saturnin-uris 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/bash
  2. . "$(ffoom path)" || exit 3
  3. ffoo import inigrep
  4. ffoo import pretty
  5. ffoo import saturnin_urimagic
  6. saturnin_urimagic__inipfx0="uris.bookmark"
  7. saturnin_urimagic__inipfxN="uris.query"
  8. #
  9. # On clipboards:
  10. #
  11. # * primary is for selection/middle mouse click (X power users)
  12. # * clipboard is for Win/Mac-like explicit Copy/Cut/Paste
  13. # * nobody uses secondary
  14. #
  15. # see http://standards.freedesktop.org/clipboards-spec/clipboards-latest.txt
  16. # for more details
  17. #
  18. usage() {
  19. mkusage "word..." \
  20. "-f file" \
  21. "-1|-2|-c|-C"
  22. }
  23. clipln() {
  24. #
  25. # Print primary clipboard and \n
  26. #
  27. case $1 in
  28. pri) s=primary ;;
  29. sec) s=secondary ;;
  30. clp) s=clipboard ;;
  31. esac
  32. xclip -o -selection $s 2>/dev/null
  33. echo ""
  34. }
  35. src=args
  36. while true; do case "$1" in
  37. -f) src=file; file=$2; shift 2 || usage ;;
  38. -1) src=xpri; shift ;;
  39. -2) src=xsec; shift ;;
  40. -c) src=xclp; shift ;;
  41. -C) src=xall; shift ;;
  42. -*) usage ;;
  43. *) break ;;
  44. esac done
  45. debug "\$*='$*'"
  46. debug -v src
  47. case "$src" in
  48. args) uri="$(echo "$@" | saturnin_urimagic__scan)" ;;
  49. file) uri="$(cat "$file" | saturnin_urimagic__scan)" ;;
  50. xpri) uri="$(clipln pri | saturnin_urimagic__scan)" ;;
  51. xsec) uri="$(clipln sec | saturnin_urimagic__scan)" ;;
  52. xclp) uri="$(clipln clp | saturnin_urimagic__scan)" ;;
  53. xall) uri="$(clipln pri | saturnin_urimagic__scan)"
  54. uri="$(clipln sec | saturnin_urimagic__scan)"
  55. uri="$(clipln clp | saturnin_urimagic__scan)"
  56. ;;
  57. esac
  58. debug -v uri
  59. test -z "$uri" && uri="$(inigrep -p uris.bookmark.default)"
  60. echo "$uri"