saturnin-xuris 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. maybe_uniq() {
  15. $SATURNIN_XURIS_UNIQ || { cat; return; }
  16. sort | uniq
  17. }
  18. notify() {
  19. $SATURNIN_XURIS_NOTIFICATIONS || return 0
  20. local summary="saturnin-xuris"
  21. local body="$1"
  22. notify-send -a saturnin-xuris "$summary" "$body"
  23. }
  24. open_from() {
  25. local list="$1"
  26. local count=$(wc -l <"$list")
  27. test "$count" -gt $SATURNIN_XURIS_LIMIT && {
  28. notify "too much URIs; giving up: $count > $SATURNIN_XURIS_LIMIT"
  29. return 1
  30. }
  31. test "$count" -eq 0 && {
  32. $SATURNIN_XURIS_ALWAYS_RUN && $SATURNIN_XURIS_BIN &
  33. return 0
  34. }
  35. while read uri;
  36. do
  37. $SATURNIN_XURIS_BIN "$uri" &
  38. done < "$list"
  39. }
  40. while true; do case $1 in
  41. -a|--always-run) SATURNIN_XURIS_ALWAYS_RUN=true; shift ;;
  42. -b|--bin) SATURNIN_XURIS_BIN="$2"; shift; shift ;;
  43. -c|--choose) SATURNIN_XURIS_CHOICE="inigrep -j -p xuris.browsers | saturnin dmenu"; shift ;;
  44. -C|--choice-cmd) SATURNIN_XURIS_CHOICE="$2"; shift; shift ;;
  45. -l|--limit) SATURNIN_XURIS_LIMIT=$2; shift; shift ;;
  46. -u|--uniq) SATURNIN_XURIS_UNIQ=true; shift ;;
  47. -U|--no-uniq) SATURNIN_XURIS_UNIQ=false; shift ;;
  48. -*) usage ;;
  49. "") break ;;
  50. *) usage ;;
  51. esac done
  52. debug -v SATURNIN_XURIS_ALWAYS_RUN \
  53. SATURNIN_XURIS_CHOICE \
  54. SATURNIN_XURIS_LIMIT \
  55. SATURNIN_XURIS_UNIQ
  56. SATURNIN_XURIS_URI_LIST=$(mktemp -t saturnin-xuris.XXXXXXXX)
  57. cat | maybe_uniq | grep . >"$SATURNIN_XURIS_URI_LIST"
  58. # choice of URI has been made; we may try to use dmenu
  59. bash -n <<<"$SATURNIN_XURIS_CHOICE"
  60. SATURNIN_XURIS_BIN=$(eval "$SATURNIN_XURIS_CHOICE")
  61. SATURNIN_XURIS_BIN="${SATURNIN_XURIS_BIN:-$(inigrep -j -1 -p xuris.default_browser)}"
  62. debug -v SATURNIN_XURIS_BIN
  63. open_from "$SATURNIN_XURIS_URI_LIST"
  64. rm "$SATURNIN_XURIS_URI_LIST"