bubblewrap-scripts/profiles/firefox

86 lines
3.2 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
if [ ! -z "$(pgrep --uid "$(id -u)" firefox)" ]
then
echo "firefox already running"
exit
fi
(
exec bwrap \
--ro-bind /usr/bin/sh /usr/bin/sh \
--ro-bind /usr/share /usr/share/ \
--ro-bind /usr/lib /usr/lib \
--ro-bind /usr/lib64 /usr/lib64 \
--symlink /usr/lib64 /lib64 \
--symlink /usr/lib /lib \
--symlink /usr/bin /bin \
--symlink /usr/bin /sbin \
--proc /proc \
--dev /dev \
--dev-bind-try /dev/hidraw0 /dev/hidraw0 \
--dev-bind-try /dev/hidraw1 /dev/hidraw1 \
--dev-bind-try /dev/hidraw2 /dev/hidraw2 \
--dev-bind-try /dev/hidraw3 /dev/hidraw3 \
--dev-bind-try /dev/hidraw4 /dev/hidraw4 \
--dev-bind-try /dev/hidraw5 /dev/hidraw5 \
--dev-bind-try /dev/hidraw6 /dev/hidraw6 \
--dev-bind-try /dev/hidraw7 /dev/hidraw7 \
--dev-bind-try /dev/hidraw8 /dev/hidraw8 \
--dev-bind-try /dev/hidraw9 /dev/hidraw9 \
--dev-bind-try /dev/char /dev/char \
--dev-bind-try /dev/usb /dev/usb \
--dev-bind-try /dev/dri /dev/dri \
--ro-bind-try /sys/bus/usb /sys/bus/usb \
--ro-bind-try /sys/class/hidraw /sys/class/hidraw \
--ro-bind-try /sys/dev /sys/dev \
--ro-bind-try /sys/devices /sys/devices \
--ro-bind /etc/passwd /etc/passwd \
--ro-bind /etc/group /etc/group \
--ro-bind /etc/hostname /etc/hostname \
--ro-bind /etc/hosts /etc/hosts \
--ro-bind /etc/localtime /etc/localtime \
--ro-bind /etc/nsswitch.conf /etc/nsswitch.conf \
--ro-bind-try /etc/resolv.conf /etc/resolv.conf \
--ro-bind-try /etc/xdg /etc/xdg \
--ro-bind-try /etc/gtk-2.0 /etc/gtk-2.0 \
--ro-bind-try /etc/gtk-3.0 /etc/gtk-3.0 \
--ro-bind-try /etc/fonts /etc/fonts \
--ro-bind-try /etc/mime.types /etc/mime.types \
--ro-bind-try /etc/alsa /etc/alsa \
--ro-bind-try /etc/pulse /etc/pulse \
--ro-bind-try /etc/pipewire /etc/pipewire \
--tmpfs /run \
--ro-bind /run/user/"$(id -u)"/"$WAYLAND_DISPLAY" /run/user/"$(id -u)"/"$WAYLAND_DISPLAY" \
--ro-bind-try /run/user/"$(id -u)"/pipewire-0 /run/user/"$(id -u)"/pipewire-0 \
--ro-bind-try /run/user/"$(id -u)"/pulse /run/user/"$(id -u)"/pulse \
--bind-try ~/Downloads ~/Downloads \
--bind-try ~/.mozilla ~/.mozilla \
--bind-try ~/.cache/mozilla ~/.cache/mozilla \
--unsetenv DBUS_SESSION_BUS_ADDRESS \
--setenv MOZ_ENABLE_WAYLAND 1 \
--unshare-all \
--share-net \
--hostname mypc \
--new-session \
--seccomp 10 \
10< /usr/local/bin/seccomp_default_filter.bpf \
/usr/bin/firefox
)
# todo: block abstract sockets
# --ro-bind /usr/share/locale /usr/share/locale \
# --ro-bind /usr/share/X11 /usr/share/X11 \
# --ro-bind /usr/share/gtk-3.0 /usr/share/gtk-3.0 \
# --ro-bind /usr/share/fonts /usr/share/fonts \
# --ro-bind /usr/share/ca-certificates /usr/share/ca-certificates \
# --ro-bind /usr/share/icons /usr/share/icons \
# --ro-bind /usr/share/pixmaps /usr/share/pixmaps \
# --ro-bind /usr/share/mime /usr/share/mime \
# --ro-bind /usr/share/applications /usr/share/applications \
# --ro-bind /usr/share/glib-2.0 /usr/share/glib-2.0 \
# --bind /var/cache/fontconfig