plugins/README.md | 2 +- plugins/xdgdefault | 15 ++++++++++++--- diff --git a/plugins/README.md b/plugins/README.md index 804d110850e8a503b71307deb9c425852adecfc4..fea4a3fd3962fb176caacb147b172a9f6c10b78c 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -62,7 +62,7 @@ | [umounttree](umounttree) | Unmount a remote mountpoint from within | sh | fusermount | | [upload](upload) | Upload to Firefox Send or ix.io (text) or file.io (bin) | sh | [ffsend](https://github.com/timvisee/ffsend), curl, jq, tr | | [wallpaper](wall) | Set wallpaper or change colorscheme | sh | nitrogen/pywal | | [x2sel](x2sel) | Copy file list from system clipboard to selection | sh | _see in-file docs_ | -| [xdgdefault](xdgdefault) | Set the default app for the hovered file type | sh | xdg-utils, fzf | +| [xdgdefault](xdgdefault) | Set the default app for the hovered file type | sh | xdg-utils, fzf/dmenu | Note: diff --git a/plugins/xdgdefault b/plugins/xdgdefault index a302b22aab5e1218e7018075f46d99cbcc523a5b..159dbc6c3fb57448f4636e3d1ce08f7fe2ddce57 100755 --- a/plugins/xdgdefault +++ b/plugins/xdgdefault @@ -5,12 +5,21 @@ # type. ${XDG_DATA_DIRS} and ${XDG_DATA_HOME} are set to the recommended # defaults if unset, as specified in XDG Base Directory Specification # - http://specifications.freedesktop.org/basedir-spec/. # -# Dependencies: xdg-utils, fzf +# Dependencies: xdg-utils, fzf or dmenu (GUI) # # Shell: POSIX compliant # Author: lwnctd -if [ -z "$1" ] || ! command -v fzf > /dev/null 2>& 1; then +# set to 1 to enable GUI apps +GUI="${GUI:-0}" + +if [ "$GUI" -ne 0 ] && command -v dmenu >/dev/null 2>& 1; then + menu="dmenu -l 7" +elif command -v fzf > /dev/null 2>& 1; then + menu="fzf -e --tiebreak=begin" +fi + +if [ -z "$1" ] || [ -z "$menu" ] > /dev/null 2>& 1; then exit 1 fi @@ -36,7 +45,7 @@ | sort -u -t ':' -k 1,1 \ | sed -E 's;.+/(.+desktop):Name=(.+);\2:\1;' \ | sort -t ':' -k 1,1 \ | column -t -s ':' -o "$(printf '\t')" \ - | fzf -e --tiebreak=begin \ + | $menu \ | cut -f 2) if [ -n "$app" ]; then