Files
tubestation/waterfox/browser/app/profile/03-features.js
Alex Kontos 1a2eefb7cc refactor: split and rename prefs files
Splits the `00-waterfox.js` file into several more focused
preference files for better organization:

- `00-general.js`: General settings.
- `01-theme.js`: UI theme related settings.
- `02-privacy.js`: Privacy settings.
- `03-features.js`: Feature toggles.
- `04-sidebar.js`: Sidebar settings.

Also removes the unused `02-speed.js` and `03-privacy.js`
files, and updates moz.build accordingly
2025-11-06 14:13:27 +00:00

279 lines
17 KiB
JavaScript

// -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
// --- Mozilla & Waterfox Services Integration ---
// Controls for features and promotions related to Mozilla or Waterfox services.
// Mozilla VPN Promotion
pref("browser.privatebrowsing.vpnpromourl", ""); // Clear URL for VPN promo in private browsing context.
pref("browser.vpn_promo.enabled", false, locked); // Disable the VPN promotion.
pref("browser.promo.focus.enabled", false, locked); // Disable Focus mode promotion.
pref("browser.promo.pin.enabled", false, locked); // Disable Pin mode promotion (assuming "pomo" was a typo).
pref("browser.contentblocking.report.vpn-promo.url", "", locked); // Clear URL for VPN promo in content blocking report.
// Firefox Accounts Toolbar Integration (Controls visibility of Monitor, Relay, VPN in FxA menu)
pref("identity.fxaccounts.toolbar.pxiToolbarEnabled.monitorEnabled", false);
pref("identity.fxaccounts.toolbar.pxiToolbarEnabled.relayEnabled", false);
pref("identity.fxaccounts.toolbar.pxiToolbarEnabled.vpnEnabled", false);
// --- Add-ons & Extension Recommendations ---
// Settings related to the display and suggestion of extensions.
// Disable "Recommendations" pane in about:addons (this pane sometimes uses Google Analytics).
pref("extensions.getAddons.showPane", false, locked);
// Disable recommendations in the "Extensions" and "Themes" panes of about:addons.
pref("extensions.htmlaboutaddons.recommendations.enabled", false, locked);
// Disable personalized extension recommendations in about:addons and on the AMO website.
pref("browser.discovery.enabled", false, locked); // This is a broader switch impacting "discovery" features.
// Disable Contextual Feature Recommender (CFR) for add-ons and features.
// CFR suggests extensions or browser features based on user activity patterns.
// [1] https://support.mozilla.org/en-US/kb/extension-recommendations
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
// --- New Tab Page (Activity Stream) Configuration ---
// These settings control the various sections and content sources for the New Tab Page (about:newtab).
// Activity Stream Router (ASRouter) Provider Settings
// These typically disable specific content providers that feed into the New Tab Page.
pref("browser.newtabpage.activity-stream.asrouter.providers.cfr", "{}", locked); // Contextual Feature Recommender provider.
pref("browser.newtabpage.activity-stream.asrouter.providers.cfr-fxa", "{}", locked); // CFR FxA integration provider.
pref("browser.newtabpage.activity-stream.asrouter.providers.message-groups", "{}", locked); // Message groups provider.
pref("browser.newtabpage.activity-stream.asrouter.providers.messaging-experiments", "{}", locked); // Messaging experiments provider.
pref("browser.newtabpage.activity-stream.asrouter.providers.snippets", "{}", locked); // Snippets provider (Mozilla news/tips) via ASRouter.
pref("browser.newtabpage.activity-stream.asrouter.providers.whats-new-panel", "{}", locked); // Provider for the "What's New" panel content.
pref("browser.newtabpage.activity-stream.asrouter.useRemoteL10n", false, locked); // Disable use of remote localization for ASRouter content.
// General New Tab Page Content & Features
pref("browser.newtabpage.activity-stream.discoverystream.enabled", false, locked); // Disable Pocket/Discovery Stream integration on NTP.
pref("browser.newtabpage.activity-stream.discoverystream.config", "{}", locked); // Configuration for Discovery Stream (relevant if enabled elsewhere).
pref("browser.newtabpage.activity-stream.showSearch", false); // Hide the search bar on the New Tab Page.
pref("browser.newtabpage.activity-stream.improvesearch.topSiteSearchShortcuts", false); // Show search shortcuts (e.g., @bookmarks) on Top Sites.
pref("browser.newtabpage.activity-stream.feeds.topsites", true); // Show the Top Sites section.
pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false, locked); // Hide sponsored Top Sites.
pref("browser.newtabpage.activity-stream.system.showSponsored", false, locked); // Hide sponsored checkbox
pref("browser.newtabpage.activity-stream.system.showSponsoredCheckboxes", false, locked); // Hide sponsored checkbox
pref("browser.newtabpage.activity-stream.feeds.system.topstories", false, locked); // Disable system-provided top stories feed (Pocket integration).
pref("browser.newtabpage.activity-stream.feeds.section.topstories", false, locked); // Disable the "Recommended by Pocket" section.
pref("browser.newtabpage.activity-stream.showSponsored", false, locked); // Disable general sponsored content on the New Tab Page.
// Weather Widget on New Tab Page
pref("browser.newtabpage.activity-stream.showWeather", false); // Hide the weather widget.
pref("browser.newtabpage.activity-stream.system.showWeather", true); // Show "Weather" as a configurable UI option in NTP settings.
// Highlights Section (Recent Activity: Bookmarks, History, Downloads)
pref("browser.newtabpage.activity-stream.feeds.section.highlights", true); // Show the Highlights section.
pref("browser.newtabpage.activity-stream.section.highlights.includeBookmarks", true); // Include bookmarks in Highlights.
pref("browser.newtabpage.activity-stream.section.highlights.includeDownloads", false); // Do not include downloads in Highlights.
pref("browser.newtabpage.activity-stream.section.highlights.includeVisited", true); // Include recently visited sites in Highlights.
pref("browser.newtabpage.activity-stream.section.highlights.includePocket", false, locked); // Do not include Pocket saves in Highlights.
pref("browser.newtabpage.activity-stream.section.highlights.rows", 2); // Number of rows displayed for Highlights.
// Other New Tab Page Settings
pref("browser.newtabpage.activity-stream.feeds.snippets", false); // Disable Mozilla/Firefox related news/tips snippets feed directly on NTP.
pref("browser.newtabpage.activity-stream.default.sites", "", locked); // Clear the list of default Top Sites (locked to prevent override).
pref("browser.newtabpage.activity-stream.logowordmark.alwaysVisible", false); // Control visibility of Waterfox logo/wordmark on NTP.
// --- Browser UI & Interaction ---
// Miscellaneous settings affecting the browser's user interface and behavior.
// "More from Mozilla" section in Preferences/Settings
pref("browser.preferences.moreFromMozilla", false); // Hide this promotional section.
// Warnings & Notices
pref("browser.aboutConfig.showWarning", false); // Disable the warning dialog when accessing about:config..
// Profile Management
pref("browser.profiles.enabled", true); // Enable the new profile switcher UI.
// --- Sidebar Revamp Features ---
// Controls for an alternative sidebar implementation or major update.
pref("sidebar.revamp", true);
// Should the sidebar launcher default to visible or not with horizontal tabs
pref("sidebar.revamp.defaultLauncherVisible", false);
// Linux Specific UI
#ifdef XP_UNIX
#ifndef XP_MACOSX
// Use native-style title bar buttons on GTK environments for better desktop integration.
pref("widget.gtk.non-native-titlebar-buttons.enabled", true);
#endif
#endif
// Cookie Banner Handling
// Controls the browser's automated interaction with cookie consent banners.
// 0 = disable all handling.
// 1 = reject banners if a one-click "reject all" option is available; otherwise, keep banners on screen.
// 2 = reject banners if a one-click "reject all" is available; otherwise, fall back to an "accept all" option.
pref("cookiebanners.service.mode", 1);
pref("cookiebanners.service.mode.privateBrowsing", 1); // Same setting for Private Browsing mode.
// --- URL Bar (AwesomeBar) & Search Functionality ---\n// Settings for the address bar, search suggestions, and related features.
// URL Bar Suggestions (what types of suggestions appear in the dropdown)
pref("browser.urlbar.suggest.history", true); // Suggest from browsing history.
pref("browser.urlbar.suggest.bookmark", true); // Suggest from bookmarks.
pref("browser.urlbar.suggest.clipboard", true); // Suggest content from the clipboard (if enabled by user).
pref("browser.urlbar.suggest.openpage", true); // Suggest currently open tabs.
pref("browser.urlbar.suggest.engines", true); // Suggest installed search engines.
pref("browser.urlbar.suggest.searches", true); // Suggest past search terms.
pref("browser.urlbar.suggest.topsites", true); // Disable suggesting top sites when the URL bar is empty and focused.
// URL Bar Quick Actions & Utilities
pref("browser.urlbar.quickactions.enabled", false); // Disable quick actions (e.g., "view downloads", "manage extensions").
pref("browser.urlbar.shortcuts.quickactions", false); // Disable shortcuts for quick actions (e.g., typing "downloads").
pref("browser.urlbar.suggest.weather", false); // Disable weather forecast suggestions in the URL bar.
pref("browser.urlbar.weather.ignoreVPN", false); // If weather suggestions are enabled, setting to true ignores VPN status for location.
pref("browser.urlbar.suggest.calculator", true); // Enable the built-in calculator in the URL bar (e.g., "5*5").
pref("browser.urlbar.unitConversion.enabled", true); // Enable unit conversion in the URL bar (e.g., "10ft to m").
// URL Bar Feature Gates (Disabling specific third-party or experimental integrations)
pref("browser.urlbar.trending.featureGate", false); // Disable trending search suggestions from search providers.
pref("browser.urlbar.addons.featureGate", false); // Disable suggestions for add-ons.
pref("browser.urlbar.fakespot.featureGate", false); // Disable Fakespot integration (product review analysis).
pref("browser.urlbar.mdn.featureGate", false); // Disable MDN (Mozilla Developer Network) suggestions for web development terms.
pref("browser.urlbar.weather.featureGate", false); // Master feature gate for weather suggestions.
pref("browser.urlbar.clipboard.featureGate", false); // Master feature gate for clipboard suggestions.
pref("browser.urlbar.yelp.featureGate", false); // Disable Yelp integration for local business suggestions.
// Search Settings
pref("browser.search.separatePrivateDefault.ui.enabled", true); // Enable UI to set a different default search engine for Private Windows.
// --- Web Content Handling & Features ---
// Settings related to how specific web content or browser features behave.
// Text Fragments (Scroll-to-text links)
pref("dom.text_fragments.create_text_fragment.enabled", true); // Allow creating and navigating to links that scroll to specific text on a page.
// PDF Handling
pref("browser.download.open_pdf_attachments_inline", true); // Open PDF attachments inline using the built-in PDF viewer by default.
// Download Behaviors
pref("browser.download.manager.addToRecentDocs", false); // Do not add downloaded files to the system's "Recent Documents" list (Windows).
pref("browser.download.always_ask_before_handling_new_types", true); // Always ask the user how to handle new MIME types, rather than automatically saving.
// JavaScript Pop-up Window Behavior
// Controls how new windows opened by JavaScript are handled.
// 0 = force all new windows into tabs.
// 1 = let all JavaScript windows open as new windows.
// 2 = default Firefox behavior (catches some popups, lets others open as new windows based on features).
// [1] https://kb.mozillazine.org/About:config_entries (browser.link.open_newwindow.restriction)
pref("browser.link.open_newwindow.restriction", 0);
// --- Menus, Find Bar, and Text Selection ---
// UI elements related to navigation and content interaction.
// Bookmarks Menu
pref("browser.bookmarks.openInTabClosesMenu", false); // Keep the Bookmarks Menu open when selecting an item to open in a new tab.
// Context Menus
pref("browser.menu.showViewImageInfo", true); // Restore "View Image Info" to the image context menu.
// Find Bar
pref("findbar.highlightAll", true); // Highlight all occurrences of the searched text in the Find Bar.
// Text Selection Behavior
pref("layout.word_select.eat_space_to_next_word", false); // When double-clicking a word, do not automatically select the space that follows it.
// --- Tab Features & Behavior ---
// Settings controlling tab previews, actions, and states.
// Tab Previews (on hover)
pref("browser.tabs.hoverPreview.enabled", true); // Enable previews of tab content when hovering over a tab.
pref("browser.tabs.hoverPreview.showThumbnails", true); // Show thumbnails (screenshots) in tab hover previews.
// Tab Actions (from context menu or elsewhere)
pref("browser.tabs.duplicateTab", true); // Enable the "Duplicate Tab" option in the tab context menu.
pref("browser.tabs.copyurl", true); // Enable "Copy URL" in the tab context menu.
pref("browser.tabs.copyallurls", false); // Enable "Copy All URLs" in the tab context menu (copies URLs of all open tabs).
pref("browser.tabs.copyurl.activetab", false); // If true, "Copy URL" might specifically target only the active tab (less common).
pref("browser.tabs.unloadTab", false); // May enable an option to unload a tab from its context menu (often extension-dependent or for future features).
// --- Source Viewer & Developer Tools ---
// Settings for web development and inspection tools.
// Enable `@-moz-document` rules, which can be used by user styles (e.g., via Stylus) to target specific sites.
// [1] https://reddit.com/r/FirefoxCSS/comments/8x2q97/reenabling_mozdocument_rules_in_firefox_61/
pref("layout.css.moz-document.content.enabled", true);
// Wrap long lines in the View Source window.
pref("view_source.wrap_long_lines", true);
// Wrap long lines in the code editor within the DevTools debugger.
pref("devtools.debugger.ui.editor-wrapping", true);
pref("layout.dynamic-reflow-roots.enabled", true); // Enable dynamic reflow roots for improved rendering performance.
// --- AI & Machine Learning Features ---
// Controls for features utilizing AI or Machine Learning.
pref("browser.ml.chat.enabled", false); // Disable built-in ML chat features.
// --- Miscellaneous Feature Toggles ---
// Various standalone feature settings.
// Image Format Support
pref("image.jxl.enabled", true); // Enable support for the JPEG XL image format.
// Restart Menu (often provided by extensions or custom builds, not a standard Firefox feature)
pref("browser.restart_menu.showpanelmenubtn", true); // If a restart menu is present, show its button in a panel menu.
pref("browser.restart_menu.purgecache", false); // If true, purges caches upon restart initiated via this menu.
pref("browser.restart_menu.requireconfirm", true); // Require confirmation before restarting via this menu.
// --- Experimental Web Platform Features ---
// These features are typically under development and might be unstable or change in future releases.
// Use with caution.
// Enable CSS Masonry Layout (if available in the current browser version).
pref("layout.css.grid-template-masonry-value.enabled", true);
// Enable the Prioritized Task Scheduling API for web pages.
pref("dom.enable_web_task_scheduling", true); // Whether the scheduler interface will be exposed
// --- DOM Experimental Features ---
// https://whatpr.org/html/10168/interaction.html#closewatcher
pref("dom.closewatcher.enabled", true);
// WebCodecs API - H265
pref("dom.media.webcodecs.h265.enabled", true);
// Enable Screen Orientation lock
pref("dom.screenorientation.allow-lock", true);
// Whether allowing selection across the boundary
// between shadow DOM and light DOM.
// This is based on https://github.com/mfreed7/shadow-dom-selection
pref("dom.shadowdom.selection_across_boundary.enabled", true);
// When this pref is enabled:
// - Shadow DOM is not pierced by default anymore
// - The method accepts optional CaretPositionFromPointOptions to allow piercing
// certain ShadowRoots
//
// https://drafts.csswg.org/cssom-view/#dom-document-caretpositionfrompoint
pref("dom.shadowdom.new_caretPositionFromPoint_behavior.enabled", true);
pref("dom.webnotifications.actions.enabled", true);
pref("dom.webgpu.enabled", true); // Enable WebGPU API.
pref("dom.webgpu.workers.enabled", true); // Enable WebGPU in Web Workers.
pref("dom.webshare.enabled", true); // Enable Web Share API.
// --- CSS Experimental Features ---
// Is support for shape() enabled?
pref("layout.css.basic-shape-shape.enabled", true);
// Whether to use tight bounds for floating ::first-letter (legacy Gecko behavior)
// or loose bounds based on overall font metrics (WebKit/Blink-like behavior)?
// Values mean:
// 1 legacy Gecko behavior (tight bounds)
// 0 loose typographic bounds (similar to webkit/blink)
// -1 auto behavior: use loose bounds if reduced line-height (<1em) or negative
// block-start margin is present; otherwise use tight bounds.
pref("layout.css.floating-first-letter.tight-glyph-bounds", -1);
// Is support for font-variant-emoji enabled?
pref("layout.css.font-variant-emoji.enabled", true);
// Whether @scope rule is enabled
pref("layout.css.at-scope.enabled", true);
// Whether the scroll-driven animations generated by CSS is enabled. This
// also include animation-timeline property.
pref("layout.css.scroll-driven-animations.enabled", true);
// --- SVG Experimental Features ---
// Is support for the new getBBox method from SVG 2 enabled?
// See https://svgwg.org/svg2-draft/single-page.html#types-SVGBoundingBoxOptions
pref("svg.new-getBBox.enabled", true);
// Whether we use Moz2D Path::GetStrokedBounds to get the stroke bounds.
pref("svg.Moz2D.strokeBounds.enabled", true);