diff options
Diffstat (limited to 'testing/nnn/nlay')
-rw-r--r-- | testing/nnn/nlay | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/testing/nnn/nlay b/testing/nnn/nlay new file mode 100644 index 0000000000..3d6297f192 --- /dev/null +++ b/testing/nnn/nlay @@ -0,0 +1,78 @@ +#!/bin/sh + +# ############################################################################# +# nlay: a customizable script to play files in different apps by file type +# +# usage: nlay file type +# +# MUST READ: +# +# 1. Feel free to change the default apps to your favourite ones. +# Simple use 'run_fg' or 'run_bg' to run the specified app with the given +# options in foreground or background respectively. Variable '$1' contains +# path of the file to open. If run_bg is used the app is detached and +# started in the background in silent mode. If the app is not installed +# (i.e. is not on your PATH), it is silently skipped and the script tries +# next 'run_bg' or 'run_fg'. +# +# The 'run_bg' vs. 'run_fg' depends on personal preference and type of app, +# e.g., I would start vim (CLI) in the foreground but Sublime Text (GUI) in +# the background. +# +# 2. Detached apps are not killed when nnn exits. Use kill(1) or killall(1) to +# to stop console based background apps. +# +# 3. nlay is OVERWRITTEN during nnn upgrade. You can store your custom nlay in a +# location other than the default and have an alias with nnn option '-p' to +# invoke it. Remember it might break or lack new capabilities added to nlay +# in future releases. Check the file diff once in a while. +# +# Please note that this is not the original nlay script, but Alpine version +# rewritten to be compatible with any POSIX compliant shell, not just Bash/ZSH. +# +# ############################################################################# + +# Runs the command in foreground if exists. +run_fg() { + which "$1" >/dev/null && "$@" + exit 0 +} + +# Runs the command in background if exists. +run_bg() { + which "$1" >/dev/null \ + && "$@" >/dev/null 2>&1 & \ + && exit 0 +} + +# Enable the lines below to handle file by extension +# This is provided for using a custom player for specific files +# $ext holds the extension +<<ENABLE_FILE_TYPE_HANDLING +fname=$(basename "$1") +case "$fname" in + *.*) ;; + *) exit 1;; +esac + +ext="${fname##*.}" +[ -n "$ext" ] || exit 1 +ext=$(printf %s "$ext" | tr '[A-Z]' '[a-z]') + +# handle this extension and exit +ENABLE_FILE_TYPE_HANDLING + + +#------------ PLAINTEXT (UNUSED) ------------ +if [ "$2" = "text" ]; then + run_fg vim "$1" + +#----------------- SEARCH ------------------- +elif [ "$2" = "search" ]; then + run_bg gnome-search-tool --path "$1" + run_bg catfish --path "$1" + +#--------------- SCREENSAVER ---------------- +elif [ "$2" = "screensaver" ]; then + run_fg vlock +fi |