aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/nlay
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2018-11-10 12:06:21 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2018-11-10 12:06:21 +0530
commit497911e999d34fbb34a6abdb045afd3e6a6c2d1f (patch)
treef5d292471d2b29a3e32a4fb562ea72827ab2b1e2 /scripts/nlay
parenta095ff485db66f8a98d27a0bee49d6b5118adbb8 (diff)
downloadnnn-497911e999d34fbb34a6abdb045afd3e6a6c2d1f.tar.gz
Retire nlay
Diffstat (limited to 'scripts/nlay')
-rwxr-xr-xscripts/nlay/nlay105
-rw-r--r--scripts/nlay/nlay.137
2 files changed, 142 insertions, 0 deletions
diff --git a/scripts/nlay/nlay b/scripts/nlay/nlay
new file mode 100755
index 0000000..1930379
--- /dev/null
+++ b/scripts/nlay/nlay
@@ -0,0 +1,105 @@
+#!/usr/bin/env bash
+
+# #############################################################################
+# nlay: a customizable script to play files in different apps by file type
+#
+# usage: nlay file/path type/action
+#
+# MUST READ:
+#
+# 1. Feel free to change the default apps to your favourite ones.
+# If you change the app for a group you may also need to modify the opts and
+# bg settings. If bg is set the app is detached and started in the background
+# in silent mode.
+#
+# The bg setting depends on personal preferences and type of utility, e.g., I
+# would start vi (CLI) in the foreground but Sublime Text (GUI) in background.
+#
+# Check (and TOGGLE as you wish) the default bg settings.
+#
+# 2. Detached apps are not killed when nnn exits. Use kill(1) or killall(1) 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.
+#
+# Author: Arun Prakash Jana
+# Email: engineerarun@gmail.com
+# Homepage: https://github.com/jarun/nnn
+# Copyright © 2016-2018 Arun Prakash Jana
+# #############################################################################
+
+
+# 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")
+if [[ $fname != *"."* ]]; then
+ exit 1
+fi
+
+ext="${fname##*.}"
+if [ -z "$ext" ]; then
+ exit 1
+fi
+
+# bash 4.0 way to switch to lowercase
+ext="${ext,,}"
+
+# handle this extension and exit
+ENABLE_FILE_TYPE_HANDLING
+
+
+#------------ PLAINTEXT (UNUSED) ------------
+if [ "$2" == "text" ]; then
+ app=("vi")
+
+ opts=("")
+
+ bg=("")
+
+#----------------- SEARCH -------------------
+elif [ "$2" == "search" ]; then
+ app=("gnome-search-tool"
+ "catfish")
+
+ opts=("--path"
+ "--path")
+
+ bg=(">/dev/null 2>&1 &"
+ ">/dev/null 2>&1 &")
+
+#--------------- SCREENSAVER ----------------
+elif [ "$2" == "screensaver" ]; then
+ app=("vlock"
+ "bashlock"
+ "lock")
+
+for index in ${!app[@]}
+do
+ type -P ${app[$index]} &>/dev/null &&
+ eval ${app[$index]} &&
+ exit 0
+done
+
+#------------------ SCRIPT ------------------
+elif [ "$2" == "script" ]; then
+ # add commands or a custom script below
+
+ # echo "my commands or custom script"
+ # sh "path_to_script.sh"
+ $SHELL "$1"
+
+ exit 0
+fi
+
+#----------------- RUN APP ------------------
+for index in ${!app[@]}
+do
+ type -P ${app[$index]} &>/dev/null &&
+ eval ${app[$index]} ${opts[$index]} "\"$1\"" ${bg[$index]} &&
+ break
+done
diff --git a/scripts/nlay/nlay.1 b/scripts/nlay/nlay.1
new file mode 100644
index 0000000..9df0e01
--- /dev/null
+++ b/scripts/nlay/nlay.1
@@ -0,0 +1,37 @@
+.Dd Mar 14, 2018
+.Dt NLAY 1
+.Os
+.Sh NAME
+.Nm nlay
+.Nd a bash script to play files in different apps by file type or run some actions.
+.Sh SYNOPSIS
+.Nm
+file/path type/action
+.Sh DESCRIPTION
+.Nm
+is shipped with \fInnn\fR to deliver a level of flexibility to users to choose their own apps when running some actions, run some commands or custom scripts. It has provisions to handle text files too. However, the capability is not used in the latest releases. Now
+.Nm
+is invoked to run a desktop search (\fIgnome-search-tool\fR or \fIcatfish\fR) or screen locker (\fIvlock\fR or \fIbashlock\fR or \fIlock\fR) utility. However,
+.Nm
+can run independently and can be highly customized for personal usage.
+.Pp
+.Nm
+supports the following options:
+.Pp
+"file/path"
+ The first argument can be the file or path to pass as an argument to the app. It can also be an empty string e.g., while locking the terminal.
+.Pp
+"type/action"
+ This can be any of the strings \fItext\fR, \fIsearch\fR, \fIscript\fR or \fI screensaver\fR.
+.Sh USAGE
+.Pp
+.Bd -literal
+$ nlay info.txt text
+$ nlay . search
+$ nlay ~/script.sh script
+$ nlay "" screensaver
+.Ed
+.Sh AUTHOR
+.An Arun Prakash Jana Aq Mt engineerarun@gmail.com .
+.Sh HOME
+.Em https://github.com/jarun/nnn