mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2025-08-31 11:21:17 +02:00
79 lines
2.5 KiB
Bash
79 lines
2.5 KiB
Bash
#!/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
|