#!/bin/sh # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU Affero General Public License as published by the Free # Software Foundation, either version 3 of the License, or (at your option) any # later version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more # details. main() { wrapped="${0##*/}" etcfile="$HOME/.local/etc/wrapper.d/$wrapped.rc" if [ ! -f "$etcfile" ] then printf "No configuration for %s found at %s\n" \ "$wrapped" \ "$etcfile" \ >&2 exit 3 fi . "$etcfile" if [ -z "$WRAPPER_BINS" ] then printf "No WRAPPER_BINS specified in %s\n" "$etcfile" >&2 exit 4 fi for bin in $WRAPPER_BINS do # Check if this entry is sufficient wrapper_check_executable "$bin" || continue # Add a firejail wrapper if desired if [ -n "$FIREJAIL_PROFILE" ] then bin="firejail --profile=""$FIREJAIL_PROFILE"" -- $bin" fi # Run all the things we want to run wrap_before printf "> %s\n" "$bin $WRAPPER_OPTS $@" >&2 $bin $WRAPPER_OPTS "$@" exit=$? wrap_after return $exit done printf "No underlying executable found for %s:\n" "$wrapped" >&2 for bin in $WRAPPER_BINS do printf "\t%s\n" "$bin" >&2 done } wrapper_check_executable() { command -v "$1" > /dev/null && return 0 [ -x "$1" ] && return 0 return 1 } wrap_before() { :; } wrap_after() { :; } main "$@"