#!/bin/sh #{{{ printhelp printhelp () { printf "ffc: firefox menu interface.\n" printf " -u URL ) pass URL to browser\n" printf " -d ARGS ) pass ARGS to menu command\n" exit } #}}} #{{{ getopts while getopts "hd:u:" o; do case "${o}" in d) DMENU_ARGS="$OPTARG" ;; u) URL="$OPTARG" ;; *) printhelp ;; esac done #}}} #{{{ Check display server if -w or -x not provided if [ -n "$WAYLAND_DISPLAY" ]; then DMENU="tofi" DEFARGS="-c $HOME/.config/tofi/themes/dmenu_vertical --prompt-text" elif [ -n "$DISPLAY" ]; then DMENU="dmenu" DEFARGS="-l 15 -p" else print "Can't tell if Wayland or X; what gives?\n" exit 1 fi #}}} #{{{ Native Profiles if [ -f ~/.mozilla/firefox/profiles.ini ]; then NATIVE_PROFILES=`grep 'Path=' ~/.mozilla/firefox/profiles.ini | cut -d'.' -f2` else unset NATIVE_PROFILES fi #}}} #{{{ Flatpak Profiles if [ -f ~/.var/app/org.mozilla.firefox/.mozilla/firefox/profiles.ini ]; then FLATPAK_PROFILES=`grep 'Path=' ~/.var/app/org.mozilla.firefox/.mozilla/firefox/profiles.ini | cut -d'.' -f2 | sed 's/$/ F/g'` else unset FLATPAK_PROFILES fi #}}} #{{{ Add Profiles if [ -n "$NATIVE_PROFILES" -a -n "$FLATPAK_PROFILES" ]; then INT="\n" fi PROFILES="$NATIVE_PROFILES$INT$FLATPAK_PROFILES" #}}} #{{{ Choose Profiles CHOSEN=`printf "$PROFILES" | $DMENU $DEFARGS "firefox" $DMENU_ARGS` [ -z "$CHOSEN" ] && exit 2 if `echo "$CHOSEN" | grep -qE ' F$'`; then exec flatpak run org.mozilla.Firefox -P `echo "$CHOSEN" | sed 's/ F$//'` $URL else exec firefox -P "$CHOSEN" $URL fi #}}}