Guest User

bwrap waterfox

a guest
Oct 6th, 2026
27
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.67 KB | None | 0 0
  1. #!/bin/bash
  2. set -euo pipefail
  3.  
  4. # ============================================================
  5. # WATERFOX SANDBOX - DEVUAN XFCE
  6. # KeePassXC: MANUAL START ONLY
  7. # ============================================================
  8.  
  9. PROFILE="$HOME/.waterfox"
  10. CACHE="$HOME/.cache/waterfox"
  11. DOWNLOADS="$HOME/Downloads"
  12. XAUTH="${XAUTHORITY:-$HOME/.Xauthority}"
  13.  
  14. USER_ID="$(id -u)"
  15. GROUP_ID="$(id -g)"
  16. RUNTIME="/run/user/$USER_ID"
  17.  
  18. FILTERED_BUS="$RUNTIME/waterfox-filtered-bus"
  19.  
  20. KPXC_SOCK="$RUNTIME/app/org.keepassxc.KeePassXC/org.keepassxc.KeePassXC.BrowserServer"
  21. PULSE_SOCKET="$RUNTIME/pulse/native"
  22.  
  23. # ============================================================
  24. # PREPARE DIRECTORIES
  25. # ============================================================
  26.  
  27. mkdir -p "$PROFILE"
  28. mkdir -p "$CACHE"
  29. mkdir -p "$DOWNLOADS"
  30. mkdir -p "$HOME/.cache/fontconfig"
  31.  
  32. # ============================================================
  33. # CHECK BASIC REQUIREMENTS
  34. # ============================================================
  35.  
  36. if ! command -v bwrap >/dev/null 2>&1; then
  37. echo "ERROR: bwrap tidak ditemukan."
  38. exit 1
  39. fi
  40.  
  41. if ! command -v xdg-dbus-proxy >/dev/null 2>&1; then
  42. echo "ERROR: xdg-dbus-proxy tidak ditemukan."
  43. exit 1
  44. fi
  45.  
  46. if ! command -v waterfox >/dev/null 2>&1; then
  47. echo "ERROR: waterfox tidak ditemukan."
  48. exit 1
  49. fi
  50.  
  51. # ============================================================
  52. # KEEPASSXC
  53. # MANUAL START ONLY
  54. # ============================================================
  55.  
  56. if pgrep -x keepassxc >/dev/null 2>&1; then
  57.  
  58. echo "[OK] KeePassXC sedang berjalan."
  59.  
  60. if [ -S "$KPXC_SOCK" ]; then
  61. echo "[OK] KeePassXC Browser socket tersedia."
  62. else
  63. echo "[INFO] KeePassXC berjalan."
  64. echo "[INFO] Browser socket belum tersedia."
  65. echo "[INFO] Pastikan Browser Integration aktif jika diperlukan."
  66. fi
  67.  
  68. else
  69.  
  70. echo "[INFO] KeePassXC tidak sedang berjalan."
  71. echo "[INFO] KeePassXC harus dijalankan secara manual jika diperlukan."
  72.  
  73. fi
  74.  
  75. # ============================================================
  76. # MACHINE ID
  77. # ============================================================
  78.  
  79. MACHINE_ID=""
  80.  
  81. if [ -s /etc/machine-id ]; then
  82. MACHINE_ID="/etc/machine-id"
  83. elif [ -s /var/lib/dbus/machine-id ]; then
  84. MACHINE_ID="/var/lib/dbus/machine-id"
  85. fi
  86.  
  87. if [ -n "$MACHINE_ID" ]; then
  88. echo "[OK] Machine ID ditemukan: $MACHINE_ID"
  89. else
  90. echo "[INFO] Machine ID tidak ditemukan."
  91. fi
  92.  
  93. # ============================================================
  94. # CLEAN OLD D-BUS PROXY
  95. # ============================================================
  96.  
  97. rm -f "$FILTERED_BUS"
  98.  
  99. # ============================================================
  100. # D-BUS SESSION ADDRESS
  101. # ============================================================
  102.  
  103. DBUS_ADDRESS="${DBUS_SESSION_BUS_ADDRESS:-unix:path=$RUNTIME/bus}"
  104.  
  105. # ============================================================
  106. # START FILTERED D-BUS PROXY
  107. # ============================================================
  108.  
  109. xdg-dbus-proxy \
  110. "$DBUS_ADDRESS" \
  111. "$FILTERED_BUS" \
  112. --filter \
  113. --see=org.freedesktop.DBus \
  114. --talk=org.freedesktop.DBus \
  115. --see=org.freedesktop.Notifications \
  116. --talk=org.freedesktop.Notifications &
  117.  
  118. PROXY_PID=$!
  119.  
  120. # ============================================================
  121. # CLEANUP
  122. # ============================================================
  123.  
  124. cleanup() {
  125. if kill -0 "$PROXY_PID" 2>/dev/null; then
  126. kill "$PROXY_PID" 2>/dev/null || true
  127. fi
  128.  
  129. rm -f "$FILTERED_BUS"
  130. }
  131.  
  132. trap cleanup EXIT INT TERM
  133.  
  134. # ============================================================
  135. # WAIT FOR D-BUS PROXY
  136. # ============================================================
  137.  
  138. for i in $(seq 1 30); do
  139.  
  140. if [ -S "$FILTERED_BUS" ]; then
  141. break
  142. fi
  143.  
  144. sleep 0.1
  145.  
  146. done
  147.  
  148. if [ ! -S "$FILTERED_BUS" ]; then
  149.  
  150. echo
  151. echo "ERROR: Failed to create filtered D-Bus socket."
  152. echo
  153.  
  154. exit 1
  155.  
  156. fi
  157.  
  158. echo "[OK] Filtered D-Bus ready."
  159.  
  160. # ============================================================
  161. # BUILD BWRAP COMMAND
  162. # ============================================================
  163.  
  164. BWRAP_ARGS=(
  165.  
  166. # --------------------------------------------------------
  167. # PROCESS / PRIVILEGE
  168. # --------------------------------------------------------
  169.  
  170. --die-with-parent
  171. --new-session
  172.  
  173. --cap-drop ALL
  174.  
  175. --unshare-user-try
  176. --unshare-pid
  177. --unshare-uts
  178. --unshare-cgroup-try
  179. --unshare-ipc
  180.  
  181. # --------------------------------------------------------
  182. # SYSTEM
  183. # --------------------------------------------------------
  184.  
  185. --ro-bind /usr /usr
  186. --ro-bind /bin /bin
  187. --ro-bind /sbin /sbin
  188. --ro-bind /lib /lib
  189.  
  190. --ro-bind-try /lib64 /lib64
  191. --ro-bind-try /opt /opt
  192.  
  193. # --------------------------------------------------------
  194. # /etc
  195. # --------------------------------------------------------
  196.  
  197. --dir /etc
  198.  
  199. --ro-bind /etc/resolv.conf /etc/resolv.conf
  200.  
  201. --ro-bind-try /etc/hosts /etc/hosts
  202. --ro-bind-try /etc/nsswitch.conf /etc/nsswitch.conf
  203.  
  204. --ro-bind-try /etc/ssl /etc/ssl
  205. --ro-bind-try /etc/ca-certificates /etc/ca-certificates
  206. --ro-bind-try /etc/pki /etc/pki
  207.  
  208. --ro-bind-try /etc/fonts /etc/fonts
  209. --ro-bind-try /etc/fontconfig /etc/fontconfig
  210.  
  211. --ro-bind-try /etc/asound.conf /etc/asound.conf
  212. --ro-bind-try /etc/localtime /etc/localtime
  213.  
  214. --ro-bind-try /etc/xdg /etc/xdg
  215.  
  216. --ro-bind-try /etc/passwd /etc/passwd
  217. --ro-bind-try /etc/group /etc/group
  218.  
  219. # --------------------------------------------------------
  220. # PROC
  221. # --------------------------------------------------------
  222.  
  223. --proc /proc
  224.  
  225. # --------------------------------------------------------
  226. # DEVICES
  227. # --------------------------------------------------------
  228.  
  229. --dev /dev
  230.  
  231. --dev-bind-try /dev/dri /dev/dri
  232.  
  233. # --------------------------------------------------------
  234. # SHARED MEMORY
  235. # --------------------------------------------------------
  236.  
  237. --tmpfs /dev/shm
  238.  
  239. # --------------------------------------------------------
  240. # SYS
  241. # --------------------------------------------------------
  242.  
  243. --ro-bind-try /sys/dev/char /sys/dev/char
  244. --ro-bind-try /sys/devices /sys/devices
  245.  
  246. # --------------------------------------------------------
  247. # TEMP
  248. # --------------------------------------------------------
  249.  
  250. --tmpfs /tmp
  251.  
  252. # --------------------------------------------------------
  253. # /run
  254. # --------------------------------------------------------
  255.  
  256. --tmpfs /run
  257.  
  258. --dir /run/user
  259. --dir /run/user/$USER_ID
  260.  
  261. --chmod 0700 /run/user/$USER_ID
  262.  
  263. # --------------------------------------------------------
  264. # APP RUNTIME DIRECTORIES
  265. # --------------------------------------------------------
  266.  
  267. --dir /run/user/$USER_ID/app
  268.  
  269. --dir /run/user/$USER_ID/app/org.keepassxc.KeePassXC
  270.  
  271. --dir /run/user/$USER_ID/pulse
  272.  
  273. # --------------------------------------------------------
  274. # FILTERED D-BUS
  275. # --------------------------------------------------------
  276.  
  277. --bind "$FILTERED_BUS" "$RUNTIME/bus"
  278.  
  279. # --------------------------------------------------------
  280. # PULSEAUDIO
  281. # --------------------------------------------------------
  282.  
  283. --bind-try "$PULSE_SOCKET" "$PULSE_SOCKET"
  284.  
  285. # --------------------------------------------------------
  286. # KEEPASSXC BROWSER SOCKET
  287. #
  288. # HANYA socket ini yang diberikan kepada Waterfox.
  289. # KeePassXC sendiri TIDAK dijalankan oleh sandbox.
  290. # --------------------------------------------------------
  291.  
  292. --bind-try "$KPXC_SOCK" "$KPXC_SOCK"
  293.  
  294. # --------------------------------------------------------
  295. # /var
  296. # --------------------------------------------------------
  297.  
  298. --tmpfs /var
  299.  
  300. --dir /var/tmp
  301. --dir /var/lib
  302. --dir /var/lib/dbus
  303. )
  304.  
  305. # ============================================================
  306. # MACHINE ID
  307. # ============================================================
  308.  
  309. if [ -n "$MACHINE_ID" ]; then
  310.  
  311. BWRAP_ARGS+=(
  312. --ro-bind "$MACHINE_ID" /var/lib/dbus/machine-id
  313. )
  314.  
  315. fi
  316.  
  317. # ============================================================
  318. # HOME
  319. # ============================================================
  320.  
  321. BWRAP_ARGS+=(
  322.  
  323. --dir /home
  324.  
  325. --dir /home/devuan
  326.  
  327. # --------------------------------------------------------
  328. # WATERFOX PROFILE
  329. # --------------------------------------------------------
  330.  
  331. --bind "$PROFILE" /home/devuan/.waterfox
  332.  
  333. # --------------------------------------------------------
  334. # WATERFOX CACHE
  335. # --------------------------------------------------------
  336.  
  337. --bind "$CACHE" /home/devuan/.cache/waterfox
  338.  
  339. # --------------------------------------------------------
  340. # DOWNLOADS
  341. # --------------------------------------------------------
  342.  
  343. --bind "$DOWNLOADS" /home/devuan/Downloads
  344.  
  345. # --------------------------------------------------------
  346. # FONT CACHE
  347. # --------------------------------------------------------
  348.  
  349. --bind "$HOME/.cache/fontconfig" /home/devuan/.cache/fontconfig
  350.  
  351. # --------------------------------------------------------
  352. # X11 AUTH
  353. # --------------------------------------------------------
  354.  
  355. --ro-bind-try "$XAUTH" /home/devuan/.Xauthority
  356.  
  357. # ========================================================
  358. # ENVIRONMENT
  359. # ========================================================
  360.  
  361. --setenv HOME /home/devuan
  362.  
  363. --setenv USER devuan
  364.  
  365. --setenv LOGNAME devuan
  366.  
  367. --setenv DISPLAY "$DISPLAY"
  368.  
  369. --setenv XAUTHORITY /home/devuan/.Xauthority
  370.  
  371. --setenv XDG_RUNTIME_DIR "$RUNTIME"
  372.  
  373. --setenv DBUS_SESSION_BUS_ADDRESS "unix:path=$RUNTIME/bus"
  374.  
  375. --setenv NO_AT_BRIDGE 1
  376.  
  377. # --------------------------------------------------------
  378. # X11 ONLY
  379. # --------------------------------------------------------
  380.  
  381. --setenv MOZ_ENABLE_WAYLAND 0
  382.  
  383. --setenv GDK_BACKEND x11
  384.  
  385. # --------------------------------------------------------
  386. # GTK
  387. # --------------------------------------------------------
  388.  
  389. --setenv GSETTINGS_BACKEND memory
  390.  
  391. # --------------------------------------------------------
  392. # AUDIO
  393. # --------------------------------------------------------
  394.  
  395. --setenv PULSE_SERVER "unix:$RUNTIME/pulse/native"
  396. )
  397.  
  398. # ============================================================
  399. # START WATERFOX
  400. # ============================================================
  401.  
  402. echo
  403. echo "[+] Starting Waterfox..."
  404. echo
  405.  
  406. exec bwrap \
  407. "${BWRAP_ARGS[@]}" \
  408. waterfox "$@"
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment