86 lines
3.2 KiB
Bash
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
|