X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=filesystem%2Fusr%2Flocal%2Fbin%2Fabrowser;h=96c969a4c149ca95aadd09383fa56df94e523534;hb=eef2ed83fa84b3ac19533dfe0239cef4c2223143;hp=7892cc7cafcc2838882dd39a62bae1f0084a842a;hpb=b714b0dde29aaf5e44d628c1d723077465e9c488;p=distro-setup diff --git a/filesystem/usr/local/bin/abrowser b/filesystem/usr/local/bin/abrowser index 7892cc7..96c969a 100755 --- a/filesystem/usr/local/bin/abrowser +++ b/filesystem/usr/local/bin/abrowser @@ -20,14 +20,14 @@ # See the License for the specific language governing permissions and # limitations under the License. +# note this is duplicated in i3-abrowser + +if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi +shopt -s inherit_errexit 2>/dev/null ||: # ignore fail in bash < 4.4 +set -eE -o pipefail +trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" exit status: $?, PIPESTATUS: ${PIPESTATUS[*]}" >&2' ERR + -# https://stackoverflow.com/a/2108540 -tmp=:$PATH: -del=/usr/local/bin -tmp=${tmp//:$del:/:} -tmp=${tmp%:} -tmp=${tmp#:} -PATH=$tmp # -allow-downgrade good enough? #rm -f {/p/c/firefox-main-profile,/p/c/firefox-main-profile,/p/c/firefox-vpn2-profile,/mnt/z/firefox-vpn-profile}/compatibility.ini @@ -38,33 +38,20 @@ PATH=$tmp # new tab -tmpf=$(mktemp) -i3-msg -t get_tree | jq -e '.nodes[].nodes[].nodes[].nodes | [.[]] + ( [.[].nodes[]]) | .[] | select(.window_properties.class=="abrowser") | .id' | sort >$tmpf +# remove local/bin from path +# https://stackoverflow.com/a/2108540 +tmp=:$PATH: +del=/usr/local/bin +tmp=${tmp//:$del:/:} +tmp=${tmp%:} +tmp=${tmp#:} +PATH=$tmp # prefer abrowser if type -P abrowser &>/dev/null; then - abrowser "$@" & + b=abrowser else - firefox "$@" & -fi - -# on a fast computer, .5 is too fast, 1 is ok. on x200, 1 is too fast, 2 is ok. -sleep 2 -# debug -#printf "%s\n" "$*" >> /tmp/a -if (( $# == 0 )) && ! i3-msg -t get_tree | jq --stream -r 'select(.[1]|scalars!=null) | "\(.[0]|join(".")): \(.[1]|tojson)"' | grep 'marks.0: "abrowser"$' &>/dev/null; then - # explaining this jq nonsense. when the abrowser window starts, it - # might be in a vertical split container, and then it is nested down - # another level. the best way I could find to look in both levels was - # to get both, then combine them with + (and you have to turn them - # into a single array instead of a list of arrays with [.[]], or else - # it will add the arrays a bunch of times and give several results. - # comm gives us just the new id. - id=$(i3-msg -t get_tree | jq -e '.nodes[].nodes[].nodes[].nodes | [.[]] + ( [.[].nodes[]]) + ( [.[].nodes[].nodes[]]) + ( [.[].nodes[].nodes[].nodes[]]) | .[] | select(.window_properties.class=="abrowser") | .id' | comm -23 - $tmpf | head -n1) - rm -f $tmpf - if [[ $id ]]; then - i3-msg "[con_id=$id] mark abrowser" - fi + b=firefox fi -wait +$b "$@"