From 3a98dfb0b0008e45ff4d51cc30c1b749bb162a41 Mon Sep 17 00:00:00 2001 From: N-R-K <79544946+N-R-K@users.noreply.github.com> Date: Fri, 23 Jul 2021 17:36:19 +0600 Subject: [PATCH] xdgdefault plugin: add dmenu support (#1112) * xdgdefault plugin: add dmenu support use fzf if available. otherwise, if available, use dmenu. should be possible to use rofi as well, but i don't use rofi nor do i have it installed for testing. * xdgdefault plugin: add GUI flag * update xdgdefault requirement --- plugins/README.md | 2 +- plugins/xdgdefault | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/plugins/README.md b/plugins/README.md index 804d1108..fea4a3fd 100644 --- a/plugins/README.md +++ b/plugins/README.md @@ -62,7 +62,7 @@ Plugins extend the capabilities of `nnn`. They are _executable_ scripts (or bina | [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 a302b22a..159dbc6c 100755 --- a/plugins/xdgdefault +++ b/plugins/xdgdefault @@ -5,12 +5,21 @@ # 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 @@ app=$(find "$@" -iname '*.desktop' -exec grep '^Name=' {} + \ | 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