#!/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 <