aboutsummaryrefslogtreecommitdiffstats
path: root/nlay
diff options
context:
space:
mode:
authorGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-04-23 23:12:54 +0530
committerGravatar Arun Prakash Jana <engineerarun@gmail.com>2017-04-23 23:31:08 +0530
commit00aaee9ff16fba929b8ec629810640b567d78591 (patch)
tree32d80990deda06a66f75ce65e8a68e49f74658fe /nlay
parentff18d580c5e3e877e63e819d87af60128931d17d (diff)
downloadnnn-00aaee9ff16fba929b8ec629810640b567d78591.tar.gz
nlay - a highly customizable file handler
Diffstat (limited to 'nlay')
-rwxr-xr-xnlay119
1 files changed, 119 insertions, 0 deletions
diff --git a/nlay b/nlay
new file mode 100755
index 0000000..fd06307
--- /dev/null
+++ b/nlay
@@ -0,0 +1,119 @@
+#!/bin/bash
+
+# #############################################################################
+# 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.
+# If you change the app for a group you may also need to modify the bg
+# setting. If bg is set the app is detached and started in the background in
+# silent mode.
+#
+# The bg setting 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.
+#
+# 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
+# to stop console based background apps.
+#
+# 3. Assuming you don't to play multiple audio/video files simultaneously,
+# nlay kills any running instances of the audio/video player in bg mode.
+#
+# 4. Keep a personal backup (on GitHub Gist maybe?) of this file if you modify
+# it. nlay is OVERWRITTEN during nnn upgrade.
+#
+# Author: Arun Prakash Jana
+# Email: engineerarun@gmail.com
+# #############################################################################
+
+
+# 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
+
+
+#------------------ AUDIO -------------------
+if [ "$2" == "audio" ]; then
+ app=mpv
+ # To start mpv in a window enable audio_opts
+ #audio_opts="--no-terminal --force-window"
+
+ #bg=">/dev/null 2>&1 &"
+
+ if [ -n "$bg" ]; then
+ killall -9 $app >/dev/null 2>&1
+ fi
+
+ eval $app $audio_opts "\"$1\"" $bg
+ exit 0
+fi
+
+#------------------ VIDEO -------------------
+if [ "$2" == "video" ]; then
+ app=mpv
+ # To start mpv in a window enable video_opts
+ #video_opts="--no-terminal --force-window"
+
+ #bg=">/dev/null 2>&1 &"
+
+ if [ -n "$bg" ]; then
+ killall -9 $app >/dev/null 2>&1
+ fi
+
+ eval $app $video_opts "\"$1\"" $bg
+ exit 0
+fi
+
+#------------------ IMAGE -------------------
+if [ "$2" == "image" ]; then
+ app=viewnior
+ #image_opts=
+
+ bg=">/dev/null 2>&1 &"
+
+ eval $app $image_opts "\"$1\"" $bg
+ exit 0
+fi
+
+#------------------- PDF --------------------
+if [ "$2" == "pdf" ]; then
+ app=zathura
+ #pdf_opts=
+
+ bg=">/dev/null 2>&1 &"
+
+ eval $app $pdf_opts "\"$1\"" $bg
+ exit 0
+fi
+
+#---------------- PLAINTEXT -----------------
+if [ "$2" == "text" ]; then
+ app=vim
+ #txt_opts=
+
+ #bg=">/dev/null 2>&1 &"
+
+ eval $app $txt_opts "\"$1\"" $bg
+ exit 0
+fi