Created
March 5, 2019 14:28
-
-
Save chelovekula/c752de4bcbdeef6e4995a6b3467198d4 to your computer and use it in GitHub Desktop.
Custom Firefox user.js and userChrome.css
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/****************************************************************************** | |
* 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); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@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