From b191fc5817f738d0de263a4697dba6918c8ab9f9 Mon Sep 17 00:00:00 2001 From: panotaka Date: Mon, 15 Jan 2024 16:31:23 -0400 Subject: [PATCH] Refactor code to improve performance and readability --- home/applications/browsers/default.nix | 462 ++++++++++++++++--------- 1 file changed, 292 insertions(+), 170 deletions(-) diff --git a/home/applications/browsers/default.nix b/home/applications/browsers/default.nix index 6f969b8..a0312e3 100644 --- a/home/applications/browsers/default.nix +++ b/home/applications/browsers/default.nix @@ -8,6 +8,7 @@ firefox = { policies = { + enable = true; ExtensionSettings = { # Allow extensions to be installed from anywhere "*" = { @@ -38,188 +39,309 @@ "install_url" = "https://addons.mozilla.org/firefox/downloads/latest/user-agent-switcher-and-manager/latest.xpi"; }; }; + Preferences = { + # This is a sample Nix GPO file generated from Betterfox preferences + + # SECTION: FASTFOX + # GENERAL + "content.notify.interval" = 100000; + + # GFX + "gfx.canvas.accelerated.cache-items" = 4096; + "gfx.canvas.accelerated.cache-size" = 512; + "gfx.content.skia-font-cache-size" = 20; + + # DISK CACHE + "browser.cache.jsbc_compression_level" = 3; + + # MEDIA CACHE + "media.memory_cache_max_size" = 65536; + "media.cache_readahead_limit" = 7200; + "media.cache_resume_threshold" = 3600; + + # IMAGE CACHE + "image.mem.decode_bytes_at_a_time" = 32768; + + # NETWORK + "network.buffer.cache.size" = 262144; + "network.buffer.cache.count" = 128; + "network.http.max-connections" = 1800; + "network.http.max-persistent-connections-per-server" = 10; + "network.http.max-urgent-start-excessive-connections-per-host" = 5; + "network.http.pacing.requests.enabled" = false; + "network.dnsCacheExpiration" = 3600; + "network.dns.max_high_priority_threads" = 8; + "network.ssl_tokens_cache_capacity" = 10240; + + # SPECULATIVE LOADING + "network.dns.disablePrefetch" = true; + "network.prefetch-next" = false; + "network.predictor.enabled" = false; + + # EXPERIMENTAL + "layout.css.grid-template-masonry-value.enabled" = true; + "dom.enable_web_task_scheduling" = true; + "layout.css.has-selector.enabled" = true; + "dom.security.sanitizer.enabled" = true; + + # SECTION: SECUREFOX + # TRACKING PROTECTION + "browser.contentblocking.category" = "strict"; + "urlclassifier.trackingSkipURLs" = "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com"; + "urlclassifier.features.socialtracking.skipURLs" = "*.instagram.com, *.twitter.com, *.twimg.com"; + "network.cookie.sameSite.noneRequiresSecure" = true; + "browser.download.start_downloads_in_tmp_dir" = true; + "browser.helperApps.deleteTempFileOnExit" = true; + "browser.uitour.enabled" = false; + "privacy.globalprivacycontrol.enabled" = true; + "privacy.globalprivacycontrol.functionality.enabled" = true; + + # OCSP & CERTS / HPKP + "security.OCSP.enabled" = 0; + "security.remote_settings.crlite_filters.enabled" = true; + "security.pki.crlite_mode" = 2; + + # SSL / TLS + "security.ssl.treat_unsafe_negotiation_as_broken" = true; + "browser.xul.error_pages.expert_bad_cert" = true; + "security.tls.enable_0rtt_data" = false; + + # DISK AVOIDANCE + "browser.privatebrowsing.forceMediaMemoryCache" = true; + "browser.sessionstore.interval" = 60000; + + # SHUTDOWN & SANITIZING + "privacy.history.custom" = true; + + # SEARCH / URL BAR + "browser.search.separatePrivateDefault.ui.enabled" = true; + "browser.urlbar.update2.engineAliasRefresh" = true; + "browser.search.suggest.enabled" = false; + "browser.urlbar.suggest.quicksuggest.sponsored" = false; + "browser.urlbar.suggest.quicksuggest.nonsponsored" = false; + "browser.formfill.enable" = false; + "security.insecure_connection_text.enabled" = true; + "security.insecure_connection_text.pbmode.enabled" = true; + "network.IDN_show_punycode" = true; + + # HTTPS-FIRST POLICY + "dom.security.https_first" = true; + + # PASSWORDS + "signon.rememberSignons" = false; + "signon.formlessCapture.enabled" = false; + "signon.privateBrowsingCapture.enabled" = false; + "network.auth.subresource-http-auth-allow" = 1; + "editor.truncate_user_pastes" = false; + + # ADDRESS + CREDIT CARD MANAGER + "extensions.formautofill.addresses.enabled" = false; + "extensions.formautofill.creditCards.enabled" = false; + + # MIXED CONTENT + CROSS-SITE + "security.mixed_content.block_display_content" = true; + "security.mixed_content.upgrade_display_content" = true; + "security.mixed_content.upgrade_display_content.image" = true; + "pdfjs.enableScripting" = false; + "extensions.postDownloadThirdPartyPrompt" = false; + + # HEADERS / REFERERS + "network.http.referer.XOriginTrimmingPolicy" = 2; + + # CONTAINERS + "privacy.userContext.ui.enabled" = true; + + # WEBRTC + "media.peerconnection.ice.proxy_only_if_behind_proxy" = true; + "media.peerconnection.ice.default_address_only" = true; + + # SAFE BROWSING + "browser.safebrowsing.downloads.remote.enabled" = false; + + # MOZILLA + "permissions.default.desktop-notification" = 2; + "permissions.default.geo" = 2; + "geo.provider.network.url" = "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"; + "permissions.manager.defaultsUrl" = ""; + "webchannel.allowObject.urlWhitelist" = ""; + + # TELEMETRY + "datareporting.policy.dataSubmissionEnabled" = false; + "datareporting.healthreport.uploadEnabled" = false; + "toolkit.telemetry.unified" = false; + "toolkit.telemetry.enabled" = false; + "toolkit.telemetry.server" = "data:,"; + "toolkit.telemetry.archive.enabled" = false; + "toolkit.telemetry.newProfilePing.enabled" = false; + "toolkit.telemetry.shutdownPingSender.enabled" = false; + "toolkit.telemetry.updatePing.enabled" = false; + "toolkit.telemetry.bhrPing.enabled" = false; + "toolkit.telemetry.firstShutdownPing.enabled" = false; + "toolkit.telemetry.coverage.opt-out" = true; + "toolkit.coverage.opt-out" = true; + "toolkit.coverage.endpoint.base" = ""; + "browser.ping-centre.telemetry" = false; + "browser.newtabpage.activity-stream.feeds.telemetry" = false; + "browser.newtabpage.activity-stream.telemetry" = false; + + # EXPERIMENTS + "app.shield.optoutstudies.enabled" = false; + "app.normandy.enabled" = false; + "app.normandy.api_url" = ""; + + # CRASH REPORTS + "breakpad.reportURL" = ""; + "browser.tabs.crashReporting.sendReport" = false; + "browser.crashReports.unsubmittedCheck.autoSubmit2" = false; + + # DETECTION + "captivedetect.canonicalURL" = ""; + "network.captive-portal-service.enabled" = false; + "network.connectivity-service.enabled" = false; + + # SECTION: PESKYFOX + # MOZILLA UI + "browser.privatebrowsing.vpnpromourl" = ""; + "extensions.getAddons.showPane" = false; + "extensions.htmlaboutaddons.recommendations.enabled" = false; + "browser.discovery.enabled" = false; + "browser.shell.checkDefaultBrowser" = false; + "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons" = false; + "browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features" = false; + "browser.preferences.moreFromMozilla" = false; + "browser.tabs.tabmanager.enabled" = false; + "browser.aboutConfig.showWarning" = false; + "browser.aboutwelcome.enabled" = false; + + # THEME ADJUSTMENTS + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "browser.compactmode.show" = true; + "browser.display.focus_ring_on_anything" = true; + "browser.display.focus_ring_style" = 0; + "browser.display.focus_ring_width" = 0; + "layout.css.prefers-color-scheme.content-override" = 2; + "browser.privateWindowSeparation.enabled" = false; # WINDOWS + + # COOKIE BANNER HANDLING + "cookiebanners.service.mode" = 1; + "cookiebanners.service.mode.privateBrowsing" = 1; + "cookiebanners.service.enableGlobalRules" = true; + + # FULLSCREEN NOTICE + "full-screen-api.transition-duration.enter" = "0 0"; + "full-screen-api.transition-duration.leave" = "0 0"; + "full-screen-api.warning.delay" = -1; + "full-screen-api.warning.timeout" = 0; + + # URL BAR + "browser.urlbar.suggest.calculator" = true; + "browser.urlbar.unitConversion.enabled" = true; + "browser.urlbar.trending.featureGate" = false; + + # NEW TAB PAGE + "browser.newtabpage.activity-stream.feeds.topsites" = false; + "browser.newtabpage.activity-stream.feeds.section.topstories" = false; + + # POCKET + "extensions.pocket.enabled" = false; + + # DOWNLOADS + "browser.download.useDownloadDir" = false; + "browser.download.always_ask_before_handling_new_types" = true; + "browser.download.manager.addToRecentDocs" = false; + + # PDF + "browser.download.open_pdf_attachments_inline" = true; + + # TAB BEHAVIOR + "browser.bookmarks.openInTabClosesMenu" = false; + "browser.menu.showViewImageInfo" = true; + "findbar.highlightAll" = true; + "layout.word_select.eat_space_to_next_word" = false; + + # SECTION: SMOOTHFOX + # SCROLLING OVERRIDES + # visit https://github.com/yokoffing/Betterfox/blob/main/Smoothfox.js + "apz.overscroll.enabled" = true; # DEFAULT NON-LINUX + "general.smoothScroll" = true; # DEFAULT + "general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS" = 12; + "general.smoothScroll.msdPhysics.enabled" = true; + "general.smoothScroll.msdPhysics.motionBeginSpringConstant" = 600; + "general.smoothScroll.msdPhysics.regularSpringConstant" = 650; + "general.smoothScroll.msdPhysics.slowdownMinDeltaMS" = 25; + "general.smoothScroll.msdPhysics.slowdownMinDeltaRatio" = 2.0; + "general.smoothScroll.msdPhysics.slowdownSpringConstant" = 250; + "general.smoothScroll.currentVelocityWeighting" = 1.0; + "general.smoothScroll.stopDecelerationWeighting" = 1.0; + "mousewheel.default.delta_multiplier_y" = 300; # 250-400; adjust this number to your liking + }; }; - enable = true; + profiles.panotaka = { settings = { "widget.use-xdg-desktop-portal.file-picker" = 1; }; userChrome = '' - /* ty to whoever made the origional "yet another sidebery config" as that is what ive gotten it from */ - - - /* Sidebery */ - #main-window[titlepreface*="[S] "] .tabbrowser-tab { - visibility: collapse; - } - - #main-window[titlepreface*="[S] "] .titlebar-button { - height: 40px; - } - - #main-window[titlepreface*="[S] "] #nav-bar { - margin-top: -40px; - } - #main-window[titlepreface*="[S] "][tabsintitlebar="true"] #nav-bar { - margin-right: 137px; - } - #main-window[titlepreface*="[S] "] #titlebar-spacer { - background-color: var(--chrome-secondary-background-color); - } - - #main-window[titlepreface*="[S] "] #titlebar-buttonbox-container { - background-color: var(--chrome-secondary-background-color); - } - - #main-window[titlepreface*="[S] "] .titlebar-color { - background-color: var(--toolbar-bgcolor); - } - - #sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"] #sidebar-header { - visibility: collapse; - } - - /* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0 + /* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/hide_tabs_toolbar.css made available under Mozilla Public License v. 2.0 See the above repository for updates as well as full license text. */ - /* Show sidebar only when the cursor is over it */ - /* The border controlling sidebar width will be removed so you'll need to modify these values to change width */ + /* Hides tabs toolbar */ + /* For OSX use hide_tabs_toolbar_osx.css instead */ - #sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"] { - --uc-sidebar-width: 48px !important; - --uc-sidebar-hover-width: 250px; - --uc-autohide-sidebar-delay: 100ms; /* Wait 0.1s before hiding sidebar */ - position: relative; - min-width: var(--uc-sidebar-width) !important; - width: var(--uc-sidebar-width) !important; - max-width: var(--uc-sidebar-width) !important; - z-index:1; - } + /* Note, if you have either native titlebar or menubar enabled, then you don't really need this style. + * In those cases you can just use: #TabsToolbar{ visibility: collapse !important } + */ - #sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"][positionend] { - direction: rtl; - } - #sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"][positionend] > *{ - direction: ltr; - } - - #sidebar-box[positionend]:-moz-locale-dir(rtl){ - direction: ltr; - } - #sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ - direction: rtl; - } - - #sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"] > #sidebar { - transition: min-width 115ms linear !important; - min-width: var(--uc-sidebar-width) !important; - will-change: min-width; - } - - #sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"]:hover > #sidebar { - min-width: var(--uc-sidebar-hover-width) !important; - transition: min-width 100ms linear var(--uc-autohide-sidebar-delay), box-shadow 500ms linear !important; - box-shadow: 0 0 4px rgba(10,10,10, .5); - clip-path: inset(0px -15px 0px -15px); - } - - /* Add sidebar divider and give it background */ - - #sidebar, - #sidebar-header { - background-color: var(--toolbar-bgcolor) !important; - border-inline: 1px solid var(--chrome-content-separator-color); - border-inline-width: 0px 1px; - } - - #sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"]:not([positionend]) > :-moz-locale-dir(rtl), - #sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"][positionend] > * { - border-inline-width: 1px 0px; - } - - /* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */ - - #sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"]:not([positionend]):hover ~ #appcontent #statuspanel { - inset-inline: auto 0px !important; - } - #sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"]:not([positionend]):hover ~ #appcontent #statuspanel-label { - margin-inline: 0px !important; - border-left-style: solid !important; - } - - /* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_bookmarks_toolbar.css made available under Mozilla Public License v. 2.0 - See the above repository for updates as well as full license text. */ - - #PersonalToolbar{ - --uc-bm-height: 20px; /* Might need to adjust if the toolbar has other buttons */ - --uc-bm-padding: 7px; /* Vertical padding to be applied to bookmarks */ - --uc-autohide-toolbar-delay: 600ms; /* The toolbar is hidden after 0.6s */ - - /* 0deg = "show" ; 90deg = "hide" ; Set the following to control when bookmarks are shown */ - --uc-autohide-toolbar-focus-rotation: 0deg; /* urlbar is focused */ - --uc-autohide-toolbar-hover-rotation: 0deg; /* cursor is over the toolbar area */ - } - - :root[uidensity="compact"] #PersonalToolbar{ --uc-bm-padding: 1px; } - :root[uidensity="touch"] #PersonalToolbar{ --uc-bm-padding: 7px } - - #PersonalToolbar:not([customizing]){ - position: relative; - margin-bottom: calc(0px - var(--uc-bm-height) - 2 * var(--uc-bm-padding)); - transform: rotateX(90deg); - transform-origin: top; - transition: transform 135ms linear var(--uc-autohide-toolbar-delay) !important; - z-index: 1; - /* The following properties should allow the themes with trasparent toolbars to work */ - background-color: transparent !important; - background-repeat: no-repeat,no-repeat,var(--lwt-background-tiling); - --uc-bg-y: calc(-2 * (var(--tab-block-margin) + var(--toolbarbutton-inner-padding) + var(--toolbarbutton-outer-padding)) - var(--tab-min-height) - 16px - var(--bookmark-block-padding)); - background-position: top left,top left,var(--lwt-background-alignment,top left); - background-position-y:top,top,var(--uc-bg-y),var(--uc-bg-y),var(--uc-bg-y); - background-image: var(--toolbar-bgimage), linear-gradient(var(--toolbar-bgcolor),var(--toolbar-bgcolor)),var(--lwt-header-image,var(--lwt-additional-images)) !important; - } - - #PlacesToolbarItems > .bookmark-item, - #OtherBookmarks, - #PersonalToolbar > #import-button{ - padding-block: var(--uc-bm-padding) !important; - } - - #nav-bar:focus-within + #PersonalToolbar{ - transition-delay: 100ms !important; - transform: rotateX(var(--uc-autohide-toolbar-focus-rotation,0)); - } - - #navigator-toolbox:hover > #PersonalToolbar{ - transition-delay: 100ms !important; - transform: rotateX(var(--uc-autohide-toolbar-hover-rotation,0)); - } - - #navigator-toolbox:hover > #nav-bar:focus-within + #PersonalToolbar { - transform: rotateX(0); - } - - .tabbrowser-tab { - visibility: collapse; - } - #nav-bar { - margin-top: -40px; - margin-right: 137px; - } - .titlebar-button { - height: 40px; - } - - - /* Uncomment to enable compatibility for multi-row_bookmarks.css */ - /* This would break buttons placed in the toolbar but that is likely not happening if you are using multi-row setup */ + /* IMPORTANT */ /* - #PersonalToolbar:not([customizing]){ - position: fixed; - display: block; - margin-bottom: 0px !important; - } + Get window_control_placeholder_support.css + Window controls will be all wrong without it */ + + :root[tabsintitlebar]{ --uc-toolbar-height: 40px; } + :root[tabsintitlebar][uidensity="compact"]{ --uc-toolbar-height: 32px } + #titlebar{ + will-change: unset !important; + transition: none !important; + opacity: 1 !important; + } + #TabsToolbar{ visibility: collapse !important } + + :root[sizemode="fullscreen"] #TabsToolbar > :is(#window-controls,.titlebar-buttonbox-container){ + visibility: visible !important; + z-index: 2; + } + + :root:not([inFullscreen]) #nav-bar{ + margin-top: calc(0px - var(--uc-toolbar-height,0px)); + } + + :root[tabsintitlebar] #toolbar-menubar[autohide="true"]{ + min-height: unset !important; + height: var(--uc-toolbar-height,0px) !important; + position: relative; + } + + #toolbar-menubar[autohide="false"]{ + margin-bottom: var(--uc-toolbar-height,0px) + } + + :root[tabsintitlebar] #toolbar-menubar[autohide="true"] #main-menubar{ + flex-grow: 1; + align-items: stretch; + background-color: var(--toolbar-bgcolor,--toolbar-non-lwt-bgcolor); + background-clip: padding-box; + border-right: 30px solid transparent; + border-image: linear-gradient(to left, transparent, var(--toolbar-bgcolor,--toolbar-non-lwt-bgcolor) 30px) 20 / 30px + } + + #toolbar-menubar:not([inactive]){ z-index: 2 } + #toolbar-menubar[autohide="true"][inactive] > #menubar-items { + opacity: 0; + pointer-events: none; + margin-left: var(--uc-window-drag-space-pre,0px) + } + ''; }; /*