saturnin-xuris 2.3KB

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