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