1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- #!/bin/bash
-
- # launch Uzbl once per each URI in stdin
-
- . "$(ffoom path)" || exit 3
- ffoo import pretty
- ffoo import inigrep
-
- SATURNIN_XURIS_NOTIFICATIONS=true
- SATURNIN_XURIS_LIMIT=100
- SATURNIN_XURIS_ALWAYS_RUN=false
- SATURNIN_XURIS_UNIQ=true
- SATURNIN_XURIS_CHOICE="${SATURNIN_XURIS_CHOICE:-false}"
-
- usage() {
- mkusage "[-u|--uniq] [-a|--always-run] [-l|--limit N] [-c|--choose] [-C|--choice-cmd COMMAND]"
- }
-
- maybe_uniq() {
- $SATURNIN_XURIS_UNIQ || { cat; return; }
- sort | uniq
- }
-
- notify() {
- $SATURNIN_XURIS_NOTIFICATIONS || return 0
- local summary="saturnin-xuris"
- local body="$1"
- notify-send -a saturnin-xuris "$summary" "$body"
- }
-
- open_from() {
- local list="$1"
- local count=$(wc -l <"$list")
-
- test "$count" -gt $SATURNIN_XURIS_LIMIT && {
- notify "too much URIs; giving up: $count > $SATURNIN_XURIS_LIMIT"
- return 1
- }
-
- test "$count" -eq 0 && {
- $SATURNIN_XURIS_ALWAYS_RUN && $SATURNIN_XURIS_BIN &
- return 0
- }
-
- while read uri;
- do
- $SATURNIN_XURIS_BIN "$uri" &
- done < "$list"
- }
-
- while true; do case $1 in
- -a|--always-run) SATURNIN_XURIS_ALWAYS_RUN=true; shift ;;
- -b|--bin) SATURNIN_XURIS_BIN="$2"; shift; shift ;;
- -c|--choose) SATURNIN_XURIS_CHOICE="inigrep -j -p xuris.browsers | saturnin dmenu"; shift ;;
- -C|--choice-cmd) SATURNIN_XURIS_CHOICE="$2"; shift; shift ;;
- -l|--limit) SATURNIN_XURIS_LIMIT=$2; shift; shift ;;
- -u|--uniq) SATURNIN_XURIS_UNIQ=true; shift ;;
- -U|--no-uniq) SATURNIN_XURIS_UNIQ=false; shift ;;
- -*) usage ;;
- "") break ;;
- *) usage ;;
- esac done
-
- debug -v SATURNIN_XURIS_ALWAYS_RUN \
- SATURNIN_XURIS_CHOICE \
- SATURNIN_XURIS_LIMIT \
- SATURNIN_XURIS_UNIQ
-
- SATURNIN_XURIS_URI_LIST=$(mktemp -t saturnin-xuris.XXXXXXXX)
- cat | maybe_uniq | grep . >"$SATURNIN_XURIS_URI_LIST"
-
- # choice of URI has been made; we may try to use dmenu
- bash -n <<<"$SATURNIN_XURIS_CHOICE"
- SATURNIN_XURIS_BIN=$(eval "$SATURNIN_XURIS_CHOICE")
- SATURNIN_XURIS_BIN="${SATURNIN_XURIS_BIN:-$(inigrep -j -1 -p xuris.default_browser)}"
-
- debug -v SATURNIN_XURIS_BIN
-
- open_from "$SATURNIN_XURIS_URI_LIST"
- rm "$SATURNIN_XURIS_URI_LIST"
|