aboutsummaryrefslogtreecommitdiffstats
path: root/misc/nlay/nlay
blob: b3d587fbe43d910840437baa84109a6b5cd6a727 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
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-2019 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 &")

#------------------ LOCKER ------------------
elif [ "$2" == "locker" ]; 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