Skip to content

Instantly share code, notes, and snippets.

@chelovekula
Created March 5, 2019 14:28
Show Gist options
  • Save chelovekula/c752de4bcbdeef6e4995a6b3467198d4 to your computer and use it in GitHub Desktop.
Save chelovekula/c752de4bcbdeef6e4995a6b3467198d4 to your computer and use it in GitHub Desktop.
Custom Firefox user.js and userChrome.css
/******************************************************************************
* Privacy *
******************************************************************************/
// Disable Location-Aware Browsing (geolocation)
user_pref("geo.enabled", false);
// Enable hardening against various fingerprinting vectors (Tor Uplift project)
// Note this can break the ability to remember the window size of Firefox on startup
//user_pref("privacy.resistFingerprinting", true);
// Enable first-party isolation
//user_pref("privacy.firstparty.isolate", true);
// Disable WebRTC to prevent leaking inernal IP addresses
user_pref("media.peerconnection.enabled", false);
user_pref("media.navigator.enabled", false);
user_pref("media.navigator.video.enabled", false);
user_pref("media.getusermedia.screensharing.enabled", false);
user_pref("media.getusermedia.audiocapture.enabled", false);
// Accept only first party cookies
user_pref("network.cookie.cookieBehavior", 1);
// Disable "beacon" asynchronous HTTP transfers (used for analytics)
user_pref("beacon.enabled", false);
// Disable leaking network/browser connection type via Javascript (WiFi, cellular, etc.)
user_pref("dom.netinfo.enabled", false);
// Disable sensor API
user_pref("device.sensors.enabled", false);
// Disable battery API
user_pref("dom.battery.enabled", false);
// Disable gamepad API to prevent USB device enumeration
user_pref("dom.gamepad.enabled", false);
// Disable virtual reality devices APIs
user_pref("dom.vr.enabled", false);
// Disable vibrator API
user_pref("dom.vibrator.enabled", false);
// Disable FlyWeb (discovery of LAN/proximity IoT devices that expose a Web interface)
user_pref("dom.flyweb.enabled", false);
// Disable webGL
user_pref("webgl.disabled", true);
// Disable speech recognition
user_pref("media.webspeech.recognition.enable", false);
// Disable speech synthesis
user_pref("media.webspeech.synth.enabled", false);
// Disable face detection
user_pref("camera.control.face_detection.enabled", false);
// Don't monitor OS online/offline connection state
user_pref("network.manage-offline-status", false);
// Disable video stats to reduce fingerprinting threat
user_pref("media.video_stats.enabled", false);
// Do not download URLs for the offline cache
user_pref("browser.cache.offline.enable", false);
// Disable sending Flash Player crash reports
user_pref("dom.ipc.plugins.flash.subprocess.crashreporter.enabled", false);
user_pref("dom.ipc.plugins.reportCrashURL", false);
// Disable permissions to access the camera, notifications, location, and microphone
user_pref("permissions.default.camera", 2);
user_pref("permissions.default.desktop-notification", 2);
user_pref("permissions.default.geo", 2);
user_pref("permissions.default.microphone", 2);
/******************************************************************************
* Security *
******************************************************************************/
// Enforce a security delay when installing add-ons (in milliseconds)
user_pref("security.dialog_enable_delay", 1000);
// Enable Punycode for Internationalized Domain Names to eliminate possible spoofing
user_pref("network.IDN_show_punycode", true);
// Disable remembering logins
user_pref("signon.rememberSignons", false);
// Don't trim http:// off of URLs in the address bar
user_pref("browser.urlbar.trimURLs", false);
// Disable url formatting (different colours for domain and remainer of section)
user_pref("browser.urlbar.formatting.enabled", false);
// Don't try to guess domain names when entering an invalid domain name in URL bar
user_pref("browser.fixup.alternate.enabled", false);
user_pref("browser.fixup.hide_user_pass", true);
// Enable insecure connection warnings
user_pref("security.insecure_connection_text.enabled", true);
user_pref("security.insecure_connection_text.pbmode.enabled", true);
// Enable insecure password warnings (login forms in non-HTTPS pages)
user_pref("security.insecure_password.ui.enabled", true);
// Show in-content login form warning UI for insecure login fields
user_pref("security.insecure_field_warning.contextual.enabled", true);
// disable HTTP2 (which was based on SPDY which is now deprecated)
user_pref("network.http.spdy.enabled", false);
user_pref("network.http.spdy.enabled.deps", false);
user_pref("network.http.spdy.enabled.http2", false);
/******************************************************************************
* Firefox features and components *
******************************************************************************/
// Enable Firefox Tracking Protection
user_pref("privacy.trackingprotection.enabled", true);
user_pref("privacy.trackingprotection.pbmode.enabled", true);
// Enable Safebrowsing (blocking reported web forgeries and attack sites)
user_pref("browser.safebrowsing.phishing.enabled", true);
user_pref("browser.safebrowsing.malware.enabled", true);
// Disable Firefox Account/Sync
user_pref("identity.fxaccounts.enabled", false);
// Disable Pocket
user_pref("extensions.pocket.enabled", false);
// Disable Reader
user_pref("reader.parse-on-load.enabled", false);
// Disable WebIDE
user_pref("devtools.webide.enabled", false);
user_pref("devtools.webide.autoinstallADBHelper", false);
user_pref("devtools.webide.autoinstallFxdtAdapters", false);
// Disable remote debugging
user_pref("devtools.debugger.remote-enabled", false);
user_pref("devtools.chrome.enabled", false);
user_pref("devtools.debugger.force-local", true);
// Disable querying Google application reputation database for downloaded files
user_pref("browser.safebrowsing.downloads.remote.enabled", false);
user_pref("browser.safebrowsing.downloads.remote.url", "");
// Disable onboarding
user_pref("browser.onboarding.enabled", false);
user_pref("devtools.onboarding.telemetry.logged", false);
// Disable Normandy studies
user_pref("app.normandy.enabled", false);
user_pref("app.normandy.first_run", false);
user_pref("app.normandy.api_url", "");
user_pref("app.normandy.user_id", "");
// Disable Shield
user_pref("app.shield.optoutstudies.enabled", false);
user_pref("extensions.shield-recipe-client.enabled", false);
user_pref("extensions.shield-recipe-client.user_id", "");
user_pref("extensions.shield-recipe-client.api_url", "");
// Disable telemetry
user_pref("toolkit.telemetry.enabled", false);
user_pref("toolkit.telemetry.rejected", true);
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.bhrPing.enabled", false);
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false);
user_pref("toolkit.telemetry.newProfilePing.enabled", false);
user_pref("toolkit.telemetry.reportingpolicy.firstRun", false);
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false);
user_pref("toolkit.telemetry.unifiedIsOptIn", false);
user_pref("toolkit.telemetry.updatePing.enabled", false);
user_pref("toolkit.telemetry.cachedClientID", "");
user_pref("toolkit.telemetry.hybridContent.enabled", false);
// Disable ping center telemetry
user_pref("browser.ping-centre.telemetry", false);
// Disable experiments
user_pref("experiments.enabled", false);
user_pref("experiments.supported", false);
user_pref("experiments.manifest.uri", "");
user_pref("network.allow-experiments", false);
// Disable sending Firefox crash reports to Mozilla servers
user_pref("breakpad.reportURL", "");
// Disable Heartbeat (Mozilla user rating telemetry)
user_pref("browser.selfsupport.url", "");
// Disable sending reports of tab crashes to Mozilla (about:tabcrashed), don't nag user about unsent crash reports
user_pref("browser.tabs.crashReporting.sendReport", false);
user_pref("browser.crashReports.unsubmittedCheck.enabled", false);
// Disable error reporter
user_pref("browser.chrome.errorReporter.enabled", false);
user_pref("browser.chrome.errorReporter.submitUrl", "");
// Disable collecting/sending health report (healthreport.sqlite*)
user_pref("datareporting.healthreport.uploadEnabled", false);
user_pref("datareporting.healthreport.service.enabled", false);
user_pref("datareporting.policy.dataSubmissionEnabled", false);
/******************************************************************************
* Extensions / Plugins *
******************************************************************************/
// Disable about:addons' Get Add-ons panel (uses Google-Analytics)
user_pref("extensions.getAddons.showPane", false); // hidden pref
user_pref("extensions.webservice.discoverURL", "");
// Disable Screenshots
user_pref("extensions.screenshots.disabled", true);
user_pref("extensions.screenshots.upload-disabled", true);
// Disable scanning for plugins (used to detect flash, java, etc..)
user_pref("plugin.scan.plid.all", false);
// Disable NPAPI plugins (0 = disabled, 1 = ask, 2 = enabled)
user_pref("plugin.state.flash", 0);
user_pref("plugin.state.java", 0);
// Decrease system information leakage to Mozilla extension blocklist update servers
user_pref("extensions.blocklist.url", "https://blocklist.addons.mozilla.org/blocklist/3/%APP_ID%/%APP_VERSION%/");
/******************************************************************************
* Automatic connections / Pre-fetching *
******************************************************************************/
// Disable automatic updates (still autocheck for updates and install manually)
user_pref("app.update.auto", false);
// Disable automatic search engine updates
user_pref("browser.search.update", false);
// Disable the background update service
user_pref("app.update.service.enabled", false);
// Disable background update staging
user_pref("app.update.staging.enabled", false);
// Disable automatic extension metadata updating (sends daily pings to Mozilla about extensions and recent startups)
user_pref("extensions.getAddons.cache.enabled", false);
// Disable automatic updating of personas/themes
user_pref("lightweightThemes.update.enabled", false);
// Disable automatic retrieval of search engine suggestions when typing in the address bar
user_pref("browser.search.suggest.enabled", false);
// Disable prefetching of <link rel="next"> URLs
user_pref("network.prefetch-next", false);
// Disable DNS prefetching
user_pref("network.dns.disablePrefetch", true);
user_pref("network.dns.disablePrefetchFromHTTPS", true); // hidden pref
// Disable the predictive service (Necko)
user_pref("network.predictor.enabled", false);
// Disable captive portal
user_pref("network.captive-portal-service.enabled", false);
user_pref("captivedetect.canonicalURL", "");
// Disable speculative pre-connections (preloading of autocomplete URLs)
user_pref("network.http.speculative-parallel-limit", 0);
// Disable downloading home page snippets/messages from Mozilla
user_pref("browser.aboutHomeSnippets.updateUrl", "");
// Disable pinging URIs specified in HTML <a> ping= attributes (but enforce same host just in case)
user_pref("browser.send_pings", false);
user_pref("browser.send_pings.require_same_host", true);
/*******************************************************************************
* Newtab functionality *
*******************************************************************************/
// Disable new tab page and show a blank tab instead
user_pref("browser.newtabpage.enabled", false);
user_pref("browser.newtab.url", "about:blank");
// Disable ads & preload
user_pref("browser.newtabpage.enhanced", false);
user_pref("browser.newtab.preload", false);
// Disable activity stream and recommended stories
user_pref("browser.newtabpage.activity-stream.enabled", false);
user_pref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
/*******************************************************************************
* Misc tweaks *
*******************************************************************************/
// Disable accessibility service
user_pref("accessibility.force_disabled", 1);
// Disable about:config warning page
user_pref("general.warnOnAboutConfig", false);
// Disable warning when closing multiple tabs
user_pref("browser.tabs.warnOnClose", false);
// Disable cosmetic animations
user_pref("toolkit.cosmeticAnimations.enabled", false);
// Disable UITour backend
user_pref("browser.uitour.enabled", false);
user_pref("browser.uitour.url", "");
// Disable ctrl+tab image previews
user_pref("browser.ctrlTab.previews", false);
// Disable auto+smooth scrolling
user_pref("general.autoScroll", false);
user_pref("general.smoothScroll", false);
// Disable spell checker
user_pref("layout.spellcheckDefault", 0);
// Disable copying extra spaces around words when using copy/paste
user_pref("layout.word_select.eat_space_to_next_word", false);
// Increase the minimum tab width (default: 75)
user_pref("browser.tabs.tabMinWidth", 100);
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); /* only needed once */
.tab-throbber[busy]::before {
background-image: url("chrome://global/skin/icons/loading.png") !important;
animation: unset !important;
}
.tab-throbber[busy]:not([progress])::before {
/* Grays the blue during "Connecting" state */
filter: grayscale(100%);
}
@media (min-resolution: 2dppx) {
.tab-throbber[busy]::before {
background-image: url("chrome://global/skin/icons/[email protected]") !important;
}
}
:root {
--tab-curve-width: 30px;
--tabs-border: transparent !important;
}
.arrowscrollbox-scrollbox {
padding-inline-start: 10px !important;
}
/* To be able to see the top border of the tab */
.tab-stack {
margin-top: 2px !important;
}
/* When the window is maximized, the first pinned tab is properly displayed. */
#TabsToolbar {
padding-inline-start: 15px !important;
}
#tabbrowser-tabs{
margin-left:-15px;
}
.titlebar-placeholder {
border: none !important;
}
/* Remove unneeded styles from Photon */
.tabbrowser-tab::before,
.tabbrowser-tab::after {
border: none !important;
}
/* Windows 7 specific */
@media (-moz-os-version: windows-win7) {
.tabbrowser-tab {
background-color: transparent !important;
border: none !important;
}
@media (-moz-windows-default-theme) {
.tabbrowser-tab:not(:-moz-lwtheme) {
background-color: transparent !important;
border: none !important;
}
}
}
.tabbrowser-tab > .tab-stack > .tab-background {
background-image: none !important;
-moz-box-orient: horizontal !important;
background-color: transparent !important;
margin-top: 1px !important;
}
.tab-background[selected="true"] {
border: none !important;
pointer-events: none !important;
}
.tab-line {
display: none !important;
}
.tab-bottom-line {
display: none !important;
}
/* Match height of new tab button (right svg) on hover */
.tabs-newtab-button {
margin: 0 !important;
}
/* overlap the tab curves */
.tab-background {
-moz-margin-end: -15px !important;
-moz-margin-start: -15px !important;
}
/* Begin tab background customizations */
.tab-background[selected="true"]::before {
border: none !important;
content: "" !important;
width: 30px !important;
min-height: 30px !important;
display: -moz-box !important;
background-repeat: no-repeat !important;
}
.tab-background[selected="true"]::after {
border: none !important;
content: "" !important;
width: 30px !important;
min-height: 30px !important;
display: -moz-box !important;
background-repeat: no-repeat !important;
}
.tab-background[selected="true"] > spacer {
margin-top: 0px !important;
}
#new-tab-button,
.tabs-newtab-button {
width: calc(36px + 30px) !important;
margin-inline-start: -15px !important;
margin-top: 1px !important;
}
/* Tab hover customizations */
/* Regular tabs */
.tabbrowser-tab:hover > .tab-stack > .tab-background:not([selected=true])::before {
display: -moz-box !important;
background-repeat: no-repeat !important;
content: "" !important;
width: 30px !important;
max-height: 30px !important;
background-color: transparent !important;
}
.tabbrowser-tab:hover > .tab-stack > .tab-background:not([selected=true])::after {
display: -moz-box !important;
background-repeat: no-repeat !important;
content: "" !important;
width: 30px !important;
max-height: 30px !important;
background-color: transparent !important;
}
.tabbrowser-tab:hover > .tab-stack > .tab-background:not([selected=true]) > spacer {
margin-top: 0px !important;
}
#TabsToolbar[brighttext] > #tabbrowser-tabs > .tabbrowser-tab:hover > .tab-stack > .tab-background:not([selected="true"]),
.tabs-newtab-button:hover,
.tabs-newtab-button:hover::before,
.tabs-newtab-button:hover::after {
background-color: transparent !important;
}
/* New tab hover customizations */
.tabbrowser-tab:hover > .tab-stack > .tab-background:not([selected="true"]), .tabs-newtab-button:hover {
background-position: 0px 2px, 30px 4px , 36px 2px !important;
background-repeat: no-repeat !important;
background-size: 30px 30px, calc(100% - (2 * 30px)) 30px, 30px !important;
}
.tabs-newtab-button:hover > .toolbarbutton-icon {
background: none !important;
background-color: transparent !important;
}
/* Color specific customizations */
:root {
--svg-selected-before: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg' width='30px' height='31px' preserveAspectRatio='none'><defs><svg:clipPath id='tab-curve-clip-path-start' clipPathUnits='objectBoundingBox'><svg:path d='m 1,0.0625 0.05,0 0,0.938 -1,0 0,-0.028 C 0.32082458,0.95840561 0.4353096,0.81970962 0.48499998,0.5625 0.51819998,0.3905 0.535,0.0659 1,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-curve-clip-path-end' clipPathUnits='objectBoundingBox'><svg:path d='m 0,0.0625 -0.05,0 0,0.938 1,0 0,-0.028 C 0.67917542,0.95840561 0.56569036,0.81970962 0.51599998,0.5625 0.48279998,0.3905 0.465,0.0659 0,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-hover-clip-path' clipPathUnits='objectBoundingBox'><svg:path d='M 0,0.2 0,1 1,1, 1,0.2 z'/></svg:clipPath></defs><foreignObject width='30' height='31' clip-path='url(%23tab-curve-clip-path-start)'><div id='tab-background-fill' style='background-color:rgb(249,249,250);background-repeat:no-repeat;height:100%;width:100%;' xmlns='http://www.w3.org/1999/xhtml'></div></foreignObject></svg>");
--svg-selected-after: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg' width='30px' height='31px' preserveAspectRatio='none'><defs><svg:clipPath id='tab-curve-clip-path-start' clipPathUnits='objectBoundingBox'><svg:path d='m 1,0.0625 0.05,0 0,0.938 -1,0 0,-0.028 C 0.32082458,0.95840561 0.4353096,0.81970962 0.48499998,0.5625 0.51819998,0.3905 0.535,0.0659 1,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-curve-clip-path-end' clipPathUnits='objectBoundingBox'><svg:path d='m 0,0.0625 -0.05,0 0,0.938 1,0 0,-0.028 C 0.67917542,0.95840561 0.56569036,0.81970962 0.51599998,0.5625 0.48279998,0.3905 0.465,0.0659 0,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-hover-clip-path' clipPathUnits='objectBoundingBox'><svg:path d='M 0,0.2 0,1 1,1, 1,0.2 z'/></svg:clipPath></defs><foreignObject width='30' height='31' clip-path='url(%23tab-curve-clip-path-end)'><div id='tab-background-fill' style='background-color:rgb(249, 249, 255);background-repeat:no-repeat;height:100%;width:100%;' xmlns='http://www.w3.org/1999/xhtml'></div></foreignObject></svg>");
--background-selected-middle:
linear-gradient(rgba(0,0,0,0), rgba(0,0,0,0)),
linear-gradient(
transparent
2px,
rgb(249,249,255) 2px,
rgb(249,249,255)
),
none;
--svg-hover-before: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg' width='30px' height='30px' preserveAspectRatio='none'><defs><svg:clipPath id='tab-curve-clip-path-start' clipPathUnits='objectBoundingBox'><svg:path d='m 1,0.0625 0.05,0 0,0.938 -1,0 0,-0.028 C 0.32082458,0.95840561 0.4353096,0.81970962 0.48499998,0.5625 0.51819998,0.3905 0.535,0.0659 1,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-curve-clip-path-end' clipPathUnits='objectBoundingBox'><svg:path d='m 0,0.0625 -0.05,0 0,0.938 1,0 0,-0.028 C 0.67917542,0.95840561 0.56569036,0.81970962 0.51599998,0.5625 0.48279998,0.3905 0.465,0.0659 0,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-hover-clip-path' clipPathUnits='objectBoundingBox'><svg:path d='M 0,0.2 0,1 1,1, 1,0.2 z'/></svg:clipPath></defs><foreignObject width='30' height='30' clip-path='url(%23tab-curve-clip-path-start)'><div id='tab-background-fill' style='background-color:rgba(255, 255, 255, .1);background-repeat:no-repeat;height:100%;width:100%;' xmlns='http://www.w3.org/1999/xhtml'></div></foreignObject></svg>");
--svg-hover-after: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg' width='30px' height='31px' preserveAspectRatio='none'><defs><svg:clipPath id='tab-curve-clip-path-start' clipPathUnits='objectBoundingBox'><svg:path d='m 1,0.0625 0.05,0 0,0.938 -1,0 0,-0.028 C 0.32082458,0.95840561 0.4353096,0.81970962 0.48499998,0.5625 0.51819998,0.3905 0.535,0.0659 1,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-curve-clip-path-end' clipPathUnits='objectBoundingBox'><svg:path d='m 0,0.0625 -0.05,0 0,0.938 1,0 0,-0.028 C 0.67917542,0.95840561 0.56569036,0.81970962 0.51599998,0.5625 0.48279998,0.3905 0.465,0.0659 0,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-hover-clip-path' clipPathUnits='objectBoundingBox'><svg:path d='M 0,0.2 0,1 1,1, 1,0.2 z'/></svg:clipPath></defs><foreignObject width='30' height='31' clip-path='url(%23tab-curve-clip-path-end)'><div id='tab-background-fill' style='background-color:rgba(255, 255, 255,.1);background-repeat:no-repeat;height:100%;width:100%;' xmlns='http://www.w3.org/1999/xhtml'></div></foreignObject></svg>");
--background-hover-middle:
linear-gradient(rgba(0,0,0,0), rgba(0,0,0,0)),
linear-gradient(
transparent
2px,
rgba(255,255,255,.1) 2px,
rgba(255,255,255,.1)
),
none;
--newtab-hover: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg' width='30px' height='30px' preserveAspectRatio='none'><defs><svg:clipPath id='tab-curve-clip-path-start' clipPathUnits='objectBoundingBox'><svg:path d='m 1,0.0625 0.05,0 0,0.938 -1,0 0,-0.028 C 0.32082458,0.95840561 0.4353096,0.81970962 0.48499998,0.5625 0.51819998,0.3905 0.535,0.0659 1,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-curve-clip-path-end' clipPathUnits='objectBoundingBox'><svg:path d='m 0,0.0625 -0.05,0 0,0.938 1,0 0,-0.028 C 0.67917542,0.95840561 0.56569036,0.81970962 0.51599998,0.5625 0.48279998,0.3905 0.465,0.0659 0,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-hover-clip-path' clipPathUnits='objectBoundingBox'><svg:path d='M 0,0.2 0,1 1,1, 1,0.2 z'/></svg:clipPath></defs><foreignObject width='30' height='31' clip-path='url(%23tab-curve-clip-path-start)'><div id='tab-background-fill' style='background-color:rgba(255,255,255,.1);background-repeat:no-repeat;height:100%;width:100%;' xmlns='http://www.w3.org/1999/xhtml'></div></foreignObject></svg>"),
linear-gradient(rgba(255,255,255,.1), rgba(255,255,255,.1)),
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg' width='30px' height='31px' preserveAspectRatio='none'><defs><svg:clipPath id='tab-curve-clip-path-start' clipPathUnits='objectBoundingBox'><svg:path d='m 1,0.0625 0.05,0 0,0.938 -1,0 0,-0.028 C 0.32082458,0.95840561 0.4353096,0.81970962 0.48499998,0.5625 0.51819998,0.3905 0.535,0.0659 1,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-curve-clip-path-end' clipPathUnits='objectBoundingBox'><svg:path d='m 0,0.0625 -0.05,0 0,0.938 1,0 0,-0.028 C 0.67917542,0.95840561 0.56569036,0.81970962 0.51599998,0.5625 0.48279998,0.3905 0.465,0.0659 0,0.0625 z'/></svg:clipPath><svg:clipPath id='tab-hover-clip-path' clipPathUnits='objectBoundingBox'><svg:path d='M 0,0.2 0,1 1,1, 1,0.2 z'/></svg:clipPath></defs><foreignObject width='30' height='31' clip-path='url(%23tab-curve-clip-path-end)'><div id='tab-background-fill' style='background-color:rgba(255,255,255,.1);background-repeat:no-repeat;height:100%;width:100%;' xmlns='http://www.w3.org/1999/xhtml'></div></foreignObject></svg>");
}
/* OS-specific color variables */
@media screen and (-moz-windows-theme) {
:root {
}
}
@media not screen and (-moz-windows-theme) {
:root {
}
}
.tab-background[selected="true"]::before {
background-image: var(--svg-selected-before) !important;
}
.tab-background[selected="true"]::after {
background-image: var(--svg-selected-after) !important;
}
.tab-background[selected="true"] > spacer {
background-image: var(--background-selected-middle) !important;
}
.tabbrowser-tab:hover > .tab-stack > .tab-background:not([selected=true])::before {
background-image: var(--svg-hover-before) !important;
}
.tabbrowser-tab:hover > .tab-stack > .tab-background:not([selected=true])::after {
background-image: var(--svg-hover-after) !important;
}
.tabbrowser-tab:hover > .tab-stack > .tab-background:not([selected=true]) > spacer {
background-image: var(--background-hover-middle) !important;
}
.tabs-newtab-button:hover {
background-image: var(--newtab-hover) !important;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment