From 4d6fb85e0cdf6e327e6d49b99f84450061b695ce Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Sat, 12 Feb 2022 16:34:56 +0100 Subject: Make prettier wrapper while switching to librewolf --- .local/bin/firefox | 48 +---------------------------------- .local/etc/wrapper.d/firefox.rc | 10 ++++++++ .local/share/wrapper.sh | 56 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+), 47 deletions(-) mode change 100755 => 120000 .local/bin/firefox create mode 100644 .local/etc/wrapper.d/firefox.rc create mode 100755 .local/share/wrapper.sh (limited to '.local') diff --git a/.local/bin/firefox b/.local/bin/firefox deleted file mode 100755 index dde1929..0000000 --- a/.local/bin/firefox +++ /dev/null @@ -1,47 +0,0 @@ -#!/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. - -readonly BINS=" - /usr/bin/firefox - /usr/bin/firefox-bin -" - -main() -{ - require_exe "firejail" - - for bin in $BINS - do - [ -x "$bin" ] || continue - - exec firejail --profile="$HOME/.local/etc/firejail/firefox.profile" -- \ - "$bin" --profile "$HOME/.config/firefox" "$@" - done - - printf "No underlying executable found for %s:\n" "${0##*/}" >&2 - - for bin in $BINS - do - printf "\t%s\n" "$bin" >&2 - done -} - -require_exe() -{ - if ! command -v "$1" > /dev/null 2>&1 - then - printf "Missing required executable %s\n" "$1" - exit 3 - fi -} - -main "$@" diff --git a/.local/bin/firefox b/.local/bin/firefox new file mode 120000 index 0000000..3da827c --- /dev/null +++ b/.local/bin/firefox @@ -0,0 +1 @@ +../share/wrapper.sh \ No newline at end of file diff --git a/.local/etc/wrapper.d/firefox.rc b/.local/etc/wrapper.d/firefox.rc new file mode 100644 index 0000000..fb3529b --- /dev/null +++ b/.local/etc/wrapper.d/firefox.rc @@ -0,0 +1,10 @@ +#!/bin/sh + +WRAPPER_BINS=" + /usr/bin/librewolf + /usr/bin/librewolf-bin +" + +WRAPPER_OPTS="--profile $HOME/.config/firefox" + +FIREJAIL_PROFILE="$HOME/.local/etc/firejail/firefox.profile" diff --git a/.local/share/wrapper.sh b/.local/share/wrapper.sh new file mode 100755 index 0000000..7d35360 --- /dev/null +++ b/.local/share/wrapper.sh @@ -0,0 +1,56 @@ +#!/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 + [ -x "$bin" ] || continue + + if [ -n "$FIREJAIL_PROFILE" ] + then + exec firejail --profile="$FIREJAIL_PROFILE" -- \ + "$bin" $WRAPPER_OPTS "$@" + fi + + exec "$bin" $WRAPPER_OPTS "$@" + done + + printf "No underlying executable found for %s:\n" "$wrapped" >&2 + for bin in $WRAPPER_BINS + do + printf "\t%s\n" "$bin" >&2 + done +} + +main "$@" -- cgit v1.1