saturnin-xuris 2.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #!/bin/bash
  2. # launch Uzbl once per each URI in stdin
  3. . "$(ffoom path)" || exit 3
  4. ffoo import pretty
  5. ffoo import inigrep
  6. SATURNIN_XURIS_NOTIFICATIONS=true
  7. SATURNIN_XURIS_LIMIT=100
  8. SATURNIN_XURIS_ALWAYS_RUN=false
  9. SATURNIN_XURIS_UNIQ=true
  10. SATURNIN_XURIS_CHOICE="${SATURNIN_XURIS_CHOICE:-false}"
  11. usage() {
  12. mkusage "[-u|--uniq] [-a|--always-run] [-l|--limit N] [-c|--choose] [-C|--choice-cmd COMMAND]"
  13. }
  14. enum_bins() {
  15. echo uzbl-browser
  16. echo vimb
  17. echo firefox
  18. echo opera-rh
  19. echo opera-beta
  20. echo opera
  21. echo wget
  22. }
  23. maybe_uniq() {
  24. $SATURNIN_XURIS_UNIQ || { cat; return; }
  25. sort | uniq
  26. }
  27. notify() {
  28. $SATURNIN_XURIS_NOTIFICATIONS || return 0
  29. local summary="saturnin-xuris"
  30. local body="$1"
  31. notify-send -a saturnin-xuris "$summary" "$body"
  32. }
  33. open_from() {
  34. local list="$1"
  35. local count=$(wc -l <"$list")
  36. test "$count" -gt $SATURNIN_XURIS_LIMIT && {
  37. notify "too much URIs; giving up: $count > $SATURNIN_XURIS_LIMIT"
  38. return 1
  39. }
  40. test "$count" -eq 0 && {
  41. $SATURNIN_XURIS_ALWAYS_RUN && $SATURNIN_XURIS_BIN &
  42. return 0
  43. }
  44. while read uri;
  45. do
  46. $SATURNIN_XURIS_BIN "$uri" &
  47. done < "$list"
  48. }
  49. while true; do case $1 in
  50. -a|--always-run) SATURNIN_XURIS_ALWAYS_RUN=true; shift ;;
  51. -b|--bin) SATURNIN_XURIS_BIN="$2"; shift; shift ;;
  52. -c|--choose) SATURNIN_XURIS_CHOICE="enum_bins | saturnin dmenu"; shift ;;
  53. -C|--choice-cmd) SATURNIN_XURIS_CHOICE="$2"; shift; shift ;;
  54. -l|--limit) SATURNIN_XURIS_LIMIT=$2; shift; shift ;;
  55. -u|--uniq) SATURNIN_XURIS_UNIQ=true; shift ;;
  56. -U|--no-uniq) SATURNIN_XURIS_UNIQ=false; shift ;;
  57. -*) usage ;;
  58. "") break ;;
  59. *) usage ;;
  60. esac done
  61. debug -v SATURNIN_XURIS_ALWAYS_RUN \
  62. SATURNIN_XURIS_CHOICE \
  63. SATURNIN_XURIS_LIMIT \
  64. SATURNIN_XURIS_UNIQ
  65. SATURNIN_XURIS_URI_LIST=$(mktemp -t saturnin-xuris.XXXXXXXX)
  66. cat | maybe_uniq | grep . >"$SATURNIN_XURIS_URI_LIST"
  67. # choice of URI has been made; we may try to use dmenu
  68. bash -n <<<"$SATURNIN_XURIS_CHOICE"
  69. SATURNIN_XURIS_BIN=$(eval "$SATURNIN_XURIS_CHOICE")
  70. SATURNIN_XURIS_BIN="${SATURNIN_XURIS_BIN:-$(inigrep -j -1 -p xuris.browser)}"
  71. debug -v SATURNIN_XURIS_BIN
  72. open_from "$SATURNIN_XURIS_URI_LIST"
  73. rm "$SATURNIN_XURIS_URI_LIST"