Skip to content

Instantly share code, notes, and snippets.

@thohnb
Last active February 8, 2024 00:50
Show Gist options
  • Save thohnb/390494505029f66b9a182dc3ffa4221c to your computer and use it in GitHub Desktop.
Save thohnb/390494505029f66b9a182dc3ffa4221c to your computer and use it in GitHub Desktop.
Firefox Personal 2024 Config
:root{
margin: 0;
padding: 0;
border: transparent !important;
--tab-line-color: transparent !important;
}
.tab-content > :not(.tab-icon-stack):not([selected]){
display: none;
}
.tab-content {
box-sizing: border-box;
clear: both;
}
.tab-content:after{
content: "";
display: table;
clear: both;
}
.tab-icon-image:not([src]){
display: block !important;
}
.tab-icon-stack > *:not([selected]){ margin-inline: 0 !important; }
.tabbrowser-tab:not([selected]){
flex-grow: 0 !important;
}
.tabbrowser-tab[fadein]{ min-width: calc(16px + 2 * 10px + 4px) !important; }
:root[uidensity="compact"] .tabbrowser-tab[fadein]:not([selected]){
min-width: calc(16px + 2 * var(--inline-tab-padding,0px) + 4px) !important;
}
:root:not([uidensity="compact"]) .tab-content:not([selected]){ padding-inline: 10px !important; }
/*Find bar at top */
findbar{
order: -1;
margin-bottom: -33px;
position: relative;
border-top: none !important;
padding: 0 !important;
transition: transform 82ms linear, opacity 82ms linear 32ms !important;
background: none !important;
pointer-events: none;
z-index: 1;
white-space: nowrap;
}
.findbar-container > .findbar-find-fast{
padding: var(--toolbarbutton-inner-padding) 1px;
margin: 0 !important;
}
findbar[hidden]{ transform: translateY(-30px);}
findbar > .findbar-container,
findbar > .close-icon{
border: 1px solid var(--chrome-content-separator-color);
border-width: 0 0 1px 0px;
background-color: var(--lwt-accent-color) !important;
background-image: linear-gradient(var(--toolbar-bgcolor),var(--toolbar-bgcolor)),var(--lwt-header-image,none);
pointer-events: auto;
}
findbar > .findbar-container{
border-bottom-right-radius: 4px;
border-right-width: 1px;
height: initial !important;
margin-inline: 0px !important;
overflow-inline: visible !important;
}
.findbar-find-status{
display: flex;
overflow: hidden;
text-overflow: ellipsis;
flex-grow: 1;
}
.findbar-closebutton{
margin: 0 !important;
border-radius: 0 !important;
padding: 5px !important;
width: initial !important;
order: -1;
}
.findbar-closebutton > image{ padding: 3px }
.findbar-closebutton:hover > image{
background: var(--toolbarbutton-hover-background) !important;
border-radius: 4px
}
findbar > .findbar-container > hbox{ margin: 0 5px }
findbar::after{
content:"";
display: flex;
flex-grow: 100;
}
@media (-moz-bool-pref: "userchrome.floating-findbar-on-right.enabled"){
findbar{
flex-direction: row-reverse;
}
findbar > .findbar-container{
flex-direction: row-reverse;
border-inline-width: 1px 0px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 4px;
}
/*
Move findbar so it isn't over the scrollbar
Delete if you want findbar to begin from right window edge
*/
findbar{
margin-right: 16px;
border-right: 1px solid var(--chrome-content-separator-color);
}
}
@supports -moz-bool-pref("userchrome.floating-findbar-on-right.enabled"){
findbar{
flex-direction: row-reverse;
}
findbar > .findbar-container{
flex-direction: row-reverse;
border-inline-width: 1px 0px;
border-bottom-right-radius: 0px;
border-bottom-left-radius: 4px;
}
/*
Move findbar so it isn't over the scrollbar
Delete if you want findbar to begin from right window edge
*/
findbar{
margin-right: 16px;
border-right: 1px solid var(--chrome-content-separator-color);
}
}
/* Removes annoying buttons and spaces */
#firefox-view-button, #save-to-pocket-button, #tracking-protection-icon-container, .titlebar-spacer[type="pre-tabs"], .titlebar-spacer[type="post-tabs"]{display: none !important}
#tabbrowser-tabs{
border-inline-start-width: 0!important;
}
/* Center Bookmark Items */
#PlacesToolbarItems {
display: flex !important;
}
/* Hide Bookmark Labels */
#personal-bookmarks .bookmark-item > .toolbarbutton-text {
display: none !important;
}
/* Hide the mute/unmute button */
.tab-icon-overlay:not([pinned], [sharing], [crashed]):is([soundplaying], [muted]) {
display: none !important;
}
/* Keep site icon visible on hover */
.tabbrowser-tab:hover .tab-icon-stack:not([pinned], [sharing], [crashed]):is([soundplaying], [muted]) > :not(.tab-icon-overlay),
/* for site icon with Compact density */
:root[uidensity="compact"] .tab-icon-stack:not([pinned], [sharing], [crashed]):is([soundplaying], [muted]) > :not(.tab-icon-overlay) {
opacity: 1 !important; /* overrides full transparency with full opacity */
}
/* Hide playing title */
.tab-icon-sound-label {
display: none !important;
}
/* Only show dots in search bar when hovered */
#urlbar #identity-box::after,
#urlbar #page-action-buttons::before {
opacity: 0;
}
#urlbar:hover #identity-box::after,
#urlbar:hover #page-action-buttons::before {
opacity: 0.2;
transition: opacity 100ms ease;
}
/* ----- Remove search engines from the search/url bar ----- */
#urlbar .search-one-offs:not([hidden]) {
display:none !important;
}
/* --------------------------- Add icon menu --------------- */
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/iconized_main_menu.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */
/* Adds icons to main menu items which were removed in Proton */
#appMenu-zoom-controls::before,
#appMenu-fxa-status2[fxastatus] > toolbarbutton::before,
#appMenu-protonMainView > .panel-subview-body > toolbarbutton > image{
fill: currentColor;
-moz-context-properties: fill;
margin-inline: 0 8px !important;
}
#appMenu-zoom-controls::before,
#appMenu-fxa-status2[fxastatus] > toolbarbutton::before{
display: flex;
content: "";
width: 16px;
height: 16px;
}
#appMenu-new-tab-button2{ list-style-image: url("chrome://browser/skin/new-tab.svg") }
#appMenu-new-window-button2{ list-style-image: url("chrome://browser/skin/window.svg") }
#appMenu-new-private-window-button2{ list-style-image: url("chrome://browser/skin/privateBrowsing.svg") }
#appMenu-bookmarks-button{ list-style-image: url("chrome://browser/skin/bookmark-star-on-tray.svg") }
#appMenu-history-button{ list-style-image: url("chrome://browser/skin/history.svg") }
#appMenu-downloads-button{ list-style-image: url("chrome://browser/skin/downloads/downloads.svg") }
#appMenu-passwords-button{ list-style-image: url("chrome://browser/skin/login.svg") }
#appMenu-extensions-themes-button{ list-style-image: url("chrome://mozapps/skin/extensions/extension.svg") }
#appMenu-print-button2{ list-style-image: url("chrome://global/skin/icons/print.svg") }
#appMenu-save-file-button2{ list-style-image: url("chrome://browser/skin/save.svg") }
#appMenu-find-button2{ list-style-image: url("chrome://global/skin/icons/search-glass.svg") }
#appMenu-settings-button{ list-style-image: url("chrome://global/skin/icons/settings.svg") }
#appMenu-more-button2{ list-style-image: url("chrome://global/skin/icons/developer.svg") }
#appMenu-help-button2{ list-style-image: url("chrome://global/skin/icons/info.svg") }
#appMenu-quit-button2{ list-style-image: url("chrome://devtools/skin/images/search-clear.svg") }
#appMenu-translate-button{ list-style-image: url("chrome://browser/skin/translations.svg") }
#appMenu-zoom-controls::before{ background-image: url("chrome://browser/skin/fullscreen.svg") }
/* Use account-button icon for signed in sync item */
#appMenu-fxa-status2[fxastatus] > toolbarbutton::before{ background-image: var(--avatar-image-url) }
/* Add somewhat hacky separator to zoom controls so it looks consistent */
#appMenu-protonMainView > .panel-subview-body::after{
content: "";
display: flex;
border-bottom: 1px solid var(--panel-separator-color);
margin: var(--panel-separator-margin);
}
#appMenu-find-button2 ~ *{
order: 2;
}
/* Clean extension order */
/* Clean and tight extensions menu */
#unified-extensions-panel #unified-extensions-view {
width: 100% !important; /* For firefox v115.x */
}
#unified-extensions-view{
--uei-icon-size: 22px; /* Change icon size */
--firefoxcss-number-of-extensions-in-a-row: 3; /* Increase to the number of icons you want in one row */
}
#unified-extensions-view .panel-header,
#unified-extensions-view .panel-header + toolbarseparator,
#unified-extensions-view .panel-subview-body + toolbarseparator,
#unified-extensions-view #unified-extensions-manage-extensions,
#unified-extensions-view .unified-extensions-item-menu-button.subviewbutton,
#unified-extensions-view .unified-extensions-item-action-button .unified-extensions-item-contents{
display:none !important;
}
#unified-extensions-view .panel-subview-body {
padding:4px !important;
}
#unified-extensions-view .unified-extensions-item .unified-extensions-item-icon,
#unified-extensions-view .unified-extensions-item .toolbarbutton-badge-stack {
margin-inline-end: 0px !important;
}
#unified-extensions-view #overflowed-extensions-list,
#unified-extensions-view #unified-extensions-area,
#unified-extensions-view .unified-extensions-list {
display: grid !important;
grid-template-columns: repeat(var(--firefoxcss-number-of-extensions-in-a-row),auto);
justify-items:left !important;
align-items:left !important;
}
#unified-extensions-view .unified-extensions-list .unified-extensions-item,
#unified-extensions-view .unified-extensions-list{
max-width: max-content;
}
#unified-extensions-view #unified-extensions-area {
padding-bottom: 3px !important;
border-bottom: 1px solid #aeaeae33 !important;
}
#wrapper-edit-controls:is([place="palette"],
[place="panel"]) > #edit-controls, #wrapper-zoom-controls:is([place="palette"],
[place="panel"]) > #zoom-controls, :is(panelview, #widget-overflow-fixed-list) .toolbaritem-combined-buttons {
margin: 0px !important;
}
/* No blue swipe on tabs when loaded */
.tabbrowser-tab .tab-loading-burst {
display: none !important;
}
{
"nightTab": true,
"version": "7.3.0",
"state": {
"layout": {
"area": {
"header": {
"width": 100,
"justify": "center"
},
"bookmark": {
"width": 100,
"justify": "center"
}
},
"alignment": "center-center",
"order": "header-bookmark",
"direction": "vertical",
"size": 72,
"width": 63,
"padding": 40,
"gutter": 20,
"breakpoint": "xs",
"scrollbar": "auto",
"title": "Trang Mới",
"favicon": "data:image/png;base64,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",
"overscroll": false
},
"header": {
"item": {
"justify": "center"
},
"greeting": {
"show": true,
"type": "custom",
"custom": "You only live once, so make it worth!",
"name": "",
"size": 100,
"newLine": true
},
"transitional": {
"show": false,
"type": "time-and-date",
"size": 100,
"newLine": false
},
"clock": {
"hour": {
"show": true,
"display": "number"
},
"minute": {
"show": true,
"display": "number"
},
"second": {
"show": false,
"display": "number"
},
"separator": {
"show": true,
"text": ":"
},
"meridiem": {
"show": false
},
"hour24": {
"show": true
},
"size": 127,
"newLine": true
},
"date": {
"day": {
"show": false,
"display": "word",
"weekStart": "monday",
"length": "long"
},
"date": {
"show": true,
"display": "number",
"ordinal": false
},
"month": {
"show": true,
"display": "number",
"length": "long",
"ordinal": false
},
"year": {
"show": true,
"display": "number"
},
"separator": {
"show": true,
"text": "/"
},
"format": "date-month",
"size": 107,
"newLine": true
},
"search": {
"show": false,
"width": {
"by": "auto",
"size": 30
},
"engine": {
"selected": "google",
"custom": {
"name": "",
"url": "",
"queryName": ""
}
},
"text": {
"justify": "center"
},
"size": 50,
"newLine": true,
"newTab": false
},
"order": [
"greeting",
"clock",
"date"
],
"edit": false
},
"bookmark": {
"size": 107,
"url": {
"show": true
},
"line": {
"show": true
},
"shadow": {
"show": true
},
"hoverScale": {
"show": true
},
"orientation": "top",
"style": "list",
"newTab": true,
"edit": false,
"add": false,
"show": false,
"item": {}
},
"group": {
"area": {
"justify": "left"
},
"order": "header-body",
"name": {
"size": 100
},
"toolbar": {
"size": 100
},
"edit": false,
"add": false
},
"toolbar": {
"location": "corner",
"position": "top-left",
"size": 50,
"accent": {
"show": false
},
"add": {
"show": false
},
"edit": {
"show": false
},
"newLine": false
},
"theme": {
"color": {
"range": {
"primary": {
"h": 0,
"s": 0
}
},
"contrast": {
"start": 10,
"end": 100
},
"shades": 14
},
"accent": {
"hsl": {
"h": 20,
"s": 0,
"l": 100
},
"rgb": {
"r": 255,
"g": 255,
"b": 255
},
"random": {
"active": false,
"style": "any"
},
"cycle": {
"active": true,
"speed": 300,
"step": 10
}
},
"font": {
"display": {
"name": "JetBrains Mono",
"weight": 400,
"style": "normal"
},
"ui": {
"name": "JetBrains Mono",
"weight": 400,
"style": "normal"
}
},
"background": {
"type": "image",
"color": {
"hsl": {
"h": 221,
"s": 47,
"l": 17
},
"rgb": {
"r": 23,
"g": 36,
"b": 64
}
},
"gradient": {
"angle": 160,
"start": {
"hsl": {
"h": 206,
"s": 16,
"l": 40
},
"rgb": {
"r": 86,
"g": 104,
"b": 118
}
},
"end": {
"hsl": {
"h": 219,
"s": 28,
"l": 12
},
"rgb": {
"r": 22,
"g": 28,
"b": 39
}
}
},
"image": {
"url": "",
"blur": 0,
"grayscale": 0,
"scale": 100,
"accent": 0,
"opacity": 100,
"vignette": {
"opacity": 0,
"start": 90,
"end": 70
}
},
"video": {
"url": "",
"blur": 0,
"grayscale": 0,
"scale": 100,
"accent": 0,
"opacity": 100,
"vignette": {
"opacity": 0,
"start": 90,
"end": 70
}
}
},
"opacity": {
"general": 100
},
"layout": {
"color": {
"by": "theme",
"hsl": {
"h": 0,
"s": 0,
"l": 0
},
"rgb": {
"r": 0,
"g": 0,
"b": 0
},
"blur": 0,
"opacity": 10
},
"divider": {
"size": 0
}
},
"header": {
"color": {
"by": "theme",
"hsl": {
"h": 0,
"s": 0,
"l": 0
},
"rgb": {
"r": 0,
"g": 0,
"b": 0
},
"opacity": 10
},
"search": {
"opacity": 100
}
},
"bookmark": {
"color": {
"by": "theme",
"opacity": 10,
"hsl": {
"h": 0,
"s": 0,
"l": 0
},
"rgb": {
"r": 0,
"g": 0,
"b": 0
}
},
"item": {
"border": 0,
"opacity": 100
}
},
"group": {
"toolbar": {
"opacity": 100
}
},
"toolbar": {
"opacity": 100
},
"style": "dark",
"radius": 25,
"shadow": 75,
"shade": {
"opacity": 30,
"blur": 0
},
"custom": {
"all": [],
"edit": false
}
},
"search": false,
"modal": false,
"menu": true
},
"bookmark": [
{
"name": {
"text": "Cool stuff",
"show": true
},
"collapse": false,
"toolbar": {
"openAll": {
"show": true
},
"collapse": {
"show": true
}
},
"items": [
{
"url": "https://zombiefox.github.io/awesomeSheet/",
"display": {
"alignment": "center-center",
"direction": "horizontal",
"order": "visual-name",
"rotate": 0,
"translate": {
"x": 0,
"y": 0
},
"gutter": 25,
"name": {
"show": true,
"text": "awesomeSheet",
"size": 7
},
"visual": {
"show": true,
"type": "icon",
"size": 25,
"letter": {
"text": "AS"
},
"icon": {
"name": "dice-d20",
"prefix": "fas",
"label": "Dice D20"
},
"image": {
"url": ""
},
"shadow": {
"size": 0
}
}
},
"accent": {
"by": "custom",
"hsl": {
"h": 45,
"s": 100,
"l": 50
},
"rgb": {
"r": 255,
"g": 191,
"b": 0
}
},
"color": {
"by": "theme",
"hsl": {
"h": 0,
"s": 0,
"l": 0
},
"rgb": {
"r": 0,
"g": 0,
"b": 0
},
"opacity": 100
},
"background": {
"show": false,
"type": "image",
"opacity": 100,
"image": {
"url": ""
},
"video": {
"url": ""
}
},
"border": 0,
"shape": {
"wide": false,
"tall": false
},
"timestamp": 1626297988913
},
{
"url": "https://www.amazon.co.uk/",
"display": {
"alignment": "center-center",
"direction": "horizontal",
"order": "visual-name",
"rotate": 0,
"translate": {
"x": 0,
"y": 0
},
"gutter": 25,
"name": {
"show": true,
"text": "Amazon",
"size": 7
},
"visual": {
"show": true,
"type": "letter",
"size": 25,
"letter": {
"text": "AZ"
},
"icon": {
"name": "amazon",
"prefix": "fab",
"label": "Amazon"
},
"image": {
"url": ""
},
"shadow": {
"size": 0
}
}
},
"accent": {
"by": "custom",
"hsl": {
"h": 0,
"s": 100,
"l": 50
},
"rgb": {
"r": 255,
"g": 0,
"b": 0
}
},
"color": {
"by": "theme",
"hsl": {
"h": 0,
"s": 0,
"l": 0
},
"rgb": {
"r": 0,
"g": 0,
"b": 0
},
"opacity": 100
},
"background": {
"show": false,
"type": "image",
"opacity": 100,
"image": {
"url": ""
},
"video": {
"url": ""
}
},
"border": 0,
"shape": {
"wide": false,
"tall": false
},
"timestamp": 1626297999213
},
{
"url": "https://drive.google.com/drive/",
"display": {
"alignment": "center-center",
"direction": "horizontal",
"order": "visual-name",
"rotate": 0,
"translate": {
"x": 0,
"y": 0
},
"gutter": 25,
"name": {
"show": true,
"text": "Drive",
"size": 7
},
"visual": {
"show": true,
"type": "letter",
"size": 25,
"letter": {
"text": "DR"
},
"icon": {
"name": "google-drive",
"prefix": "fab",
"label": "Drive"
},
"image": {
"url": ""
},
"shadow": {
"size": 0
}
}
},
"accent": {
"by": "custom",
"hsl": {
"h": 180,
"s": 100,
"l": 50
},
"rgb": {
"r": 0,
"g": 255,
"b": 255
}
},
"color": {
"by": "theme",
"hsl": {
"h": 0,
"s": 0,
"l": 0
},
"rgb": {
"r": 0,
"g": 0,
"b": 0
},
"opacity": 100
},
"background": {
"show": false,
"type": "image",
"opacity": 100,
"image": {
"url": ""
},
"video": {
"url": ""
}
},
"border": 0,
"shape": {
"wide": false,
"tall": false
},
"timestamp": 1626298028996
},
{
"url": "https://mail.google.com/",
"display": {
"alignment": "center-center",
"direction": "horizontal",
"order": "visual-name",
"rotate": 0,
"translate": {
"x": 0,
"y": 0
},
"gutter": 25,
"name": {
"show": true,
"text": "Gmail",
"size": 7
},
"visual": {
"show": true,
"type": "letter",
"size": 25,
"letter": {
"text": "GM"
},
"icon": {
"name": "envelope",
"prefix": "fas",
"label": "Envelope"
},
"image": {
"url": ""
},
"shadow": {
"size": 0
}
}
},
"accent": {
"by": "custom",
"hsl": {
"h": 90,
"s": 100,
"l": 50
},
"rgb": {
"r": 128,
"g": 255,
"b": 0
}
},
"color": {
"by": "theme",
"hsl": {
"h": 0,
"s": 0,
"l": 0
},
"rgb": {
"r": 0,
"g": 0,
"b": 0
},
"opacity": 100
},
"background": {
"show": false,
"type": "image",
"opacity": 100,
"image": {
"url": ""
},
"video": {
"url": ""
}
},
"border": 0,
"shape": {
"wide": false,
"tall": false
},
"timestamp": 1626298011293
},
{
"url": "https://www.netflix.com/",
"display": {
"alignment": "center-center",
"direction": "horizontal",
"order": "visual-name",
"rotate": 0,
"translate": {
"x": 0,
"y": 0
},
"gutter": 25,
"name": {
"show": true,
"text": "Netflix",
"size": 7
},
"visual": {
"show": true,
"type": "icon",
"size": 25,
"letter": {
"text": "N"
},
"icon": {
"name": "film",
"prefix": "fas",
"label": "Film"
},
"image": {
"url": ""
},
"shadow": {
"size": 0
}
}
},
"accent": {
"by": "custom",
"hsl": {
"h": 135,
"s": 100,
"l": 50
},
"rgb": {
"r": 0,
"g": 255,
"b": 64
}
},
"color": {
"by": "theme",
"hsl": {
"h": 0,
"s": 0,
"l": 0
},
"rgb": {
"r": 0,
"g": 0,
"b": 0
},
"opacity": 100
},
"background": {
"show": false,
"type": "image",
"opacity": 100,
"image": {
"url": ""
},
"video": {
"url": ""
}
},
"border": 0,
"shape": {
"wide": false,
"tall": false
},
"timestamp": 1626298022303
},
{
"url": "https://www.reddit.com/",
"display": {
"alignment": "center-center",
"direction": "horizontal",
"order": "visual-name",
"rotate": 0,
"translate": {
"x": 0,
"y": 0
},
"gutter": 25,
"name": {
"show": true,
"text": "Reddit",
"size": 7
},
"visual": {
"show": true,
"type": "icon",
"size": 25,
"letter": {
"text": "R"
},
"icon": {
"name": "reddit-alien",
"prefix": "fab",
"label": "reddit Alien"
},
"image": {
"url": ""
},
"shadow": {
"size": 0
}
}
},
"accent": {
"by": "custom",
"hsl": {
"h": 225,
"s": 100,
"l": 50
},
"rgb": {
"r": 0,
"g": 64,
"b": 255
}
},
"color": {
"by": "theme",
"hsl": {
"h": 0,
"s": 0,
"l": 0
},
"rgb": {
"r": 0,
"g": 0,
"b": 0
},
"opacity": 100
},
"background": {
"show": false,
"type": "image",
"opacity": 100,
"image": {
"url": ""
},
"video": {
"url": ""
}
},
"border": 0,
"shape": {
"wide": false,
"tall": false
},
"timestamp": 1626298017175
}
]
},
{
"name": {
"text": "Dev sites",
"show": true
},
"collapse": true,
"toolbar": {
"openAll": {
"show": true
},
"collapse": {
"show": true
}
},
"items": [
{
"url": "https://devdocs.io/",
"display": {
"alignment": "center-center",
"direction": "horizontal",
"order": "visual-name",
"rotate": 0,
"translate": {
"x": 0,
"y": 0
},
"gutter": 25,
"name": {
"show": true,
"text": "Devdocs",
"size": 7
},
"visual": {
"show": true,
"type": "icon",
"size": 25,
"letter": {
"text": "DEV"
},
"icon": {
"name": "code",
"prefix": "fas",
"label": "Code"
},
"image": {
"url": ""
},
"shadow": {
"size": 0
}
}
},
"accent": {
"by": "custom",
"hsl": {
"h": 270,
"s": 100,
"l": 50
},
"rgb": {
"r": 127,
"g": 0,
"b": 255
}
},
"color": {
"by": "theme",
"hsl": {
"h": 0,
"s": 0,
"l": 0
},
"rgb": {
"r": 0,
"g": 0,
"b": 0
},
"opacity": 100
},
"background": {
"show": false,
"type": "image",
"opacity": 100,
"image": {
"url": ""
},
"video": {
"url": ""
}
},
"border": 0,
"shape": {
"wide": false,
"tall": false
},
"timestamp": 1626298034209
},
{
"url": "https://github.com/",
"display": {
"alignment": "center-center",
"direction": "horizontal",
"order": "visual-name",
"rotate": 0,
"translate": {
"x": 0,
"y": 0
},
"gutter": 25,
"name": {
"show": true,
"text": "Github",
"size": 7
},
"visual": {
"show": true,
"type": "icon",
"size": 25,
"letter": {
"text": "GIT"
},
"icon": {
"name": "github",
"prefix": "fab",
"label": "GitHub"
},
"image": {
"url": ""
},
"shadow": {
"size": 0
}
}
},
"accent": {
"by": "custom",
"hsl": {
"h": 315,
"s": 100,
"l": 50
},
"rgb": {
"r": 255,
"g": 0,
"b": 191
}
},
"color": {
"by": "theme",
"hsl": {
"h": 0,
"s": 0,
"l": 0
},
"rgb": {
"r": 0,
"g": 0,
"b": 0
},
"opacity": 100
},
"background": {
"show": false,
"type": "image",
"opacity": 100,
"image": {
"url": ""
},
"video": {
"url": ""
}
},
"border": 0,
"shape": {
"wide": false,
"tall": false
},
"timestamp": 1626298038470
}
]
}
]
}
! 2024-01-26 https://voz.vn
voz.vn##div.message--post.message:nth-of-type(2)
voz.vn##div.message--post.message:nth-of-type(3)
! 2024-01-26 https://www.youtube.com
www.youtube.com###secondary > .ytd-watch-flexy.style-scope
www.youtube.com###secondary
www.youtube.com###author-thumbnail > .ytd-comment-renderer.style-scope.yt-simple-endpoint
www.youtube.com###comments > .ytd-comments.style-scope
! 2024-01-27 https://www.facebook.com
www.facebook.com##.x1u8a7rm.x17qophe.xixxii4.x1ye3gou.x1s14bel.xn6708d.x1xy6bms.xds687c.x9f619.xayqjjm.x1ey2m1c.x2bj2ny.x193iq5w.x2lah0s.xdt5ytf.x78zum5
! 2024-01-30 https://voz.vn
voz.vn##.p-body-sidebar
voz.vn##.node--unread.node--forum.node--depth2.node--id63.node
! 2024-01-30 https://twitter.com
twitter.com##.r-1udh08x.r-1hycxz.r-zso239.r-aqfbo4.css-175oi2r > .r-1pi2tsx.css-175oi2r
twitter.com##.r-1udh08x.r-1hycxz.r-zso239.r-aqfbo4.css-175oi2r
! 2024-01-30 https://voz.vn
voz.vn##.node--unread.node--forum.node--depth2.node--id33.node
! delete block f17
##.node--unread.node--forum.node--depth2.node--id102.node
##.node--unread.node--forum.node--depth2.node--id17.node
##.node--unread.node--forum.node--depth2.node--id105.node
! 2024-01-30 https://voz.vn
voz.vn##.node--search.node--depth2.node--id102.node > .node-body
voz.vn##.block--category84.block--category.block > .block-container
www.youtube.com##+js(nano-stb, resolve(1), *, 0.001)
www.youtube.com##+js(set, yt.config_.EXPERIMENT_FLAGS.ab_pl_man, false)
www.youtube.com##+js(set, yt.config_.EXPERIMENT_FLAGS.web_enable_ab_rsp_cl, false)
||googlevideo.com/videoplayback$xhr,3p,method=get,domain=www.youtube.com
! 2024-02-07 https://www.youtube.com
www.youtube.com###guide-inner-content
www.youtube.com##ytd-mini-guide-renderer.ytd-app.style-scope
www.youtube.com###guide-button
www.youtube.com##.nfe-quote-action-menu-button
! 2024-02-07 https://voz.vn
voz.vn##.message-avatar-wrapper
||data.voz.vn/avatars/$image
voz.vn##.node--unread.node--forum.node--depth2.node--id9.node > .node-body > .node-extra > .node-extra-icon > .avatar--default--dynamic.avatar--default.avatar--xs.avatar
voz.vn##.node-extra-icon
voz.vn##.structItem-cell--icon.structItem-cell
voz.vn##.p-navgroup-link--user.p-navgroup-link--iconic.p-navgroup-link > .avatar--xxs.avatar
voz.vn##.avatarWrapper
voz.vn##.memberTooltip-avatar
//Dark Mode native: remove /* and */ to activate
//Dark Mode style 1
/*
user_pref("browser.active_color", "blue");
user_pref("browser.display.background_color", "#3f3f3f");
user_pref("browser.display.foreground_color", "#ffffff");
user_pref("browser.anchor_color", "#ffcc99");
user_pref("browser.visited_color", "#cc99ff");
user_pref("browser.display.document_color_use", 2);
user_pref("browser.display.use_system_colors", false);
user_pref("layout.css.forced-colors.enabled", false);
*/
//Dark Mode style 2
/*
user_pref("browser.active_color", "blue");
user_pref("browser.display.background_color", "#121212");
user_pref("browser.display.foreground_color", "#ffffff");
user_pref("browser.anchor_color", "#ffcc99");
user_pref("browser.visited_color", "#cc99ff");
user_pref("browser.display.document_color_use", 2);
user_pref("browser.display.use_system_colors", false);
user_pref("layout.css.forced-colors.enabled", false);
*/
//Dark Mode style Dark Reader
/*
user_pref("browser.active_color", "blue");
user_pref("browser.display.background_color", "#232627");
user_pref("browser.display.foreground_color", "#E4E3DF");
user_pref("browser.anchor_color", "#92BBDE");
user_pref("browser.visited_color", "#ED944F");
user_pref("browser.display.document_color_use", 2);
user_pref("browser.display.use_system_colors", false);
user_pref("layout.css.forced-colors.enabled", false);
*/
//Gray Mode
/*
user_pref("browser.active_color", "blue");
user_pref("browser.display.background_color", "#cccccc");
user_pref("browser.display.foreground_color", "#000000");
user_pref("browser.anchor_color", "#800040");
user_pref("browser.visited_color", "#b93d00");
user_pref("browser.display.document_color_use", 2);
user_pref("browser.display.use_system_colors", false);
user_pref("layout.css.forced-colors.enabled", false);
*/
//Dark Brown Mode
/*
user_pref("browser.active_color", "blue");
user_pref("browser.display.background_color", "#3f3f3f");
user_pref("browser.display.foreground_color", "#c9c9bb");
user_pref("browser.anchor_color", "#dca3a3");
user_pref("browser.visited_color", "#bba66f");
user_pref("browser.display.document_color_use", 2);
user_pref("browser.display.use_system_colors", false);
user_pref("layout.css.forced-colors.enabled", false);
*/
/****************************************************************************
* SECTION: NETWORK *
****************************************************************************/
// PREF: use bigger packets
// Reduce Firefox's CPU usage by requiring fewer application-to-driver data transfers.
// However, it does not affect the actual packet sizes transmitted over the network.
// [1] https://www.mail-archive.com/[email protected]/msg74561.html
user_pref("network.buffer.cache.size", 262144); // 256 kb; default=32768 (32 kb)
user_pref("network.buffer.cache.count", 128); // default=24
// PREF: increase TLS token caching
user_pref("network.ssl_tokens_cache_capacity", 10240); // default=2048; more TLS token caching (fast reconnects)
/** GFX ***/
//user_pref("gfx.canvas.accelerated", true); // enable if using a dedicated GPU on WINDOWS
user_pref("gfx.canvas.accelerated.cache-items", 4096);
user_pref("gfx.canvas.accelerated.cache-size", 512);
user_pref("gfx.content.skia-font-cache-size", 20);
/** MEDIA CACHE ***/
user_pref("media.memory_cache_max_size", 65536);
user_pref("media.cache_readahead_limit", 7200);
user_pref("media.cache_resume_threshold", 3600);
/** IMAGE CACHE ***/
user_pref("image.mem.decode_bytes_at_a_time", 32768);
//Tweaks
//Instant start-up
user_pref("browser.startup.preXulSkeletonUI", false);
//Snappier tooltips
user_pref("ui.tooltipDelay", 60);
user_pref("ui.submenuDelay", 0);
user_pref("browser.overlink-delay", 10);
//Enable Alt-Tab-like switch, Ctrl+Tab
user_pref("browser.ctrlTab.sortByRecentlyUsed", true);
//Enable userChrome.css
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
// Reduce disk read/write
user_pref("browser.sessionstore.idleDelay", 3600000);
user_pref("browser.sessionstore.interval", 3600000);
user_pref("browser.sessionstore.collect_zoom", false);
user_pref("browser.sessionstore.privacy_level", 2);
user_pref("browser.sessionstore.restore_pinned_tabs_on_demand", true);
user_pref("browser.sessionhistory.max_total_viewers", 0);
// Disable Pocket and Accessibility
user_pref("extensions.pocket.enabled", false);
user_pref("accessibility.force_disabled", 1);
// Disable Taskbar Preview
user_pref("browser.taskbar.lists.enabled", false);
user_pref("browser.taskbar.lists.frequent.enabled", false);
user_pref("browser.taskbar.lists.maxListItemCount", 0);
//user_pref("browser.taskbar.lists.refreshInSeconds", 2147483647);
user_pref("browser.taskbar.lists.tasks.enabled", false);
user_pref("browser.taskbar.previews.max", 0);
// Optimize rendering speed
// https://voz.vn/t/tong-hop-nhung-addon-chat-cho-firefox-pc-mobile.682181/post-23570551
// https://voz.vn/t/tong-hop-nhung-addon-chat-cho-firefox-pc-mobile.682181/post-27064564
user_pref("nglayout.initialpaint.delay", 2000);
user_pref("nglayout.initialpaint.delay_in_oopif", 2000);
user_pref("content.notify.backoffcount", 0);
user_pref("content.notify.interval", 2000000);
user_pref("content.notify.ontimer", true);
// Enable punycode
// https://voz.vn/t/tong-hop-nhung-addon-chat-cho-firefox-pc-mobile.682181/post-25938099
user_pref("network.IDN_show_punycode", true);
// GoogleDNS + ECS
// https://voz.vn/t/tong-hop-nhung-addon-chat-cho-firefox-pc-mobile.682181/post-24688026
user_pref("network.trr.uri", "https://dns.nextdns.io/");
user_pref("network.trr.custom_uri", "https://dns.nextdns.io/");
user_pref("network.trr.mode", 2);
//user_pref("network.trr.disable-ECS", false);
// Reduce network request
// https://voz.vn/t/tong-hop-nhung-addon-chat-cho-firefox-pc-mobile.682181/post-27409530
user_pref("network.http.rcwn.enabled", false);
// Enable Add Search
user_pref("browser.urlbar.update2.engineAliasRefresh", true);
// Enable Sleeping Tab
user_pref("floorp.tabsleep.enabled", true);
user_pref("floorp.tabsleep.tabTimeoutMinutes", 6);
// Enable PWA
user_pref("browser.ssb.enabled", true);
// Force RAM cache, uncomment // to enable
// https://voz.vn/t/cach-ep-firefox-luu-cache-tren-ram-ma-khong-can-ramdisk.664955/
//user_pref("browser.cache.disk.enable", false);
//user_pref("browser.cache.memory.enable", true);
//user_pref("browser.cache.memory.capacity", 524288);
//user_pref("browser.cache.memory.max_entry_size", 512000);
// Disable FastBack to save RAM
//user_pref("fission.bfcacheInParent", false);
//user_pref("fission.disableSessionHistoryInParent", true);
//user_pref("browser.sessionhistory.max_total_viewers", 0);
// Enable Multi-Account Container
user_pref("privacy.userContext.enabled", true); //enable Multi-Account Container
user_pref("privacy.userContext.ui.enabled", true); //enable Multi-Account Container
// Enable Cookie Banner Protection
user_pref("cookiebanners.service.mode", 2);
user_pref("cookiebanners.service.mode.privateBrowsing", 2);
// Disable Restricted Domains
user_pref("extensions.webextensions.restrictedDomains", "");
// No Animation Fullscreen
user_pref("browser.fullscreen.animate", true);
user_pref("full-screen-api.transition-duration.enter", "0 0");
user_pref("full-screen-api.transition-duration.leave", "0 0");
/*** [SECTION 0300]: QUIETER FOX ***/
user_pref("_user.js.parrot", "0300 syntax error: the parrot's not pinin' for the fjords!");
/** RECOMMENDATIONS ***/
/* 0320: disable recommendation pane in about:addons (uses Google Analytics) ***/
user_pref("extensions.getAddons.showPane", false); // [HIDDEN PREF]
/* 0321: disable recommendations in about:addons' Extensions and Themes panes [FF68+] ***/
user_pref("extensions.htmlaboutaddons.recommendations.enabled", false);
/* 0322: disable personalized Extension Recommendations in about:addons and AMO [FF65+]
* [NOTE] This pref has no effect when Health Reports (0331) are disabled
* [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to make personalized extension recommendations
* [1] https://support.mozilla.org/kb/personalized-extension-recommendations ***/
user_pref("browser.discovery.enabled", false);
/* 0323: disable shopping experience [FF116+]
* [1] https://bugzilla.mozilla.org/show_bug.cgi?id=1840156#c0 ***/
user_pref("browser.shopping.experience2023.enabled", false); // [DEFAULT: false]
/** TELEMETRY ***/
/* 0330: disable new data submission [FF41+]
* If disabled, no policy is shown or upload takes place, ever
* [1] https://bugzilla.mozilla.org/1195552 ***/
user_pref("datareporting.policy.dataSubmissionEnabled", false);
/* 0331: disable Health Reports
* [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to send technical... data ***/
user_pref("datareporting.healthreport.uploadEnabled", false);
/* 0332: disable telemetry
* The "unified" pref affects the behavior of the "enabled" pref
* - If "unified" is false then "enabled" controls the telemetry module
* - If "unified" is true then "enabled" only controls whether to record extended data
* [NOTE] "toolkit.telemetry.enabled" is now LOCKED to reflect prerelease (true) or release builds (false) [2]
* [1] https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html
* [2] https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5 ***/
user_pref("toolkit.telemetry.unified", false);
user_pref("toolkit.telemetry.enabled", false); // see [NOTE]
user_pref("toolkit.telemetry.server", "data:,");
user_pref("toolkit.telemetry.archive.enabled", false);
user_pref("toolkit.telemetry.newProfilePing.enabled", false); // [FF55+]
user_pref("toolkit.telemetry.shutdownPingSender.enabled", false); // [FF55+]
user_pref("toolkit.telemetry.updatePing.enabled", false); // [FF56+]
user_pref("toolkit.telemetry.bhrPing.enabled", false); // [FF57+] Background Hang Reporter
user_pref("toolkit.telemetry.firstShutdownPing.enabled", false); // [FF57+]
/* 0333: disable Telemetry Coverage
* [1] https://blog.mozilla.org/data/2018/08/20/effectively-measuring-search-in-firefox/ ***/
user_pref("toolkit.telemetry.coverage.opt-out", true); // [HIDDEN PREF]
user_pref("toolkit.coverage.opt-out", true); // [FF64+] [HIDDEN PREF]
user_pref("toolkit.coverage.endpoint.base", "");
/* 0334: disable PingCentre telemetry (used in several System Add-ons) [FF57+]
* Defense-in-depth: currently covered by 0331 ***/
user_pref("browser.ping-centre.telemetry", false);
/* 0335: disable Firefox Home (Activity Stream) telemetry ***/
user_pref("browser.newtabpage.activity-stream.feeds.telemetry", false);
user_pref("browser.newtabpage.activity-stream.telemetry", false);
/** STUDIES ***/
/* 0340: disable Studies
* [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to install and run studies ***/
user_pref("app.shield.optoutstudies.enabled", false);
/* 0341: disable Normandy/Shield [FF60+]
* Shield is a telemetry system that can push and test "recipes"
* [1] https://mozilla.github.io/normandy/ ***/
user_pref("app.normandy.enabled", false);
user_pref("app.normandy.api_url", "");
/** CRASH REPORTS ***/
/* 0350: disable Crash Reports ***/
user_pref("breakpad.reportURL", "");
user_pref("browser.tabs.crashReporting.sendReport", false); // [FF44+]
// user_pref("browser.crashReports.unsubmittedCheck.enabled", false); // [FF51+] [DEFAULT: false]
/* 0351: enforce no submission of backlogged Crash Reports [FF58+]
* [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to send backlogged crash reports ***/
user_pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false); // [DEFAULT: false]
/** OTHER ***/
/* 0360: disable Captive Portal detection
* [1] https://www.eff.org/deeplinks/2017/08/how-captive-portals-interfere-wireless-security-and-privacy ***/
user_pref("captivedetect.canonicalURL", "");
user_pref("network.captive-portal-service.enabled", false); // [FF52+]
/* 0361: disable Network Connectivity checks [FF65+]
* [1] https://bugzilla.mozilla.org/1460537 ***/
user_pref("network.connectivity-service.enabled", false);
/*** [SECTION 0400]: SAFE BROWSING (SB)
SB has taken many steps to preserve privacy. If required, a full url is never sent
to Google, only a part-hash of the prefix, hidden with noise of other real part-hashes.
Firefox takes measures such as stripping out identifying parameters and since SBv4 (FF57+)
doesn't even use cookies. (#Turn on browser.safebrowsing.debug to monitor this activity)
[1] https://feeding.cloud.geek.nz/posts/how-safe-browsing-works-in-firefox/
[2] https://wiki.mozilla.org/Security/Safe_Browsing
[3] https://support.mozilla.org/kb/how-does-phishing-and-malware-protection-work
[4] https://educatedguesswork.org/posts/safe-browsing-privacy/
***/
user_pref("_user.js.parrot", "0400 syntax error: the parrot's passed on!");
/* 0401: disable SB (Safe Browsing)
* [WARNING] Do this at your own risk! These are the master switches
* [SETTING] Privacy & Security>Security>... Block dangerous and deceptive content ***/
// user_pref("browser.safebrowsing.malware.enabled", false);
// user_pref("browser.safebrowsing.phishing.enabled", false);
/* 0402: disable SB checks for downloads (both local lookups + remote)
* This is the master switch for the safebrowsing.downloads* prefs (0403, 0404)
* [SETTING] Privacy & Security>Security>... "Block dangerous downloads" ***/
// user_pref("browser.safebrowsing.downloads.enabled", false);
/* 0403: disable SB checks for downloads (remote)
* To verify the safety of certain executable files, Firefox may submit some information about the
* file, including the name, origin, size and a cryptographic hash of the contents, to the Google
* Safe Browsing service which helps Firefox determine whether or not the file should be blocked
* [SETUP-SECURITY] If you do not understand this, or you want this protection, then override this ***/
user_pref("browser.safebrowsing.downloads.remote.enabled", false);
// user_pref("browser.safebrowsing.downloads.remote.url", ""); // Defense-in-depth
/* 0404: disable SB checks for unwanted software
* [SETTING] Privacy & Security>Security>... "Warn you about unwanted and uncommon software" ***/
// user_pref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false);
// user_pref("browser.safebrowsing.downloads.remote.block_uncommon", false);
/* 0405: disable "ignore this warning" on SB warnings [FF45+]
* If clicked, it bypasses the block for that session. This is a means for admins to enforce SB
* [TEST] see https://github.com/arkenfox/user.js/wiki/Appendix-A-Test-Sites#-mozilla
* [1] https://bugzilla.mozilla.org/1226490 ***/
// user_pref("browser.safebrowsing.allowOverride", false);
@thohnb
Copy link
Author

thohnb commented Feb 7, 2024

Personal Firefox Config for 2024
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment