diff --git a/.docker/waterfox/Dockerfile b/.docker/waterfox/Dockerfile
new file mode 100644
index 00000000..49f4c66b
--- /dev/null
+++ b/.docker/waterfox/Dockerfile
@@ -0,0 +1,35 @@
+ARG BASE_IMAGE=m1k1o/neko:base
+FROM $BASE_IMAGE
+
+ARG SRC_URL="https://cdn1.waterfox.net/waterfox/releases/latest/linux"
+
+#
+# install waterfox
+RUN set -eux; apt-get update; \
+ apt-get install -y --no-install-recommends openbox \
+ xz-utils bzip2 libgtk-3-0 libdbus-glib-1-2; \
+ #
+ # fetch latest release
+ wget -O /tmp/waterfox-setup.tar.bz2 "${SRC_URL}"; \
+ mkdir /usr/lib/waterfox; \
+ tar -xjf /tmp/waterfox-setup.tar.bz2 -C /usr/lib; \
+ rm -f /tmp/waterfox-setup.tar.bz2; \
+ ln -s /usr/lib/waterfox/waterfox /usr/bin/waterfox; \
+ #
+ # create a profile directory
+ mkdir -p /home/neko/.waterfox/profile.default/extensions; \
+ chown -R neko:neko /home/neko/.waterfox/profile.default; \
+ #
+ # clean up
+ apt-get --purge autoremove -y xz-utils bzip2; \
+ apt-get clean -y; \
+ rm -rf /var/lib/apt/lists/* /var/cache/apt/*
+
+#
+# copy configuation files
+COPY supervisord.conf /etc/neko/supervisord/waterfox.conf
+COPY neko.js /usr/lib/waterfox/mozilla.cfg
+COPY autoconfig.js /usr/lib/waterfox/defaults/pref/autoconfig.js
+COPY policies.json /usr/lib/waterfox/distribution/policies.json
+COPY --chown=neko profiles.ini /home/neko/.waterfox/profiles.ini
+COPY openbox.xml /etc/neko/openbox.xml
diff --git a/.docker/waterfox/autoconfig.js b/.docker/waterfox/autoconfig.js
new file mode 100644
index 00000000..87d65796
--- /dev/null
+++ b/.docker/waterfox/autoconfig.js
@@ -0,0 +1,2 @@
+pref("general.config.obscure_value", 0);
+pref("general.config.filename", "mozilla.cfg");
\ No newline at end of file
diff --git a/.docker/waterfox/neko.js b/.docker/waterfox/neko.js
new file mode 100644
index 00000000..a55e1e51
--- /dev/null
+++ b/.docker/waterfox/neko.js
@@ -0,0 +1,37 @@
+// firefox config for neko
+lockPref("browser.tabs.closeWindowWithLastTab", false);
+lockPref("app.update.auto", false);
+lockPref("app.update.enabled", false);
+lockPref("app.update.silent", true);
+lockPref("browser.cache.disk.capacity", 1000);
+lockPref("browser.download.useDownloadDir", false);
+lockPref("browser.rights.3.shown", true);
+lockPref("browser.search.update", false);
+lockPref("browser.shell.checkDefaultBrowser", false);
+lockPref("extensions.update.enabled", false);
+lockPref("plugin.default_plugin_disabled", false);
+lockPref("plugin.scan.plid.all", true);
+lockPref("plugins.hide_infobar_for_missing_plugin", true);
+lockPref("profile.allow_automigration", false);
+lockPref("signon.prefillForms", false);
+lockPref("signon.rememberSignons", false);
+lockPref("xpinstall.enabled", false);
+lockPref("xpinstall.whitelist.required", true);
+lockPref("browser.download.manager.retention", 0);
+lockPref("browser.download.folderList", 2);
+lockPref("browser.download.forbid_open_with", true);
+lockPref("browser.safebrowsing.downloads.enabled", false);
+lockPref("browser.safebrowsing.downloads.remote.enabled", false);
+lockPref("browser.helperApps.alwaysAsk.force", false);
+lockPref("browser.helperApps.neverAsk.saveToDisk", "application/zip,application/octet-stream,image/jpeg,application/vnd.ms-outlook,text/html,application/pdf");
+lockPref("browser.helperApps.neverAsk.openFile", "application/zip,application/octet-stream,image/jpeg,application/vnd.ms-outlook,text/html,application/pdf");
+lockPref("browser.newtabpage.activity-stream.default.sites", "https://ipleak.net/,https://www.youtube.com/,https://www.google.com/");
+// dark mode
+lockPref("reader.color_scheme", "dark");
+lockPref("devtools.theme", "dark");
+lockPref("ui.systemUsesDarkTheme", 1);
+lockPref("lightweightThemes.usedThemes","[]");
+lockPref("lightweightThemes.selectedThemeID", "firefox-compact-dark@mozilla.org");
+lockPref("extensions.activeThemeID", "firefox-compact-dark@mozilla.org");
+lockPref("browser.theme.toolbar-theme", 0);
+lockPref("browser.in-content.dark-mode", true);
diff --git a/.docker/waterfox/openbox.xml b/.docker/waterfox/openbox.xml
new file mode 100644
index 00000000..e2155389
--- /dev/null
+++ b/.docker/waterfox/openbox.xml
@@ -0,0 +1,763 @@
+
+
+
+
+
+
+
+ 10
+ 20
+
+
+
+
+
+ no
+ true
+ yes
+ normal
+
+
+
+
+ yes
+
+ no
+
+ yes
+
+ no
+
+ 200
+
+ no
+
+
+
+
+ Smart
+
+ yes
+
+ Primary
+
+ 1
+
+
+
+
+ Clearlooks
+ NLIMC
+
+ yes
+ yes
+
+ sans
+ 8
+
+ bold
+
+ normal
+
+
+
+ sans
+ 8
+
+ bold
+
+ normal
+
+
+
+ sans
+ 9
+
+ normal
+
+ normal
+
+
+
+ sans
+ 9
+
+ normal
+
+ normal
+
+
+
+ sans
+ 9
+
+ bold
+
+ normal
+
+
+
+ sans
+ 9
+
+ bold
+
+ normal
+
+
+
+
+
+
+ 1
+ 1
+
+
+
+ 875
+
+
+
+
+ yes
+ Nonpixel
+
+ Center
+
+
+
+
+ 10
+
+ 10
+
+
+
+
+
+
+ 0
+ 0
+ 0
+ 0
+
+
+
+ TopLeft
+
+ 0
+ 0
+ no
+ Above
+
+ Vertical
+
+ no
+ 300
+
+ 300
+
+ Middle
+
+
+
+
+ C-g
+
+
+
+ leftno
+
+
+ rightno
+
+
+ upno
+
+
+ downno
+
+
+ leftno
+
+
+ rightno
+
+
+ upno
+
+
+ downno
+
+
+ 1
+
+
+ 2
+
+
+ 3
+
+
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ scrot -s
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ yesyes
+
+
+
+
+
+
+
+
+
+
+
+ right
+
+
+
+
+ left
+
+
+
+
+ up
+
+
+
+
+ down
+
+
+
+
+
+
+
+ true
+ Konqueror
+
+ kfmclient openProfile filemanagement
+
+
+
+
+ scrot
+
+
+
+
+ 1
+
+ 500
+
+ 400
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+
+
+
+
+
+
+
+
+
+
+
+ no
+
+
+
+
+
+
+
+
+
+
+ yes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ top
+
+
+
+
+
+ left
+
+
+
+
+
+ right
+
+
+
+
+
+ bottom
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ vertical
+
+
+ horizontal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ previous
+
+
+ next
+
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ previous
+
+
+ next
+
+
+ previous
+
+
+ next
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.docker/waterfox/policies.json b/.docker/waterfox/policies.json
new file mode 100644
index 00000000..4e2e267c
--- /dev/null
+++ b/.docker/waterfox/policies.json
@@ -0,0 +1,129 @@
+{
+ "policies": {
+ "BlockAboutAddons": false,
+ "BlockAboutConfig": true,
+ "BlockAboutProfiles": true,
+ "BlockAboutSupport": true,
+ "Bookmarks": [
+ {
+ "Title": "IPLeak",
+ "URL": "https://ipleak.net/",
+ "Favicon": "https://ipleak.net/favicon.ico",
+ "Folder": "Pages",
+ "Placement": "toolbar"
+ },
+ {
+ "Title": "YouTube",
+ "URL": "https://www.youtube.com/",
+ "Favicon": "https://www.youtube.com/favicon.ico",
+ "Folder": "Pages",
+ "Placement": "toolbar"
+ },
+ {
+ "Title": "Google",
+ "URL": "https://www.google.com/",
+ "Favicon": "https://www.google.com/favicon.ico",
+ "Folder": "Pages",
+ "Placement": "toolbar"
+ }
+ ],
+ "CaptivePortal": false,
+ "DisableAppUpdate": true,
+ "DisableBuiltinPDFViewer": true,
+ "DisableDeveloperTools": false,
+ "DisableFeedbackCommands": true,
+ "DisableFirefoxAccounts": true,
+ "DisableFirefoxScreenshots": true,
+ "DisableFirefoxStudies": true,
+ "DisableForgetButton": true,
+ "DisableMasterPasswordCreation": true,
+ "DisablePocket": true,
+ "DisablePrivateBrowsing": true,
+ "DisableProfileImport": true,
+ "DisableProfileRefresh": true,
+ "DisableSafeMode": true,
+ "DisableSetDesktopBackground": true,
+ "DisableSystemAddonUpdate": true,
+ "DisableTelemetry": true,
+ "DisplayBookmarksToolbar": false,
+ "DontCheckDefaultBrowser": true,
+ "EnableTrackingProtection": {
+ "Cryptomining": true,
+ "Fingerprinting": true,
+ "Value": true
+ },
+ "ExtensionSettings": {
+ "*": {
+ "installation_mode": "blocked"
+ },
+ "sponsorBlocker@ajay.app": {
+ "install_url": "https://addons.mozilla.org/firefox/downloads/latest/sponsorblock/latest.xpi",
+ "installation_mode": "force_installed"
+ },
+ "uBlock0@raymondhill.net": {
+ "install_url": "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi",
+ "installation_mode": "force_installed"
+ }
+ },
+ "ExtensionUpdate": false,
+ "FirefoxHome": {
+ "Highlights": false,
+ "Pocket": false,
+ "Search": true,
+ "Snippets": false,
+ "TopSites": true
+ },
+ "FlashPlugin": {},
+ "HardwareAcceleration": false,
+ "Homepage": {
+ "Additional": [],
+ "StartPage": "home"
+ },
+ "NewTabPage": true,
+ "NoDefaultBookmarks": true,
+ "OfferToSaveLogins": false,
+ "OfferToSaveLoginsDefault": false,
+ "OverrideFirstRunPage": "",
+ "OverridePostUpdatePage": "",
+ "PasswordManagerEnabled": false,
+ "Permissions": {
+ "Camera": {
+ "BlockNewRequests": true
+ },
+ "Location": {
+ "BlockNewRequests": true
+ },
+ "Microphone": {
+ "BlockNewRequests": true
+ },
+ "Notifications": {
+ "BlockNewRequests": true
+ }
+ },
+ "Preferences": {
+ "browser.tabs.warnOnClose": false,
+ "browser.urlbar.suggest.bookmark": false,
+ "browser.urlbar.suggest.history": false,
+ "browser.urlbar.suggest.openpage": false,
+ "datareporting.policy.dataSubmissionPolicyBypassNotification": true,
+ "dom.disable_window_flip": true,
+ "dom.disable_window_move_resize": true,
+ "dom.event.contextmenu.enabled": true,
+ "extensions.getAddons.showPane": false,
+ "places.history.enabled": false,
+ "privacy.file_unique_origin": true,
+ "ui.key.menuAccessKeyFocuses": false
+ },
+ "PromptForDownloadLocation": false,
+ "SanitizeOnShutdown": {
+ "Cache": true,
+ "Cookies": true,
+ "Downloads": true,
+ "FormData": true,
+ "History": true,
+ "OfflineApps": true,
+ "Sessions": true,
+ "SiteSettings": true
+ }
+ }
+}
\ No newline at end of file
diff --git a/.docker/waterfox/profiles.ini b/.docker/waterfox/profiles.ini
new file mode 100644
index 00000000..fc9f13ee
--- /dev/null
+++ b/.docker/waterfox/profiles.ini
@@ -0,0 +1,8 @@
+[General]
+StartWithLastProfile=1
+
+[Profile0]
+Name=default
+IsRelative=1
+Path=profile.default
+Default=1
diff --git a/.docker/waterfox/supervisord.conf b/.docker/waterfox/supervisord.conf
new file mode 100644
index 00000000..920fb964
--- /dev/null
+++ b/.docker/waterfox/supervisord.conf
@@ -0,0 +1,22 @@
+[program:waterfox]
+environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
+command=/usr/bin/waterfox --no-remote -P default --display=%(ENV_DISPLAY)s -setDefaultBrowser -width 1280 -height 720
+stopsignal=INT
+autorestart=true
+priority=800
+user=%(ENV_USER)s
+stdout_logfile=/var/log/neko/waterfox.log
+stdout_logfile_maxbytes=100MB
+stdout_logfile_backups=10
+redirect_stderr=true
+
+[program:openbox]
+environment=HOME="/home/%(ENV_USER)s",USER="%(ENV_USER)s",DISPLAY="%(ENV_DISPLAY)s"
+command=/usr/bin/openbox --config-file /etc/neko/openbox.xml
+autorestart=true
+priority=300
+user=%(ENV_USER)s
+stdout_logfile=/var/log/neko/openbox.log
+stdout_logfile_maxbytes=100MB
+stdout_logfile_backups=10
+redirect_stderr=true
diff --git a/.github/workflows/dockerhub.yml b/.github/workflows/dockerhub.yml
index 8799164e..f0f8d88e 100644
--- a/.github/workflows/dockerhub.yml
+++ b/.github/workflows/dockerhub.yml
@@ -50,7 +50,7 @@ jobs:
# Will build all images even if some fail.
fail-fast: false
matrix:
- tags: [ firefox, chromium, google-chrome, ungoogled-chromium, microsoft-edge, brave, vivaldi, opera, tor-browser, remmina, vlc, xfce, kde ]
+ tags: [ firefox, waterfox, chromium, google-chrome, ungoogled-chromium, microsoft-edge, brave, vivaldi, opera, tor-browser, remmina, vlc, xfce, kde ]
env:
DOCKER_TAG: ${{ matrix.tags }}
steps:
diff --git a/.github/workflows/ghcr-amd.yml b/.github/workflows/ghcr-amd.yml
index c36144d3..fc85a9f1 100644
--- a/.github/workflows/ghcr-amd.yml
+++ b/.github/workflows/ghcr-amd.yml
@@ -70,6 +70,7 @@ jobs:
matrix:
include:
- tag: firefox
+ - tag: waterfox
- tag: chromium
- tag: google-chrome
- tag: ungoogled-chromium
diff --git a/webpage/docs/getting-started/docker-images.md b/webpage/docs/getting-started/docker-images.md
index 6d1b480c..90095ced 100644
--- a/webpage/docs/getting-started/docker-images.md
+++ b/webpage/docs/getting-started/docker-images.md
@@ -41,7 +41,8 @@ In comparison to Chromium-based browsers, Firefox-based browsers do not require
| Icon | Name | Docker Image |
| ---- | ---- | ------------ |
|
| [Firefox](https://www.mozilla.org/firefox/)
The open-source browser from Mozilla. | [`ghcr.io/m1k1o/neko/firefox`](https://ghcr.io/m1k1o/neko/firefox) |
-|
| [Tor Browser](https://www.torproject.org/)
The privacy-focused browser from the Tor Project. | [`ghcr.io/m1k1o/neko/tor-browser`](https://ghcr.io/m1k1o/neko/tor-browser) |
+|
| [Tor Browser](https://www.torproject.org/)
A browser designed to access the Tor network for enhanced privacy. | [`ghcr.io/m1k1o/neko/tor-browser`](https://ghcr.io/m1k1o/neko/tor-browser) |
+|
| [Waterfox](https://www.waterfox.net/)
A privacy-focused browser based on Firefox. | [`ghcr.io/m1k1o/neko/waterfox`](https://ghcr.io/m1k1o/neko/waterfox) |
### Chromium-based browsers
diff --git a/webpage/static/img/icons/waterfox.svg b/webpage/static/img/icons/waterfox.svg
new file mode 100644
index 00000000..2d91f57e
--- /dev/null
+++ b/webpage/static/img/icons/waterfox.svg
@@ -0,0 +1,16 @@
+