├── .gitignore ├── README.md ├── TabCenterReborn.css └── chrome ├── .DS_Store ├── _config.css ├── components ├── _reassign.css ├── bookmarks-bar.css ├── extensions.css ├── findbar.css ├── nav-bar.css ├── sidebar.css ├── simpleMenuWizard │ ├── _index.css │ ├── blank-context.css │ ├── frame-context.css │ ├── image-context.css │ ├── input-context.css │ ├── link-context.css │ ├── main-hamburger.css │ ├── main-menubar.css │ ├── media-context.css │ ├── newtab-containers.css │ ├── opt_noSendToDevice.css │ ├── select-context.css │ ├── sidebar-context.css │ ├── sidebar-header.css │ ├── source-context.css │ ├── tab-context.css │ ├── toolbar-context.css │ └── urlbar-context.css ├── tabs.css └── titlebar.css ├── img ├── back.svg ├── bookmarks.svg ├── downloads.svg ├── forward.svg ├── history.svg ├── menu.svg ├── overflow.svg └── reload.svg ├── js ├── appMenuAboutConfigButton.uc.js ├── appMenuMods.uc.js ├── clearDownloadsButton.uc.js ├── floatingSidebarResizer.uc.js └── hideTrackingProtectionIconOnCustomNewTabPage.uc.js ├── palette ├── catppuccin-frappe.css ├── catppuccin-latte.css ├── catppuccin-macchiato.css ├── catppuccin-mocha.css └── catppuccin.css ├── resources ├── .DS_Store ├── controls │ ├── case-sensitive.svg │ ├── close.svg │ ├── entire-word.svg │ ├── menu-arrow-left-tiny.svg │ └── menu-arrow-tiny.svg ├── extensions │ ├── 3rdpartycookies-disabled.svg │ ├── 3rdpartycookies.svg │ ├── bitwarden.svg │ ├── bypass-paywalls.svg │ ├── case-sensitive.svg │ ├── command-frames.svg │ ├── container-base.svg │ ├── container-go.svg │ ├── container-plus.svg │ ├── darkmode.svg │ ├── dislike.svg │ ├── fingerprint.svg │ ├── github.svg │ ├── hide-password.svg │ ├── hydrus.svg │ ├── link.svg │ ├── pushbullet-solid.svg │ ├── rainmeter.svg │ ├── react.svg │ ├── show-password.svg │ ├── sidebery.svg │ ├── sponsorblock.svg │ ├── stylus.svg │ ├── svg-gobbler.svg │ ├── sync.svg │ ├── tool-inspector.svg │ ├── tool-styleeditor.svg │ ├── tool-webconsole.svg │ ├── translate-small.svg │ ├── translate.svg │ ├── tree-style-tabs-32.svg │ ├── tree-style-tabs.svg │ └── yomichan.svg ├── material │ ├── folder-add.svg │ ├── folder-open.svg │ ├── folder-save.svg │ ├── folder-snippets.svg │ ├── folder-source.svg │ ├── folder-special.svg │ ├── folder-upload.svg │ ├── folder-user-round.svg │ ├── folder-user.svg │ ├── folder.svg │ └── tag.svg ├── nav-bar │ ├── back.svg │ └── forward.svg ├── userChrome.ag.css ├── userChrome.au.css └── window │ ├── close-hover.svg │ ├── close.svg │ ├── inactive.svg │ ├── maximize-hover.svg │ ├── maximize-restore.svg │ ├── maximize.svg │ ├── minimize-hover.svg │ └── minimize.svg ├── userChrome.css ├── userContent.css └── utils ├── boot.jsm └── chrome.manifest /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Firefox vertical tabs setup 2 | 3 | ![Setup](https://github.com/Tnixc/firefox-config/assets/85466117/7c55b3fe-ca2b-4bdc-9435-a1c248a82f50) 4 | 5 | 6 | 7 | ## You will need 8 | 9 | [Custom Firefox stylesheet](https://www.reddit.com/r/firefox/wiki/userchrome/) (userChrome.css) 10 | 11 | [Tab Center Reborn Extension](https://addons.mozilla.org/en-US/firefox/addon/tabcenter-reborn/) 12 | 13 | ### Files 14 | `1. chrome` folder 15 | 16 | `2. TabCenterReborn.css` 17 | 18 | --- 19 | # Installation 20 | 21 | !!! **Warning: Some colors are hard coded, also changes back and forward buttons and the like. Also like half the css is unused so fix it if you want** !!! 22 | 23 | 1. Enable the custom userChrome.css 24 | 1. Drag the `chrome` unzipped directory in your profiles 25 | 26 | 27 | 28 | 2. Enable the custom stylesheet for [Tab Center Reborn](https://addons.mozilla.org/en-CA/firefox/addon/tabcenter-reborn/) extension 29 | 1. Go to the addons settings 30 | 2. Click on prefrences for Tab Center Reborn 31 | 3. Click Prefrences 32 | 4. Scroll down to advanced and enable custom stylesheet 33 | 5. Paste in the contents of [TabCenterReborn.css](https://github.com/Tnixc/firefox-config/blob/main/TabCenterReborn.css) 34 | 35 | 3. Restart Firefox 36 | 4. Finally, I recommend installing [firefox color](https://color.firefox.com/) to match the theme. 37 | 38 | > [!TIP] 39 | > You can scroll through the tabs by holding ctrl and scrolling. I recommend you explore the settings of Tab Center Reborn 40 | > 41 | -------------------------------------------------------------------------------- /TabCenterReborn.css: -------------------------------------------------------------------------------- 1 | /* Overwrite some colours */ 2 | :root { 3 | --tab-separator: transparent; 4 | --tab-selected-line: transparent; 5 | --tablist-separator: #cccccc; 6 | } 7 | 8 | @media (prefers-color-scheme: dark) { 9 | :root { 10 | --tab-separator: transparent; 11 | --tab-active-background: rgb(66, 65, 77); 12 | --tab-active-text: rgb(251, 251, 254); 13 | --tab-text: #fbfbfe; 14 | --toolbar-background: rgb(43, 42, 51); 15 | --toolbar-text: rgb(251, 251, 254); 16 | --input-background: rgb(28, 27, 34); 17 | --input-border: transparent; 18 | --input-background-focus: rgb(66, 65, 77); 19 | --input-selected-text: rgb(251, 251, 254); 20 | --input-text: rgb(251, 251, 254); 21 | --input-text-focus: rgb(251, 251, 254); 22 | --identity-color-toolbar: rgb(251, 251, 254); 23 | --tablist-separator: #00000000; 24 | } 25 | } 26 | 27 | /* Move topmenu to bottom */ 28 | #topmenu { 29 | order: 2; 30 | background: transparent; 31 | border: none; 32 | margin: 3px; 33 | } 34 | #newtab { 35 | flex-grow: 1; 36 | } 37 | #newtab-icon { 38 | transform: translateX(3px); 39 | } 40 | #settings, 41 | #filterbox-icon, 42 | #filterbox-input { 43 | display: none; 44 | } 45 | #tablist-wrapper { 46 | padding-top: 6px; 47 | height: auto; 48 | margin: 0 6px; 49 | } 50 | .tab { 51 | padding: 0px !important; 52 | margin: 0px !important; 53 | gap: 0px !important; 54 | border-radius: 8px; 55 | } 56 | .active { 57 | box-shadow: inset 0 0 0 2px #b7bdf8 !important; 58 | } 59 | .tab-meta-image { 60 | transform: translateX(1px); 61 | } 62 | #pinnedtablist:not(.compact) .tab, 63 | #tablist .tab { 64 | border-color: transparent; 65 | } 66 | #tablist-wrapper { 67 | margin-left: 0px; 68 | padding-left: 6px; 69 | } 70 | #tablist { 71 | gap: 2px; 72 | margin-left: -6px; 73 | padding-left: 6px; 74 | } 75 | .tab { 76 | overflow: visible; 77 | } 78 | #tablist .tab[data-identity-color] .tab-context { 79 | box-shadow: none !important; 80 | } 81 | #tablist .tab.active[data-identity-color] .tab-context::before { 82 | top: 1px; 83 | bottom: 1px; 84 | } 85 | #bottomshadow, 86 | #topshadow { 87 | box-shadow: 0 0 10px 0 #252739; 88 | } 89 | #newtab:hover { 90 | background: #252739; 91 | } 92 | .tab-close { 93 | height: 28px !important; 94 | border-radius: 4px; 95 | transform: translateX(-4px); 96 | } 97 | .tab:not(.active):hover { 98 | background: #313243 !important; 99 | } 100 | .tab-pin { 101 | filter: none !important; 102 | position: absolute; 103 | right: 4px; 104 | opacity: 0; 105 | transition: 100ms; 106 | background: #1D1C2D; 107 | z-index: 999; 108 | padding: 5px; 109 | transform: scaleX(-1); 110 | } 111 | 112 | body:hover .tab-pin { 113 | opacity: 1; 114 | } 115 | 116 | #pinnedtablist { 117 | padding-bottom: 6px; 118 | position: relative; 119 | } 120 | #pinnedtablist::after { 121 | position: absolute; 122 | content: ""; 123 | left: 0; 124 | width: 100%; 125 | bottom: 1px; 126 | height: 2px; 127 | background-color: #252739; 128 | border-radius: 999px; 129 | } 130 | /* Purple */ 131 | div[data-identity-color="purple"] { 132 | position: relative; 133 | } 134 | 135 | div[data-identity-color="purple"]::after { 136 | content: ''; 137 | position: absolute; 138 | inset: 0; 139 | border-radius: 6px; 140 | z-index: -1; 141 | opacity: 0.1; 142 | background-color: var(--uc-identity-purple)!important; 143 | } 144 | div[data-identity-color="blue"] { 145 | position: relative; 146 | } 147 | 148 | div[data-identity-color="blue"]::after { 149 | content: ''; 150 | position: absolute; 151 | inset: 0; 152 | border-radius: 6px; 153 | z-index: -1; 154 | opacity: 0.1; 155 | background-color: var(--uc-identity-blue)!important; 156 | } 157 | 158 | div[data-identity-color="blue"]::before { 159 | content: ''; 160 | position: absolute; 161 | left: 0; 162 | top: 3px; 163 | bottom: 3px; 164 | width: 3px; 165 | border-radius: 4px; 166 | z-index: 1; 167 | background-color: var(--uc-identity-blue)!important; 168 | transition: 0.125s ease-in-out; 169 | } 170 | 171 | div[data-identity-color="blue"].active::before { 172 | content: ''; 173 | position: absolute; 174 | left: -4px; 175 | top: 3px; 176 | bottom: 3px; 177 | width: 3px; 178 | border-radius: 4px; 179 | z-index: 1; 180 | background-color: var(--uc-identity-blue)!important; 181 | } 182 | 183 | div[data-identity-color="purple"]::before { 184 | content: ''; 185 | position: absolute; 186 | left: 0; 187 | top: 3px; 188 | bottom: 3px; 189 | width: 3px; 190 | border-radius: 4px; 191 | z-index: 1; 192 | background-color: var(--uc-identity-purple)!important; 193 | transition: 0.125s ease-in-out; 194 | } 195 | 196 | div[data-identity-color="purple"].active::before { 197 | content: ''; 198 | position: absolute; 199 | left: -4px; 200 | top: 3px; 201 | bottom: 3px; 202 | width: 3px; 203 | border-radius: 4px; 204 | z-index: 1; 205 | background-color: var(--uc-identity-purple)!important; 206 | } 207 | 208 | /* Pink */ 209 | div[data-identity-color="pink"] { 210 | position: relative; 211 | } 212 | 213 | div[data-identity-color="pink"]::after { 214 | content: ''; 215 | position: absolute; 216 | inset: 0; 217 | border-radius: 6px; 218 | z-index: -1; 219 | opacity: 0.1; 220 | background-color: var(--uc-identity-pink)!important; 221 | } 222 | 223 | div[data-identity-color="pink"]::before { 224 | content: ''; 225 | position: absolute; 226 | left: 0; 227 | top: 3px; 228 | bottom: 3px; 229 | width: 3px; 230 | border-radius: 4px; 231 | z-index: 1; 232 | background-color: var(--uc-identity-pink)!important; 233 | transition: 0.125s ease-in-out; 234 | } 235 | 236 | div[data-identity-color="pink"].active::before { 237 | content: ''; 238 | position: absolute; 239 | left: -4px; 240 | top: 3px; 241 | bottom: 3px; 242 | width: 3px; 243 | border-radius: 4px; 244 | z-index: 1; 245 | background-color: var(--uc-identity-pink)!important; 246 | } 247 | 248 | /* Red */ 249 | div[data-identity-color="red"] { 250 | position: relative; 251 | } 252 | 253 | div[data-identity-color="red"]::after { 254 | content: ''; 255 | position: absolute; 256 | inset: 0; 257 | border-radius: 6px; 258 | z-index: -1; 259 | opacity: 0.1; 260 | background-color: var(--uc-identity-red)!important; 261 | } 262 | 263 | div[data-identity-color="red"]::before { 264 | content: ''; 265 | position: absolute; 266 | left: 0; 267 | top: 3px; 268 | bottom: 3px; 269 | width: 3px; 270 | border-radius: 4px; 271 | z-index: 1; 272 | background-color: var(--uc-identity-red)!important; 273 | transition: 0.125s ease-in-out; 274 | } 275 | 276 | div[data-identity-color="red"].active::before { 277 | content: ''; 278 | position: absolute; 279 | left: -4px; 280 | top: 3px; 281 | bottom: 3px; 282 | width: 3px; 283 | border-radius: 4px; 284 | z-index: 1; 285 | background-color: var(--uc-identity-red)!important; 286 | } 287 | 288 | /* Orange */ 289 | div[data-identity-color="orange"] { 290 | position: relative; 291 | } 292 | 293 | div[data-identity-color="orange"]::after { 294 | content: ''; 295 | position: absolute; 296 | inset: 0; 297 | border-radius: 6px; 298 | z-index: -1; 299 | opacity: 0.1; 300 | background-color: var(--uc-identity-orange)!important; 301 | } 302 | 303 | div[data-identity-color="orange"]::before { 304 | content: ''; 305 | position: absolute; 306 | left: 0; 307 | top: 3px; 308 | bottom: 3px; 309 | width: 3px; 310 | border-radius: 4px; 311 | z-index: 1; 312 | background-color: var(--uc-identity-orange)!important; 313 | transition: 0.125s ease-in-out; 314 | } 315 | 316 | div[data-identity-color="orange"].active::before { 317 | content: ''; 318 | position: absolute; 319 | left: -4px; 320 | top: 3px; 321 | bottom: 3px; 322 | width: 3px; 323 | border-radius: 4px; 324 | z-index: 1; 325 | background-color: var(--uc-identity-orange)!important; 326 | } 327 | 328 | /* Yellow */ 329 | div[data-identity-color="yellow"] { 330 | position: relative; 331 | } 332 | 333 | div[data-identity-color="yellow"]::after { 334 | content: ''; 335 | position: absolute; 336 | inset: 0; 337 | border-radius: 6px; 338 | z-index: -1; 339 | opacity: 0.1; 340 | background-color: var(--uc-identity-yellow)!important; 341 | } 342 | 343 | div[data-identity-color="yellow"]::before { 344 | content: ''; 345 | position: absolute; 346 | left: 0; 347 | top: 3px; 348 | bottom: 3px; 349 | width: 3px; 350 | border-radius: 4px; 351 | z-index: 1; 352 | background-color: var(--uc-identity-yellow)!important; 353 | transition: 0.125s ease-in-out; 354 | } 355 | 356 | div[data-identity-color="yellow"].active::before { 357 | content: ''; 358 | position: absolute; 359 | left: -4px; 360 | top: 3px; 361 | bottom: 3px; 362 | width: 3px; 363 | border-radius: 4px; 364 | z-index: 1; 365 | background-color: var(--uc-identity-yellow)!important; 366 | } 367 | 368 | /* Green */ 369 | div[data-identity-color="green"] { 370 | position: relative; 371 | } 372 | 373 | div[data-identity-color="green"]::after { 374 | content: ''; 375 | position: absolute; 376 | inset: 0; 377 | border-radius: 6px; 378 | z-index: -1; 379 | opacity: 0.1; 380 | background-color: var(--uc-identity-green)!important; 381 | } 382 | 383 | div[data-identity-color="green"]::before { 384 | content: ''; 385 | position: absolute; 386 | left: 0; 387 | top: 3px; 388 | bottom: 3px; 389 | width: 3px; 390 | border-radius: 4px; 391 | z-index: 1; 392 | background-color: var(--uc-identity-green)!important; 393 | transition: 0.125s ease-in-out; 394 | } 395 | 396 | div[data-identity-color="green"].active::before { 397 | content: ''; 398 | position: absolute; 399 | left: -4px; 400 | top: 3px; 401 | bottom: 3px; 402 | width: 3px; 403 | border-radius: 4px; 404 | z-index: 1; 405 | background-color: var(--uc-identity-green)!important; 406 | } 407 | 408 | /* Turquoise */ 409 | div[data-identity-color="turquoise"] { 410 | position: relative; 411 | } 412 | 413 | div[data-identity-color="turquoise"]::after { 414 | content: ''; 415 | position: absolute; 416 | inset: 0; 417 | border-radius: 6px; 418 | z-index: -1; 419 | opacity: 0.1; 420 | background-color: var(--uc-identity-turquoise)!important; 421 | } 422 | 423 | div[data-identity-color="turquoise"]::before { 424 | content: ''; 425 | position: absolute; 426 | left: 0; 427 | top: 3px; 428 | bottom: 3px; 429 | width: 3px; 430 | border-radius: 4px; 431 | z-index: 1; 432 | background-color: var(--uc-identity-turquoise)!important; 433 | transition: 0.125s ease-in-out; 434 | } 435 | 436 | div[data-identity-color="turquoise"].active::before { 437 | content: ''; 438 | position: absolute; 439 | left: -4px; 440 | top: 3px; 441 | bottom: 3px; 442 | width: 3px; 443 | border-radius: 4px; 444 | z-index: 1; 445 | background-color: var(--uc-identity-turquoise)!important; 446 | } 447 | -------------------------------------------------------------------------------- /chrome/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tnixc/firefox-config/70874d5eab359439576eb6b830012a8036895aa8/chrome/.DS_Store -------------------------------------------------------------------------------- /chrome/_config.css: -------------------------------------------------------------------------------- 1 | @import url("./palette/catppuccin-frappe.css"); 2 | 3 | :root { 4 | --uc-tab-min-height: 32px; 5 | --uc-tab-inactive-max-width: calc(225px / 2); 6 | --uc-tab-border-radius: 8px; 7 | --uc-tab-margin: 4px; 8 | --uc-tab-outline-width: 2px; 9 | --uc-tab-inactive-opacity: 0.55; 10 | 11 | --uc-urlbar-box-text-color: var(--toolbarbutton-icon-fill); 12 | --uc-urlbar-box-hover-bgcolor: var(--lwt-toolbarbutton-icon-fill-attention); 13 | --uc-urlbar-box-active-bgcolor: color-mix( 14 | in hsl, 15 | var(--toolbarbutton-icon-fill) 90%, 16 | var(--tabpanel-background-color) 17 | ); 18 | --uc-urlbar-box-hover-text-color: var(--tabpanel-background-color); 19 | 20 | --uc-focus-outline-color: var(--toolbar-field-focus-border-color); 21 | 22 | --uc-toolbarbutton-badge-bgcolor: var( 23 | --lwt-toolbarbutton-icon-fill-attention 24 | ); 25 | --uc-toolbarbutton-badge-color: var(--tabpanel-background-color); 26 | --uc-toolbarbutton-border-radius: 8px; 27 | 28 | /* --uc-menu-background: var(--arrowpanel-background); 29 | --uc-menu-color: var(--arrowpanel-color); 30 | --uc-menu-border-color: var(--arrowpanel-border-color); 31 | --uc-menuitem-hover-background-color: color-mix( 32 | in srgb, 33 | currentColor 11%, 34 | transparent 35 | ); 36 | --uc-menu-disabled-color: var(--panel-disabled-color); 37 | --uc-menuitem-disabled-hover-background-color: var( 38 | --uc-menuitem-hover-background-color 39 | ); */ 40 | 41 | --uc-bookmark-height: 20px; /* Might need to adjust if the toolbar has other buttons */ 42 | --uc-bookmark-padding: 4px; /* Vertical padding to be applied to bookmarks */ 43 | --uc-bookmark-autohide-delay: 300ms; 44 | 45 | /* 0deg = "show" ; 90deg = "hide" ; Set the following to control when bookmarks are shown */ 46 | --uc-bookmark-autohide-focus-rotation: 90deg; /* urlbar is focused */ 47 | --uc-bookmark-autohide-hover-rotation: 0deg; /* cursor is over the toolbar area */ 48 | 49 | --uc-findbar-min-width: 225px; 50 | --uc-findbar-max-width: 400px; 51 | --uc-findbar-height: 22px; 52 | --uc-findbar-textbox-bg-transition-duration: 200ms; 53 | 54 | /* identity colors */ 55 | --uc-identity-toolbar: var(--ctp-text); 56 | --uc-identity-blue: var(--ctp-sapphire); 57 | --uc-identity-turquoise: var(--ctp-teal); 58 | --uc-identity-green: var(--ctp-green); 59 | --uc-identity-yellow: var(--ctp-yellow); 60 | --uc-identity-orange: var(--ctp-peach); 61 | --uc-identity-red: var(--ctp-red); 62 | --uc-identity-pink: var(--ctp-pink); 63 | --uc-identity-purple: var(--ctp-mauve); 64 | } 65 | -------------------------------------------------------------------------------- /chrome/components/_reassign.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --tab-min-height: var(--uc-tab-min-height, 32px) !important; 3 | --tab-border-radius: var(--uc-tab-border-radius, 8px) !important; 4 | 5 | --toolbarbutton-border-radius: var( 6 | --uc-toolbarbutton-border-radius, 7 | 8px 8 | ) !important; 9 | 10 | --urlbar-box-hover-bgcolor: var( 11 | --uc-urlbar-box-hover-bgcolor, 12 | var(--button-hover-bgcolor) 13 | ) !important; 14 | --urlbar-box-active-bgcolor: var( 15 | --uc-urlbar-box-active-bgcolor, 16 | var(--button-active-bgcolor) 17 | ) !important; 18 | --urlbar-box-hover-text-color: var( 19 | --uc-urlbar-box-hover-text-color, 20 | var(--urlbar-box-text-color) 21 | ) !important; 22 | /* --urlbar-box-focus-bgcolor: var(--uc-urlbar-box-focus-bgcolor, var(--button-bgcolor)) !important; */ 23 | 24 | --focus-outline-color: var(--uc-focus-outline-color) !important; 25 | } 26 | 27 | /***** usercontext.css *****/ 28 | .identity-color-toolbar { 29 | --identity-tab-color: var( 30 | --uc-identity-toolbar, 31 | var(--toolbar-field-color) 32 | ) !important; 33 | --identity-icon-color: var( 34 | --uc-identity-toolbar, 35 | var(--toolbar-field-color) 36 | ) !important; 37 | } 38 | 39 | .identity-color-blue { 40 | --identity-tab-color: var(--uc-identity-blue, #37adff) !important; 41 | --identity-icon-color: var(--uc-identity-blue, #37adff) !important; 42 | } 43 | 44 | .identity-color-turquoise { 45 | --identity-tab-color: var(--uc-identity-turquoise, #00c79a) !important; 46 | --identity-icon-color: var(--uc-identity-turquoise, #00c79a) !important; 47 | } 48 | 49 | .identity-color-green { 50 | --identity-tab-color: var(--uc-identity-green, #51cd00) !important; 51 | --identity-icon-color: var(--uc-identity-green, #51cd00) !important; 52 | } 53 | 54 | .identity-color-yellow { 55 | --identity-tab-color: var(--uc-identity-yellow, #ffcb00) !important; 56 | --identity-icon-color: var(--uc-identity-yellow, #ffcb00) !important; 57 | } 58 | 59 | .identity-color-orange { 60 | --identity-tab-color: var(--uc-identity-orange, #ff9f00) !important; 61 | --identity-icon-color: var(--uc-identity-orange, #ff9f00) !important; 62 | } 63 | 64 | .identity-color-red { 65 | --identity-tab-color: var(--uc-identity-red, #ff613d) !important; 66 | --identity-icon-color: var(--uc-identity-red, #ff613d) !important; 67 | } 68 | 69 | .identity-color-pink { 70 | --identity-tab-color: var(--uc-identity-pink, #ff4bda) !important; 71 | --identity-icon-color: var(--uc-identity-pink, #ff4bda) !important; 72 | } 73 | 74 | .identity-color-purple { 75 | --identity-tab-color: var(--uc-identity-purple, #af51f5) !important; 76 | --identity-icon-color: var(--uc-identity-purple, #af51f5) !important; 77 | } 78 | 79 | /***** popup.css *****/ 80 | /* panel, 81 | #PersonalToolbar menupopup, 82 | #mainPopupSet menupopup { 83 | --menu-color: var(--uc-menu-color) !important; 84 | --menu-background-color: var(--uc-menu-background) !important; 85 | --menu-border-color: var(--uc-menu-border-color) !important; 86 | --menuitem-hover-background-color: var( 87 | --uc-menuitem-hover-background-color 88 | ) !important; 89 | --menu-disabled-color: var(--uc-menu-disabled-color) !important; 90 | --menuitem-disabled-hover-background-color: var( 91 | --uc-menuitem-disabled-hover-background-color 92 | ) !important; 93 | } */ 94 | -------------------------------------------------------------------------------- /chrome/components/bookmarks-bar.css: -------------------------------------------------------------------------------- 1 | /* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_bookmarks_toolbar.css made available under Mozilla Public License v. 2.0 2 | See the above repository for updates as well as full license text. */ 3 | 4 | :root[uidensity="compact"] #PersonalToolbar { 5 | --uc-bookmark-padding: 1px; 6 | } 7 | 8 | :root[uidensity="touch"] #PersonalToolbar { 9 | --uc-bookmark-padding: 7px; 10 | } 11 | 12 | #PersonalToolbar:not([customizing]) { 13 | position: relative; 14 | margin-bottom: calc( 15 | 0px - var(--uc-bookmark-height, 20px) - 2 * var(--uc-bookmark-padding, 20px) 16 | ); 17 | transform: rotateX(90deg); 18 | transform-origin: top; 19 | transition: transform 135ms linear var(--uc-bookmark-autohide-delay, 600ms) !important; 20 | z-index: 1; 21 | backdrop-filter: blur(20px) !important; 22 | /* The following properties should allow themes with trasparent toolbars to work */ 23 | background-repeat: no-repeat, no-repeat, var(--lwt-background-tiling); 24 | 25 | --uc-bg-y: calc( 26 | -2 * ( 27 | var(--tab-block-margin) + var(--toolbarbutton-inner-padding) + 28 | var(--toolbarbutton-outer-padding) 29 | ) - var(--tab-min-height) - 16px - var(--bookmark-block-padding) 30 | ); 31 | background-position: top left, top left, 32 | var(--lwt-background-alignment, top left); 33 | background-position-y: top, top, var(--uc-bg-y), var(--uc-bg-y), 34 | var(--uc-bg-y); 35 | background-image: var(--toolbar-bgimage), 36 | linear-gradient(var(--toolbar-bgcolor), var(--toolbar-bgcolor)), 37 | var(--lwt-header-image, var(--lwt-additional-images)) !important; 38 | } 39 | 40 | #PlacesToolbarItems > .bookmark-item, 41 | #OtherBookmarks, 42 | #PersonalToolbar > #import-button { 43 | padding-block: var(--uc-bookmark-padding) !important; 44 | } 45 | 46 | #nav-bar:focus-within + #PersonalToolbar { 47 | transition-delay: 100ms !important; 48 | transform: rotateX(var(--uc-bookmark-autohide-focus-rotation, 0)); 49 | } 50 | 51 | #navigator-toolbox:hover > #PersonalToolbar { 52 | transition-delay: 100ms !important; 53 | transform: rotateX(var(--uc-bookmark-autohide-hover-rotation, 0)); 54 | } 55 | 56 | #navigator-toolbox:hover > #nav-bar:focus-within + #PersonalToolbar { 57 | transform: rotateX(0); 58 | } 59 | -------------------------------------------------------------------------------- /chrome/components/extensions.css: -------------------------------------------------------------------------------- 1 | .toolbarbutton-badge { 2 | background-color: var(--uc-toolbarbutton-badge-bgcolor) !important; 3 | color: var(--uc-toolbarbutton-badge-color) !important; 4 | /* bc hydrus' "Post" label is too long */ 5 | /* max-width: 27px !important; */ 6 | } 7 | 8 | /***** ICONS *****/ 9 | 10 | /* tree-style-tabs */ 11 | .webextension-browser-action[data-extensionid="treestyletab@piro.sakura.ne.jp"i] 12 | .toolbarbutton-icon, 13 | #sidebarMenu-popup 14 | #button_treestyletab_piro_sakura_ne_jp-sidebar-action:not([checked="true"]) { 15 | list-style-image: url("../resources/extensions/tree-style-tabs-32.svg") !important; 16 | } 17 | 18 | .eom-addon-button[data-extensionid="treestyletab@piro.sakura.ne.jp"i] 19 | .toolbarbutton-icon, 20 | menupopup#viewSidebarMenu 21 | menuitem.menuitem-iconic.webextension-menuitem#menu_treestyletab_piro_sakura_ne_jp-sidebar-action[style]:is( 22 | [type="checkbox"], 23 | [type="radio"] 24 | ):not([checked="true"]) { 25 | list-style-image: url("../resources/extensions/tree-style-tabs.svg") !important; 26 | } 27 | 28 | /* SVG gobbler */ 29 | :is( 30 | .webextension-browser-action, 31 | .eom-addon-button 32 | )[data-extensionid="{7962ff4a-5985-4cf2-9777-4bb642ad05b8}"i] 33 | .toolbarbutton-icon { 34 | list-style-image: url("../resources/extensions/svg-gobbler.svg") !important; 35 | } 36 | 37 | /* return youtube dislikes */ 38 | :is( 39 | .webextension-browser-action, 40 | .eom-addon-button 41 | )[data-extensionid="{762f9885-5a13-4abd-9c77-433dcd38b8fd}"] 42 | .toolbarbutton-icon { 43 | list-style-image: url("../resources/extensions/dislike.svg") !important; 44 | transform: scaleX(-1); 45 | } 46 | 47 | /* cookie remover */ 48 | :is( 49 | .webextension-browser-action, 50 | .eom-addon-button 51 | )[data-extensionid="{3507f56d-2ef5-45c1-b6d7-5297a0ba7642}"i] 52 | .toolbarbutton-icon { 53 | list-style-image: url("../resources/extensions/3rdpartycookies-disabled.svg"); 54 | } 55 | 56 | /* i don't care about cookies */ 57 | :is( 58 | .webextension-browser-action, 59 | .eom-addon-button 60 | )[data-extensionid="jid1-KKzOGWgsW3Ao4Q@jetpack"i] 61 | .toolbarbutton-icon, 62 | :is( 63 | .webextension-browser-action, 64 | .eom-addon-button 65 | )[data-extensionid="idcac-pub@guus.ninja"i] 66 | .toolbarbutton-icon { 67 | list-style-image: url("../resources/extensions/3rdpartycookies.svg"); 68 | } 69 | 70 | /* dark reader */ 71 | :is( 72 | .webextension-browser-action, 73 | .eom-addon-button 74 | )[data-extensionid="addon@darkreader.org"i] 75 | .toolbarbutton-icon { 76 | list-style-image: url("../resources/extensions/darkmode.svg"); 77 | } 78 | 79 | /* dark reader's popup, corresponds to colors set in userContent.css */ 80 | #customizationui-widget-panel[viewId="PanelUI-webext-addon_darkreader_org-browser-action-view"] { 81 | --arrowpanel-background: var(--tooltip-bgcolor) !important; 82 | --arrowpanel-border-color: var(--uc-menu-border-color) !important; 83 | } 84 | 85 | /* uBlock origin */ 86 | :is( 87 | .webextension-browser-action, 88 | .eom-addon-button 89 | )[data-extensionid="uBlock0@raymondhill.net"i] 90 | .toolbarbutton-icon { 91 | list-style-image: url("../resources/extensions/show-password.svg"); 92 | } 93 | 94 | /* uBlock origin disabled on this site */ 95 | :is( 96 | .webextension-browser-action, 97 | .eom-addon-button 98 | )[data-extensionid="uBlock0@raymondhill.net"i][style*="icon_16-off.png"] 99 | .toolbarbutton-icon { 100 | list-style-image: url("../resources/extensions/hide-password.svg"); 101 | } 102 | 103 | /* violentmonkey/tampermonkey, for injecting scripts into content windows */ 104 | :is(.webextension-browser-action, .eom-addon-button)[label^="Violentmonkey"] 105 | .toolbarbutton-icon, 106 | :is( 107 | .webextension-browser-action, 108 | .eom-addon-button 109 | )[data-extensionid="{aecec67f-0d10-4fa7-b7c7-609a2db280cf}"i] 110 | .toolbarbutton-icon, 111 | :is(.webextension-browser-action, .eom-addon-button)[label^="Tampermonkey"] 112 | .toolbarbutton-icon, 113 | :is( 114 | .webextension-browser-action, 115 | .eom-addon-button 116 | )[data-extensionid="{db4c0b1f-a516-4c61-85ba-af46ccfc6d13}"i] 117 | .toolbarbutton-icon { 118 | list-style-image: url("../resources/extensions/tool-webconsole.svg"); 119 | } 120 | 121 | .tabbrowser-tab[label$="Violentmonkey"] .tab-icon-image, 122 | .tabbrowser-tab[label$="Tampermonkey"] .tab-icon-image { 123 | content: url("../resources/extensions/tool-webconsole.svg") !important; 124 | fill: currentColor !important; 125 | } 126 | 127 | /* stylus, for injecting inline CSS into content windows. more useful than 128 | userContent.css when dealing with very complex websites that need 129 | elaborate/compiled stylesheets */ 130 | :is(.webextension-browser-action, .eom-addon-button)[label="Stylus"] 131 | .toolbarbutton-icon, 132 | :is( 133 | .webextension-browser-action, 134 | .eom-addon-button 135 | )[data-extensionid="{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}"i] 136 | .toolbarbutton-icon { 137 | list-style-image: url("../resources/extensions/stylus.svg"); 138 | } 139 | 140 | /* sponsorblock */ 141 | :is( 142 | .webextension-browser-action, 143 | .eom-addon-button 144 | )[data-extensionid="sponsorBlocker@ajay.app"] 145 | .toolbarbutton-icon { 146 | list-style-image: url("../resources/extensions/sponsorblock.svg"); 147 | } 148 | 149 | /* bypass paywalls */ 150 | :is( 151 | .webextension-browser-action, 152 | .eom-addon-button 153 | )[data-extensionid="bypasspaywalls@bypasspaywalls"] 154 | .toolbarbutton-icon { 155 | list-style-image: url("../resources/extensions/bypass-paywalls.svg"); 156 | } 157 | 158 | /* react devtools */ 159 | :is( 160 | .webextension-browser-action, 161 | .eom-addon-button 162 | )[data-extensionid="@react-devtools"] 163 | .toolbarbutton-icon { 164 | list-style-image: url("../resources/extensions/react.svg"); 165 | } 166 | 167 | /* invert github's black icon */ 168 | :is(.menu-iconic-icon, .toolbarbutton-icon, .urlbarView-favicon):is([src^="page-icon:https://github.com"], [src^="page-icon:http://github.com"]) 169 | { 170 | background-image: url("../resources/extensions/github.svg") !important; 171 | background-size: 16px !important; 172 | background-repeat: no-repeat !important; 173 | background-position: center !important; 174 | padding-inline: 16px 0 !important; 175 | box-sizing: border-box !important; 176 | } 177 | 178 | /* multi-container tabs */ 179 | :is( 180 | .webextension-browser-action, 181 | .eom-addon-button 182 | )[data-extensionid="@testpilot-containers"i] 183 | .toolbarbutton-icon { 184 | list-style-image: url("../resources/extensions/container-base.svg"); 185 | } 186 | 187 | :is( 188 | .pageAction-panel-button, 189 | .urlbar-page-action 190 | )[actionid="_testpilot-containers"] { 191 | --pageAction-image-16px: url("../resources/extensions/container-go.svg") !important; 192 | --pageAction-image-32px: url("../resources/extensions/container-go.svg") !important; 193 | list-style-image: url("../resources/extensions/container-go.svg") !important; 194 | } 195 | 196 | /* canvasblocker */ 197 | :is(.pageAction-panel-button, .urlbar-page-action)[actionid^="canvasblocker_"], 198 | :is( 199 | .webextension-browser-action, 200 | .eom-addon-button 201 | )[data-extensionid="CanvasBlocker@kkapsner.de"] { 202 | --pageAction-image-16px: url("../resources/extensions/fingerprint.svg") !important; 203 | --pageAction-image-32px: url("../resources/extensions/fingerprint.svg") !important; 204 | list-style-image: url("../resources/extensions/fingerprint.svg") !important; 205 | opacity: 0.9; 206 | } 207 | 208 | /* hydrus */ 209 | :is( 210 | .webextension-browser-action, 211 | .eom-addon-button 212 | )[data-extensionid="hydruscompanion@hydruscompanion.hydruscompanion"] { 213 | --pageAction-image-16px: url("../resources/extensions/hydrus.svg") !important; 214 | --pageAction-image-32px: url("../resources/extensions/hydrus.svg") !important; 215 | list-style-image: url("../resources/extensions/hydrus.svg") !important; 216 | transform: scale(1.08); 217 | } 218 | 219 | :is( 220 | .webextension-browser-action, 221 | .eom-addon-button 222 | )[data-extensionid="hydruscompanion@hydruscompanion.hydruscompanion"][badge="Post"] 223 | .toolbarbutton-badge { 224 | font-size: 8px !important; 225 | } 226 | 227 | /* yomichan */ 228 | :is( 229 | .webextension-browser-action, 230 | .eom-addon-button 231 | )[data-extensionid="alex@foosoft.net"] { 232 | --pageAction-image-16px: url("../resources/extensions/yomichan.svg") !important; 233 | --pageAction-image-32px: url("../resources/extensions/yomichan.svg") !important; 234 | list-style-image: url("../resources/extensions/yomichan.svg") !important; 235 | /* transform: scale(0.99); */ 236 | } 237 | -------------------------------------------------------------------------------- /chrome/components/findbar.css: -------------------------------------------------------------------------------- 1 | @keyframes findbar-down { 2 | 0% { 3 | opacity: 0; 4 | transform: translateY(calc(0px - var(--uc-findbar-height) - 16px)); 5 | } 6 | 66.6% { 7 | opacity: 0.666; 8 | transform: translateY(0); 9 | } 10 | 100% { 11 | opacity: 1; 12 | } 13 | } 14 | 15 | .browserContainer { 16 | position: relative; 17 | } 18 | 19 | .browserContainer > findbar { 20 | -moz-box-ordinal-group: 0; 21 | position: absolute !important; 22 | display: flex !important; 23 | visibility: visible !important; 24 | flex-flow: row nowrap; 25 | align-items: center; 26 | top: 0 !important; 27 | left: 1.5em; 28 | min-height: unset !important; 29 | padding-block: 8px !important; 30 | width: calc(40% - 100px) !important; 31 | min-width: var(--uc-findbar-min-width, 225px) !important; 32 | max-width: var(--uc-findbar-max-width, 400px) !important; 33 | background-color: var(--toolbar-bgcolor) !important; 34 | border: 0px solid transparent !important; 35 | border-bottom-left-radius: 5px !important; 36 | border-bottom-right-radius: 5px !important; 37 | border-top: none !important; 38 | box-shadow: 0px 0px 7px -2px hsla(240, 4%, 0%, 0.6), 39 | 0px 0px 15px 0px hsla(0, 0%, 0%, 0.2) !important; 40 | background-image: none !important; 41 | transition-property: transform, opacity, width, left, right !important; 42 | transition-duration: 0.2s, 0.3s, 0.2s, 0.2s, 0.2s !important; 43 | transition-delay: 0s, 0s, 0s, 0s, 0s !important; 44 | transition-timing-function: ease-in-out, ease-in-out, ease-in-out, ease-in-out, 45 | ease-in-out !important; 46 | z-index: 1 !important; 47 | animation: 0.3s ease-in-out findbar-down; 48 | overflow: hidden !important; 49 | transform-style: preserve-3d !important; 50 | backface-visibility: hidden !important; 51 | } 52 | 53 | @media screen and not (min-width: 500px) { 54 | .browserContainer > findbar { 55 | width: 100% !important; 56 | right: 0 !important; 57 | max-width: unset !important; 58 | left: 0 !important; 59 | right: 0 !important; 60 | border-radius: 0 !important; 61 | } 62 | 63 | #sidebar-box[hidden="true"] ~ #appcontent findbar, 64 | #sidebar-box:not([positionend="true"]) ~ #appcontent findbar { 65 | right: 0 !important; 66 | } 67 | } 68 | 69 | .findbar-container { 70 | -moz-box-orient: horizontal !important; 71 | height: var(--uc-findbar-height, 22px) !important; 72 | min-width: revert !important; 73 | width: 100% !important; 74 | overflow: revert !important; 75 | } 76 | 77 | findbar[hidden] { 78 | transform: translateY(calc(0px - var(--uc-findbar-height, 22px) - 16px)); 79 | pointer-events: none; 80 | opacity: 0 !important; 81 | transition-duration: 0.3s, 0.2s, 0.2s, 0.2s, 0.2s !important; 82 | } 83 | 84 | #sidebar-box[hidden="true"] ~ #appcontent findbar, 85 | #sidebar-box:not([positionend="true"]) ~ #appcontent findbar { 86 | left: auto !important; 87 | right: 1.5em !important; 88 | } 89 | 90 | .findbar-closebutton { 91 | padding: 0 !important; 92 | margin-inline: 7px 0 !important; 93 | margin-block: 0 !important; 94 | height: var(--uc-findbar-height, 22px) !important; 95 | width: var(--uc-findbar-height, 22px) !important; 96 | border-radius: var(--toolbarbutton-border-radius) !important; 97 | -moz-box-ordinal-group: 2 !important; 98 | } 99 | 100 | .findbar-closebutton .toolbarbutton-icon { 101 | fill-opacity: 0 !important; 102 | width: 12px !important; 103 | height: 12px !important; 104 | list-style-image: url("../resources/controls/close.svg") !important; 105 | /* stroke: white !important; */ 106 | -moz-context-properties: fill, fill-opacity, stroke !important; 107 | } 108 | 109 | .findbar-closebutton:is(:hover, :focus-visible):not([disabled]) { 110 | background-color: var(--toolbarbutton-hover-background) !important; 111 | } 112 | 113 | .findbar-closebutton:is(:hover, :focus-visible):not([disabled]):active { 114 | background-color: var(--toolbarbutton-active-background) !important; 115 | } 116 | 117 | [anonid="findbar-textbox-wrapper"] { 118 | border-radius: var(--toolbarbutton-border-radius) !important; 119 | overflow: hidden !important; 120 | -moz-box-flex: 1 !important; 121 | } 122 | 123 | .findbar-textbox { 124 | border: none !important; 125 | transition: var(--uc-findbar-textbox-bg-transition-duration, 200ms) 126 | background-color !important; 127 | width: revert !important; 128 | border-radius: 0 !important; 129 | outline: none !important; 130 | height: var(--uc-findbar-height, 22px) !important; 131 | box-sizing: border-box !important; 132 | padding-inline: 6px !important; 133 | -moz-box-flex: 1 !important; 134 | } 135 | 136 | .findbar-textbox input > .anonymous-div { 137 | color: white !important; 138 | opacity: 1 !important; 139 | } 140 | 141 | .findbar-textbox { 142 | background-color: var(--toolbar-field-background-color) !important; 143 | color: var(--lwt-toolbar-field-color) !important; 144 | } 145 | 146 | .findbar-textbox::placeholder { 147 | color: var(--panel-description-color) !important; 148 | } 149 | 150 | .findbar-textbox:focus { 151 | background-color: var(--search-box-focus) !important; 152 | color: var(--lwt-toolbar-field-color) !important; 153 | } 154 | 155 | .findbar-textbox[status="notfound"] { 156 | background-color: var(--search-box-null) !important; 157 | color: var(--panel-description-color) !important; 158 | transition-duration: var( 159 | --findbar-textbox-bg-notfound-transition-duration, 160 | 300ms 161 | ) !important; 162 | transition-timing-function: ease-out !important; 163 | } 164 | 165 | .findbar-textbox[status="notfound"]:focus { 166 | color: var(--ui-text-80) !important; 167 | } 168 | 169 | [anonid="findbar-textbox-wrapper"]:focus-within 170 | .findbar-textbox:not([status="notfound"]) { 171 | background-color: var(--search-box-focus) !important; 172 | color: var(--lwt-toolbar-field-color) !important; 173 | } 174 | 175 | findbar .matches-indicator { 176 | background-color: var(--toolbar-field-background-color); 177 | transition: var(--uc-findbar-textbox-bg-transition-duration, 200ms) 178 | background-color; 179 | mask-image: linear-gradient(to right, transparent 0px, black 20px); 180 | line-height: var(--uc-findbar-height, 22px) !important; 181 | height: var(--uc-findbar-height, 22px) !important; 182 | } 183 | 184 | .findbar-textbox:focus ~ .matches-indicator { 185 | background-color: var(--search-box-focus); 186 | } 187 | 188 | .findbar-textbox[status="notfound"] ~ .matches-indicator { 189 | background-color: var(--search-box-null); 190 | transition-duration: var( 191 | --findbar-textbox-bg-notfound-transition-duration, 192 | 300ms 193 | ); 194 | transition-timing-function: ease-out; 195 | } 196 | 197 | [anonid="findbar-textbox-wrapper"]:focus-within 198 | .findbar-textbox:not([status="notfound"]) 199 | ~ .matches-indicator { 200 | background-color: var(--search-box-focus); 201 | } 202 | 203 | .findbar-find-previous, 204 | .findbar-find-next { 205 | border: none !important; 206 | padding: 0 !important; 207 | background: var(--toolbar-field-background-color) !important; 208 | fill: rgba(255, 255, 255, 1) !important; 209 | transition: var(--uc-findbar-textbox-bg-transition-duration, 200ms) 210 | background-color !important; 211 | } 212 | 213 | .findbar-find-previous > .toolbarbutton-icon, 214 | .findbar-find-next > .toolbarbutton-icon { 215 | background: none !important; 216 | padding: 0 !important; 217 | width: 12px !important; 218 | margin-inline: 2px !important; 219 | opacity: 0.5 !important; 220 | } 221 | 222 | [anonid="findbar-textbox-wrapper"] > :last-child > .toolbarbutton-icon { 223 | margin-inline-end: calc((var(--uc-findbar-height) - 16px) / 3) !important; 224 | } 225 | 226 | .findbar-find-previous { 227 | padding-inline: 0 !important; 228 | margin-inline: 0 !important; 229 | list-style-image: url("../resources/controls/menu-arrow-left-tiny.svg") !important; 230 | } 231 | 232 | .findbar-find-next { 233 | padding-inline: 0 !important; 234 | margin-inline: 0 !important; 235 | list-style-image: url("../resources/controls/menu-arrow-tiny.svg") !important; 236 | } 237 | 238 | :is(.findbar-find-previous, .findbar-find-next):not([disabled], [hidden]):is( 239 | :hover, 240 | :focus-visible 241 | ) 242 | > .toolbarbutton-icon { 243 | background: none !important; 244 | opacity: 1 !important; 245 | } 246 | 247 | :is(.findbar-entire-word, .findbar-case-sensitive):not([disabled], [hidden]):is( 248 | :hover, 249 | :focus-visible, 250 | [checked] 251 | ) 252 | :is(.toolbarbutton-icon, .checkbox-icon) { 253 | background: none !important; 254 | opacity: 0.8 !important; 255 | } 256 | 257 | :is( 258 | .findbar-find-previous, 259 | .findbar-find-next, 260 | .findbar-entire-word, 261 | .findbar-case-sensitive 262 | ):not([disabled], [hidden]):hover:active { 263 | box-shadow: none !important; 264 | } 265 | 266 | :is( 267 | .findbar-find-previous, 268 | .findbar-find-next, 269 | .findbar-entire-word, 270 | .findbar-case-sensitive 271 | ):not([disabled], [hidden]):where( 272 | [checked]:hover, 273 | [checked]:focus-visible, 274 | :hover:active, 275 | :focus-visible:hover 276 | ) 277 | :is(.toolbarbutton-icon, .checkbox-icon) { 278 | background: none !important; 279 | opacity: 1 !important; 280 | } 281 | 282 | .findbar-textbox[status="notfound"] 283 | ~ :is(.findbar-find-previous, .findbar-find-next) 284 | > .toolbarbutton-icon, 285 | .findbar-textbox[status="notfound"] 286 | ~ :is(.findbar-find-previous, .findbar-find-next) 287 | > .toolbarbutton-icon, 288 | :is( 289 | .findbar-find-previous, 290 | .findbar-find-next, 291 | .findbar-entire-word, 292 | .findbar-case-sensitive 293 | ):is([disabled="true"], [hidden]) 294 | :is(.toolbarbutton-icon, .checkbox-icon) { 295 | fill: rgba(255, 255, 255, 1) !important; 296 | opacity: 0.25 !important; 297 | } 298 | 299 | .findbar-textbox:focus 300 | ~ :is( 301 | .findbar-find-previous, 302 | .findbar-find-next, 303 | .findbar-entire-word, 304 | .findbar-case-sensitive 305 | ) { 306 | background-color: var(--search-box-focus) !important; 307 | } 308 | 309 | .findbar-textbox[status="notfound"] 310 | ~ :is( 311 | .findbar-find-previous, 312 | .findbar-find-next, 313 | .findbar-entire-word, 314 | .findbar-case-sensitive 315 | ) { 316 | background-color: var(--search-box-null) !important; 317 | transition: var( 318 | --findbar-textbox-bg-notfound-transition-duration, 319 | 300ms 320 | ) !important; 321 | transition-timing-function: ease-out !important; 322 | } 323 | 324 | .findbar-textbox[status="notfound"] 325 | ~ :is(.findbar-find-previous, .findbar-find-next) { 326 | -moz-user-focus: ignore !important; 327 | } 328 | 329 | .findbar-find-previous, 330 | .findbar-find-next, 331 | .findbar-entire-word, 332 | .findbar-case-sensitive { 333 | transition: var(--uc-findbar-textbox-bg-transition-duration, 200ms) 334 | background-color !important; 335 | } 336 | 337 | .findbar-entire-word, 338 | .findbar-case-sensitive { 339 | -moz-context-properties: fill, fill-opacity; 340 | padding-inline: 2px !important; 341 | appearance: none !important; 342 | border: none !important; 343 | margin: 0 !important; 344 | background: var(--toolbar-field-background-color) !important; 345 | fill: hsl(0, 0%, 100%) !important; 346 | border-radius: 0 !important; 347 | display: -moz-box !important; 348 | } 349 | 350 | [anonid="findbar-textbox-wrapper"] checkbox { 351 | opacity: 1 !important; 352 | } 353 | 354 | [anonid="findbar-textbox-wrapper"] checkbox[hidden]:not([disabled]) { 355 | pointer-events: none !important; 356 | -moz-user-focus: none !important; 357 | } 358 | 359 | .findbar-entire-word { 360 | list-style-image: url("../resources/controls/entire-word.svg"); 361 | } 362 | 363 | .findbar-case-sensitive { 364 | list-style-image: url("../resources/controls/case-sensitive.svg"); 365 | } 366 | 367 | :is(.findbar-entire-word, .findbar-case-sensitive) 368 | :is(.toolbarbutton-icon, .checkbox-icon) { 369 | margin: 0 !important; 370 | background: none !important; 371 | width: 16px !important; 372 | opacity: 0.4 !important; 373 | appearance: none !important; 374 | display: -moz-inline-box !important; 375 | } 376 | 377 | .findbar-textbox.minimal 378 | ~ :is( 379 | .findbar-case-sensitive, 380 | .findbar-entire-word, 381 | .findbar-find-previous, 382 | .findbar-find-next 383 | ) { 384 | display: none !important; 385 | } 386 | 387 | .findbar-textbox.minimal ~ .matches-indicator { 388 | margin-inline-end: 6px !important; 389 | } 390 | 391 | :is(.findbar-entire-word, .findbar-case-sensitive) 392 | :is(.checkbox-check, .checkbox-label) { 393 | display: none !important; 394 | } 395 | 396 | [anonid="findbar-textbox-wrapper"]:focus-within 397 | .findbar-textbox:not([status="notfound"]) 398 | ~ :is( 399 | .findbar-find-previous, 400 | .findbar-find-next, 401 | .findbar-entire-word, 402 | .findbar-case-sensitive 403 | ) { 404 | background-color: var(--search-box-focus) !important; 405 | transition: var(--uc-findbar-textbox-bg-transition-duration, 200ms) 406 | background-color !important; 407 | } 408 | 409 | [anonid="findbar-textbox-wrapper"] { 410 | outline: 0 solid transparent !important; 411 | transition: var(--textbox-outline-transition-duration, 100ms) outline ease-in !important; 412 | } 413 | 414 | [anonid="findbar-textbox-wrapper"]:focus-within { 415 | outline-width: 2px !important; 416 | outline-color: var( 417 | --search-box-focus-outline-color, 418 | -moz-accent-color 419 | ) !important; 420 | transition-duration: calc( 421 | var(--textbox-outline-transition-duration, 100ms) * 0.6 422 | ) !important; 423 | transition-timing-function: ease-out !important; 424 | } 425 | 426 | #findbar-close-container { 427 | display: none !important; 428 | } 429 | 430 | .findbar-find-status, 431 | .found-matches, 432 | .find-status-icon, 433 | .findbar-label, 434 | .findbar-highlight, 435 | .findbar-match-diacritics { 436 | display: none !important; 437 | } 438 | -------------------------------------------------------------------------------- /chrome/components/nav-bar.css: -------------------------------------------------------------------------------- 1 | /* https://www.reddit.com/r/FirefoxCSS/comments/myypur/how_can_i_remove_extension_tabliss_from_the */ 2 | .extensionPage#identity-box 3 | #identity-icon[tooltiptext*="Tabliss"] 4 | ~ #identity-icon-label { 5 | display: none !important; 6 | } 7 | 8 | #identity-box.extensionPage #identity-icon[tooltiptext*="Tabliss"], 9 | #urlbar[pageproxystate="invalid"] #identity-box #identity-icon, 10 | #tracking-protection-icon-container[hidden] 11 | ~ #identity-box[pageproxystate="valid"].notSecure:not( 12 | .chromeUI, 13 | .localResource 14 | ) 15 | #identity-icon { 16 | fill-opacity: var(--urlbar-icon-fill-opacity) !important; 17 | list-style-image: url("chrome://global/skin/icons/search-glass.svg") !important; 18 | } 19 | 20 | /* removes background but keeps it when hovered/active */ 21 | #identity-box.extensionPage > #identity-icon-box:has([tooltiptext*="Tabliss"]) { 22 | background-color: transparent !important; 23 | } 24 | 25 | #identity-box.extensionPage 26 | > #identity-icon-box:hover:not([open]):has([tooltiptext*="Tabliss"]) { 27 | background-color: var(--urlbar-box-hover-bgcolor) !important; 28 | } 29 | 30 | #identity-box.extensionPage 31 | > #identity-icon-box[open="true"]:has([tooltiptext*="Tabliss"]) { 32 | background-color: var(--urlbar-box-active-bgcolor) !important; 33 | } 34 | 35 | /* keeps icon location consistent */ 36 | #urlbar[usertyping="true"] 37 | #tracking-protection-icon-container[hidden] 38 | ~ #identity-box:has([tooltiptext*="Tabliss"]), 39 | #urlbar-input-container[pageproxystate="invalid"] 40 | #tracking-protection-icon-container[hidden] 41 | ~ #identity-box:has([tooltiptext*="Tabliss"]) { 42 | margin-inline-start: calc(var(--identity-box-margin-inline) - 2px); 43 | } 44 | 45 | /* removes shadow over nav bar */ 46 | /* #nav-bar:-moz-lwtheme { 47 | box-shadow: none !important; 48 | } */ 49 | 50 | /* makes it consistent with the focus width */ 51 | #urlbar-background, 52 | #searchbar { 53 | border-width: 2px !important; 54 | } 55 | 56 | .urlbar-icon, 57 | .urlbar-page-action { 58 | filter: none !important; 59 | } 60 | 61 | /* force text color? */ 62 | .urlbar-page-action, 63 | #urlbar-go-button, 64 | .search-go-button { 65 | color: var(--uc-urlbar-box-text-color) !important; 66 | } 67 | 68 | .urlbar-page-action:not([disabled]):hover, 69 | #urlbar-go-button:hover, 70 | .search-go-button:hover, 71 | .urlbar-page-action:not([disabled]):active, 72 | #urlbar-go-button:active, 73 | .search-go-button:active, 74 | .urlbar-page-action[open="true"]:not([disabled]) { 75 | color: var(--urlbar-box-hover-text-color) !important; 76 | } 77 | 78 | .urlbar-page-action:not([disabled]):active, 79 | #urlbar-go-button:active, 80 | .search-go-button:active { 81 | background-color: var(--urlbar-box-active-bgcolor) !important; 82 | } 83 | 84 | .urlbar-page-action:not([disabled]):hover > #star-button[starred], 85 | .urlbar-page-action:not([disabled]):active > #star-button[starred] { 86 | fill: var(--urlbar-box-hover-text-color) !important; 87 | } 88 | 89 | /***** NAV ICONS CHANGE *****/ 90 | 91 | #back-button, 92 | #forward-button { 93 | padding: 0 !important; 94 | } 95 | 96 | #back-button > .toolbarbutton-icon { 97 | list-style-image: url("../resources/nav-bar/back.svg") !important; 98 | } 99 | 100 | #forward-button > .toolbarbutton-icon { 101 | list-style-image: url("../resources/nav-bar/forward.svg") !important; 102 | } 103 | 104 | #back-button > .toolbarbutton-icon, 105 | #forward-button > .toolbarbutton-icon { 106 | width: calc(2 * var(--toolbarbutton-inner-padding) + 18px) !important; 107 | height: calc(2 * var(--toolbarbutton-inner-padding) + 18px) !important; 108 | } 109 | 110 | .bookmark-item[container] { 111 | list-style-image: url(""); 112 | } 113 | -------------------------------------------------------------------------------- /chrome/components/sidebar.css: -------------------------------------------------------------------------------- 1 | #browser { 2 | position: relative !important; 3 | } 4 | 5 | #sidebar-box { 6 | display: flex !important; 7 | position: absolute !important; 8 | top: 0 !important; 9 | bottom: 0 !important; 10 | left: 0 !important; 11 | right: auto !important; 12 | z-index: 1 !important; 13 | flex-direction: column !important; 14 | box-shadow: 0px 0px 8px -4px hsla(240, 4%, 0%, 0.6), 15 | 0px 0px 15px 0px hsla(0, 0%, 0%, 0.2) !important; 16 | } 17 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/_index.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /************************************/ 4 | /****** simpleMenuWizard START ******/ 5 | 6 | /********************************************** 7 | Modify these files themselves to your needs. 8 | Do not modify the following @import block. 9 | **********************************************/ 10 | 11 | /*** When right-clicking on... ***/ 12 | @import url("./blank-context.css"); /* ...a blank area on a webpage */ 13 | @import url("./frame-context.css"); /* ...an iframe */ 14 | @import url("./image-context.css"); /* ...an image */ 15 | @import url("./input-context.css"); /* ...an input-field */ 16 | @import url("./link-context.css"); /* ...a link */ 17 | @import url("./main-hamburger.css"); /* Leftclick on the hamburger menu on top right */ 18 | @import url("./media-context.css"); /* ...media like audio or html5 video */ 19 | @import url("./main-menubar.css"); /* Leftclick on the main menubar (open with ALT key) */ 20 | @import url("./newtab-containers.css"); /* ...the plus sign to open a new tab or container */ 21 | @import url("./select-context.css"); /* ...selected text or selected object */ 22 | @import url("./sidebar-context.css"); /* ...items in bookmarks- or history sidebar */ 23 | @import url("./sidebar-header.css"); /* Leftclick on the sidebar header */ 24 | @import url("./source-context.css"); /* ...a blank area when viewing source code */ 25 | @import url("./tab-context.css"); /* ...a tab */ 26 | @import url("./toolbar-context.css"); /* ...the toolbar or tabbar */ 27 | @import url("./urlbar-context.css"); /* ...the addressbar */ 28 | 29 | /*** Options ***/ 30 | 31 | /********************************************************** 32 | How to activate or deactivate the following options: 33 | Remove '/*' at the beginning of a line (not comment line) to activate the option 34 | Add '/*' at the beginning of the line (not comment line) to deactivate the option 35 | **********************************************************/ 36 | 37 | /*** Hide all "Send to Device" entries ***/ 38 | @import url("./opt_noSendToDevice.css"); 39 | /*** Hide all inactive menu items ***/ 40 | /* #mainPopupSet menuitem[disabled="true"][id][data-l10n-id] { display: none !important; } 41 | /****** simpleMenuWizard END ******/ 42 | /**********************************/ 43 | 44 | /* extensions */ 45 | menuitem[id*="ublock"], 46 | menuitem[id*="tampermonkey"], 47 | menuitem[id*="open-tab-then-discard"], 48 | menuitem[label*="Clean Link"], 49 | menugroup#context-navigation, 50 | menu[label*="Tampermonkey"] + menuseperator, 51 | menuitem#anonaddy, 52 | menuitem[image*="libredirect"], 53 | menuitem.context-menu-add-engine, 54 | menuitem[id*="send_to_hydrus_meme"] { 55 | display: none !important; 56 | } 57 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/blank-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** blank-context.css ***/ 9 | /*** When right-clicking on a blank area on a webpage ***/ 10 | 11 | #context-navigation, /* Hide whole navigation bar */ 12 | /* #context-back, /* Navi: Back arrow */ 13 | /* #context-forward, /* Navi: Forward arrow */ 14 | /* #context-reload, /* Navi: Reload icon - 15 | combined position with stop icon */ 16 | /* #context-stop, /* Navi: Stop icon (x) - 17 | combined position with reload icon */ 18 | /* #context-bookmarkpage, /* Navi: Bookmark star icon */ 19 | #context-sep-navigation, /************** Separator ***************/ 20 | /* #context-savepage, /* Save Page As... */ 21 | #context-pocket, /* Save Page to Pocket */ 22 | /* #context-selectall, /* Select All */ 23 | /* #context-sep-selectall, /************** Separator ***************/ 24 | /* #context-take-screenshot, /* Take Screenshot */ 25 | /* #context-sep-screenshots, /************** Separator ***************/ 26 | /* #context-viewsource, /* View Page Source */ 27 | /* #context-inspect, /* Inspect (Q) */ 28 | #context-media-eme-separator, /************** Separator ***************/ 29 | /* Here are context menus of addons */ 30 | 31 | #leave_this_dummy_here { 32 | display: none !important; 33 | } 34 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/frame-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** frame-context.css ***/ 9 | /*** When right-clicking on an iframe ***/ 10 | 11 | /*** "This Frame" in context menu ***/ 12 | /* menu#frame, /* This Frame */ 13 | /* #context-showonlythisframe, /* Show Only This Frame */ 14 | /* #context-openframeintab, /* Open Frame in New Tab */ 15 | /* #context-openframe, /* Open Frame in New Window */ 16 | /* #open-frame-sep, /******** Separator *********/ 17 | /* #context-reloadframe, /* Reload Frame */ 18 | /* #context-reloadframe + menuseparator, /******** Separator *********/ 19 | #context-bookmarkframe, /* Bookmark This Frame */ 20 | /* #context-saveframe, /* Save Frame As… */ 21 | #context-saveframe + menuseparator, /******** Separator *********/ 22 | #context-printframe, /* Print Frame… */ 23 | /* #context-printframe + menuseparator, /******** Separator *********/ 24 | /* #context-take-frame-screenshot, /* Take Screenshot */ 25 | /* #context-take-frame-screenshot 26 | + menuseparator, /******** Separator *********/ 27 | /* #context-viewframesource, /* View Frame Source */ 28 | /* #context-viewframeinfo, /* View Frame Info */ 29 | /* #spell-separator, /*** Separator ***/ 30 | 31 | #leave_this_dummy_here { 32 | display: none !important; 33 | } 34 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/image-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** image-context.css ***/ 9 | /*** When right-clicking on an image ***/ 10 | 11 | /* #context-reloadimage, /* Reload Image */ 12 | /* #context-viewimage, /* Open Image in New Tab */ 13 | /* #context-saveimage, /* Save Image As… */ 14 | /* #context-copyimage-contents, /* Copy Image */ 15 | /* #context-copyimage, /* Copy Image Link */ 16 | #context-sendimage, /* Email Image… */ 17 | #context-sep-setbackground, /************ Separator ************/ 18 | #context-setDesktopBackground, /* Set As Desktop Background... */ 19 | /* #context-sep-ctp, /************ Separator ************/ 20 | /* #context-inspect, /* Inspect (Q) */ 21 | 22 | #leave_this_dummy_here { 23 | display: none !important; 24 | } 25 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/input-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** input-context.css ***/ 9 | /*** When right-clicking on an input-field ***/ 10 | 11 | /* #fill-login, /* Use Saved Login */ 12 | /* #fill-login-generated-password, /* Suggest Strong Password… */ 13 | /* #manage-saved-logins, /* Manage Logins */ 14 | /* #passwordmgr-items-separator, /************ Separator *************/ 15 | /* #spell-no-suggestions, /* (No Spelling Suggestions) */ 16 | /* menuitem.spell-suggestion, /* ~ List of spelling suggestions ~ */ 17 | /* #spell-add-to-dictionary, /* Add To Dictionary */ 18 | /* #spell-undo-add-to-dictionary, /* Undo Add To Dictionary */ 19 | /* #spell-suggestions-separator, /************ Separator *************/ 20 | /* #context-undo, /* Undo */ 21 | /* #context-redo, /* Redo */ 22 | /* #context-sep-redo, /************ Separator *************/ 23 | /* #context-cut, /* Cut */ 24 | /* #context-copy, /* Copy */ 25 | /* #context-paste, /* Paste */ 26 | /* #context-delete, /* Delete */ 27 | /* #context-selectall, /* Select All */ 28 | /* #context-sep-selectall, /************ Separator *************/ 29 | /* #context-keywordfield, /* Add a Keyword for this Search… */ 30 | /* #spell-separator, /************ Separator *************/ 31 | /* #spell-check-enabled, /* Check Spelling */ 32 | /* #spell-dictionaries, /* Languages */ 33 | /* #spell-check-dictionary-en-US, /* English (United States) */ 34 | /* #spell-language-separator, /************ Separator *************/ 35 | /* #spell-add-dictionaries-main, /* Add Dictionaries… */ 36 | /* #context-sep-bidi, /************ Separator *************/ 37 | /* #context-bidi-text-direction-toggle, /* Switch Text Direction */ 38 | /* #context-bidi-page-direction-toggle, /* Switch Page Direction */ 39 | /* #fill-login-separator, /************ Separator *************/ 40 | /* #fill-login, /* Fill Login */ 41 | /* #inspect-separator, /************ Separator *************/ 42 | /* #context-inspect, /* Inspect (Q) */ 43 | 44 | #leave_this_dummy_here { 45 | display: none !important; 46 | } 47 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/link-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** link-context.css ***/ 9 | /*** When right-clicking on a link ***/ 10 | 11 | /* #context-openlinkintab, /* Open Link in New Tab */ 12 | /* #context-openlinkinusercontext-menu, /* Open Link in New Container Tab */ 13 | /* #context-openlink, /* Open Link in New Window */ 14 | /* #context-openlinkprivate, /* Open Link in New Private Window */ 15 | /* #context-sep-open, /************ Separator *************/ 16 | #context-bookmarklink, /* Bookmark Link */ 17 | #context-savelink, /* Save Link As… */ 18 | #context-savelinktopocket, /* Save Link to Pocket */ 19 | #context-copyemail, /* Copy Email Address */ 20 | /* #context-copylink, /* Copy Link */ 21 | #context-sendlinktodevice, /* Send Link to Device */ 22 | #context-sep-sendlinktodevice, /************ Separator *************/ 23 | /* #context-sep-copylink, /************ Separator *************/ 24 | /* #context-searchselect, /* Search [Google] for "[selected]" */ 25 | /* #frame-sep, /************ Separator *************/ 26 | /* #context-inspect, /* Inspect (Q) */ 27 | 28 | #leave_this_dummy_here { 29 | display: none !important; 30 | } 31 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/main-hamburger.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** main-hamburger.css ***/ 9 | /*** When left-clicking on the hamburger menu on top right ***/ 10 | 11 | /* #appMenu-proton-update-banner, /* Downloading Firefox update / 12 | Update available — download now / 13 | Unable to update — system incompatible / 14 | Update available — restart now */ 15 | /* #appMenu-fxa-status2, /* Sync and save data / Sign In */ 16 | /* #appMenu-fxa-separator, /*********** Separator ***********/ 17 | /* #appMenu-new-tab-button2, /* New Tab */ 18 | /* #appMenu-new-window-button2, /* New Window */ 19 | /* #appMenu-new-private-window-button2, /* New Private Window */ 20 | /* #appMenu-new-private-window-button2 21 | + toolbarseparator, /*********** Separator ***********/ 22 | /* #appMenu-bookmarks-button, /* Bookmarks */ 23 | /* #panelMenuBookmarkThisPage, /* Bookmark Current Tab */ 24 | /* #panelMenu_searchBookmarks, /* Search Bookmarks */ 25 | /* #panelMenu_viewBookmarksToolbar, /* Show Bookmarks Toolbar */ 26 | /* #panelMenu_viewBookmarksToolbar + toolbarseparator, /*********** Separator ***********/ 27 | /* #panelMenu_recentBookmarks, /* Recent Bookmarks (label) */ 28 | /* #panelMenu_bookmarksMenu, /* Recent Bookmarks (list) */ 29 | /* #panelMenu_showAllBookmarks, /* Manage Bookmarks */ 30 | /* #appMenu-history-button, /* History */ 31 | /* #appMenuRecentlyClosedTabs, /* Recently Closed Tabs */ 32 | /* #appMenu-library-recentlyClosedTabs > .restoreallitem, /* Reopen All Tabs */ 33 | /* #appMenuRecentlyClosedWindows, /* Recently Closed Windows */ 34 | /* #appMenuRestoreSession, /* Restore Previous Session */ 35 | /* #appMenuRestoreSession + toolbarseparator, /*********** Separator ***********/ 36 | /* #appMenuClearRecentHistory, /* Clear Recent History… */ 37 | /* #appMenuClearRecentHistory + toolbarseparator, /*********** Separator ***********/ 38 | /* #panelMenu_recentHistory, /* Recent History (label) */ 39 | /* #appMenu_historyMenu, /* Recent History (list) */ 40 | /* #appMenu_historyMenu + toolbarseparator, /*********** Separator ***********/ 41 | /* #PanelUI-historyMore, /* Manage History */ 42 | /* #appMenu-downloads-button, /* Downloads */ 43 | /* #appMenu-passwords-button, /* Passwords */ 44 | /* #appMenu-extensions-themes-button, /* Add-ons and Themes */ 45 | /* #appMenu-extensions-themes-button 46 | + toolbarseparator, /*********** Separator ***********/ 47 | /* #appMenu-print-button2, /* Print… */ 48 | /* #appMenu-save-file-button2, /* Save Page As… */ 49 | /* #appMenu-find-button2, /* Find In Page… */ 50 | /* #appMenu-zoom-controls, /* Zoom */ 51 | /* #appMenu-zoom-controls + toolbarseparator, /*********** Separator ***********/ 52 | /* #appMenu-settings-button, /* Settings */ 53 | /* #appMenu-more-button2, /* More Tools */ 54 | /* #appmenu-moreTools-button, /* Customize Toolbar… */ 55 | /* #appmenu-moreTools-button + toolbarseparator, /*********** Separator ***********/ 56 | /* #appmenu-developer-tools, /* Browser Tools (label) */ 57 | /* #appmenu-developer-tools-view 58 | > toolbarbutton[key="key_toggleToolbox"], /* Web Developer Tools */ 59 | /* #appmenu-developer-tools-view 60 | > toolbarbutton[oncommand="switchToTabHavingURI('about:performance', true)"], 61 | /* Task Manager */ 62 | /* #appmenu-developer-tools-view 63 | > toolbarbutton[oncommand="switchToTabHavingURI('about:performance', true)"] 64 | + toolbarbutton[label*="Debug"], /* Remote Debugging */ 65 | /* #appmenu-developer-tools-view 66 | > toolbarbutton[key="key_browserToolbox"], /* Browser Toolbox */ 67 | /* #appmenu-developer-tools-view 68 | > toolbarbutton[key="key_browserToolbox"] 69 | + toolbarbutton[label*="Browser"], /* Browser Content Toolbox */ 70 | /* #appmenu-developer-tools-view 71 | > toolbarbutton[key="key_browserConsole"], /* Browser Console */ 72 | /* #appmenu-developer-tools-view 73 | > toolbarbutton[key="key_responsiveDesignMode"], /* Responsive Design Mode */ 74 | /* #appmenu-developer-tools-view 75 | > toolbarbutton[key="key_responsiveDesignMode"] 76 | + toolbarbutton, /* Eyedropper */ 77 | /* #appmenu-developer-tools-view 78 | > toolbarbutton[key="key_viewSource"], /* Page Source */ 79 | /* #appmenu-developer-tools-view 80 | > toolbarbutton[key="key_viewSource"] 81 | + toolbarbutton, /* Extensions for Developers */ 82 | /* #appMenu-help-button2, /* Help */ 83 | /* #PanelUI-helpItems > #appMenu_menu_openHelp, /* Get Help */ 84 | /* #PanelUI-helpItems > #appMenu_feedbackPage, /* Submit Feedback… */ 85 | /* #PanelUI-helpItems > #appMenu_helpSafeMode, /* Troubleshoot Mode… */ 86 | /* #PanelUI-helpItems > #appMenu_troubleShooting, /* More Troubleshooting Information */ 87 | /* #PanelUI-helpItems > #appMenu_help_reportSiteIssue, /* Report Site Issue… */ 88 | /* #PanelUI-helpItems 89 | > #appMenu_menu_HelpPopup_reportPhishingtoolmenu, /* Report Deceptive Site… */ 90 | /* #PanelUI-helpItems > #appMenu_aboutName, /* About Firefox */ 91 | /* #appMenu-help-button2 + toolbarseparator, /*********** Separator ***********/ 92 | /* #appMenu-quit-button2, /* Exit */ 93 | 94 | #leave_this_dummy_here { 95 | display: none !important; 96 | } 97 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/media-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** media-context.css ***/ 9 | /*** When right-clicking on media like audio or html5 video ***/ 10 | 11 | /* #context-media-play, /* Play */ 12 | /* #context-media-pause, /* Pause */ 13 | /* #context-media-mute, /* Mute */ 14 | /* #context-media-unmute, /* Unmute */ 15 | /* #context-media-playbackrate, /* Speed */ 16 | /* #context-media-playbackrate-050x, /* 0.5× */ 17 | /* #context-media-playbackrate-100x, /* 1.0× */ 18 | /* #context-media-playbackrate-125x, /* 1.25× */ 19 | /* #context-media-playbackrate-150x, /* 1.5× */ 20 | /* #context-media-playbackrate-200x, /* 2× */ 21 | /* #context-media-loop, /* Loop */ 22 | /* #context-leave-dom-fullscreen, /* Exit Full Screen */ 23 | /* #context-video-fullscreen, /* Full Screen */ 24 | /* #context-media-hidecontrols, /* Hide Controls */ 25 | /* #context-media-showcontrols, /* Show Controls */ 26 | /* #context-media-sep-video-commands, /************ Separator ************/ 27 | /* #context-viewvideo, /* Open Video in New Tab */ 28 | /* #context-video-pictureinpicture, /* Watch in Picture-in-Picture */ 29 | /* #context-media-sep-commands, /************ Separator ************/ 30 | /* #context-video-saveimage, /* Take Snapshot… */ 31 | /* #context-savevideo, /* Save Video As… */ 32 | /* #context-saveaudio, /* Save Audio As… */ 33 | /* #context-copyvideourl, /* Copy Video Link */ 34 | /* #context-copyaudiourl, /* Copy Audio Link */ 35 | #context-sendvideo, /* Email Video… */ 36 | #context-sendaudio, /* Email Audio… */ 37 | /* #context-sep-setbackground, /************ Separator ************/ 38 | /* #context-inspect, /* Inspect (Q) */ 39 | 40 | #leave_this_dummy_here { 41 | display: none !important; 42 | } 43 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/newtab-containers.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** newtab-containers.css ***/ 9 | /*** When right-clicking on the plus sign to open a new tab or container ***/ 10 | 11 | /* #new-tab-button-popup > menuitem[accesskey="N"], /* No Container */ 12 | /* #new-tab-button-popup > menuseparator:nth-of-type(1), /************ Separator *************/ 13 | /* #new-tab-button-popup > menuitem[data-usercontextid="1"], /* Personal */ 14 | /* #new-tab-button-popup > menuitem[data-usercontextid="2"], /* Work */ 15 | /* #new-tab-button-popup > menuitem[data-usercontextid="3"], /* Banking */ 16 | /* #new-tab-button-popup > menuitem[data-usercontextid="4"], /* Shopping */ 17 | /* #new-tab-button-popup > menuseparator:nth-of-type(2), /************ Separator *************/ 18 | /* #new-tab-button-popup > 19 | menuitem[command="Browser:OpenAboutContainers"], /* Manage Containers */ 20 | 21 | #leave_this_dummy_here { 22 | display: none !important; 23 | } 24 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/opt_noSendToDevice.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** opt_noSendToDevice.css ***/ 9 | 10 | #context-sendaudio, /* Email Audio */ 11 | #context-sendvideo, /* Email Video */ 12 | #context-sendimage, /* Email Image */ 13 | #context-sendpagetodevice, 14 | #context-sep-sendpagetodevice, 15 | #context-sendlinktodevice, 16 | #context-sep-sendlinktodevice, 17 | #context_sendTabToDevice, 18 | #context_sendTabToDevice_separator, 19 | 20 | #pageAction-panel-sendToDevice, 21 | #pageAction-panel-emailLink, /* Email Link */ 22 | 23 | #leave_this_dummy_here { 24 | display: none !important; 25 | } 26 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/select-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** select-context.css ***/ 9 | /*** When right-clicking on selected text or selected object ***/ 10 | 11 | /* #context-openlinkincurrent, /* Open Link */ 12 | /* #context-copy, /* Copy */ 13 | /* #context-selectall, /* Select All */ 14 | #context-print-selection, /* Print Selection */ 15 | /* #context-sep-selectall, /************ Separator *************/ 16 | /* #context-take-screenshot, /* Take Screenshot */ 17 | /* #context-sep-screenshots, /************ Separator *************/ 18 | /* #context-searchselect, /* Search [Google] for "[selected]" */ 19 | /* #frame-sep, /************ Separator *************/ 20 | /* #context-viewpartialsource-selection, /* View Selection Source */ 21 | #context-inspect-a11y, /* Inspect Accessibility Properties */ 22 | /* #context-inspect, /* Inspect (Q) */ 23 | 24 | #leave_this_dummy_here { 25 | display: none !important; 26 | } 27 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/sidebar-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** sidebar-context.css ***/ 9 | /*** When right-clicking on items in bookmarks- or history sidebar ***/ 10 | 11 | /* #placesContext_open, /* Open */ 12 | /* #placesContext_openBookmarkContainer\:tabs, /* Open All Bookmarks */ 13 | /* #placesContext_openBookmarkLinks\:tabs, /* Open All Bookmarks */ 14 | /* #placesContext_open\:newtab, /* Open in a New Tab */ 15 | /* #placesContext_openContainer\:tabs, /* Open All in Tabs (folder) */ 16 | /* #placesContext_openLinks\:tabs, /* Open All in Tabs (selected tabs) */ 17 | /* #placesContext_open\:newwindow, /* Open in a New Window */ 18 | /* #placesContext_open\:newprivatewindow, /* Open in a New Private Window */ 19 | /* #placesContext_openSeparator, /************ Separator *************/ 20 | /* #placesContext_show_bookmark\:info, /* Edit Bookmark… */ 21 | /* #placesContext_show\:info, /* Edit… */ 22 | /* #placesContext_show_folder\:info, /* Rename Folder… */ 23 | /* #placesContext_deleteBookmark, /* Remove Bookmark */ 24 | /* #placesContext_deleteFolder, /* Remove Folder */ 25 | /* #placesContext_delete, /* Delete */ 26 | /* #placesContext_delete_history, /* Delete Page */ 27 | /* #placesContext_deleteHost, /* Forget About This Site */ 28 | /* #placesContext_sortBy\:name, /* Sort By Name */ 29 | /* #placesContext_deleteSeparator, /************ Separator *************/ 30 | /* #placesContext_cut, /* Cut */ 31 | /* #placesContext_copy, /* Copy */ 32 | /* #placesContext_paste_group, /* Paste */ 33 | /* #placesContext_editSeparator, /************ Separator *************/ 34 | /* #placesContext_new\:bookmark, /* Add Bookmark... */ 35 | /* #placesContext_new\:folder, /* Add Folder... */ 36 | /* #placesContext_new\:separator, /* Add Separator */ 37 | /* #placesContext_newSeparator, /************ Separator *************/ 38 | /* #placesContext_paste, /* Paste */ 39 | /* #placesContext_pasteSeparator, /************ Separator *************/ 40 | /* #placesContext_createBookmark, /* Bookmark Page */ 41 | /* #toggle_PersonalToolbar, /* Bookmarks Toolbar */ 42 | /* #toolbar-context-menu-bookmarks-toolbar-always-show-2, /* Always Show */ 43 | /* #toolbar-context-menu-bookmarks-toolbar-on-new-tab-2, /* Only Show on New Tab */ 44 | /* #toolbar-context-menu-bookmarks-toolbar-never-show-2, /* Never Show */ 45 | /* #show-other-bookmarks_PersonalToolbar, /* Show Other Bookmarks */ 46 | /* #placesContext_showAllBookmarks, /* Manage Bookmarks */ 47 | 48 | #leave_this_dummy_here { 49 | display: none !important; 50 | } 51 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/sidebar-header.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** sidebar-header.css ***/ 9 | /*** When left-clicking on the sidebar header ***/ 10 | 11 | /* #sidebar-header, /* Hide sidebar header completely (use shortcuts only) */ 12 | /* #sidebar-close, /* Hide close button (X) */ 13 | /* #sidebar-switcher-target, /* Hide sidebar switcher */ 14 | 15 | /* TODO: Where is the following? Cannot reproduce */ 16 | /* #sidebar-switcher-bookmarks, /* Bookmarks */ 17 | /* #sidebar-switcher-history, /* History */ 18 | /* #sidebar-switcher-tabs, /* Synced Tabs */ 19 | /* #sidebar-switcher-tabs + toolbarseparator, /*************** Separator ***************/ 20 | /* #sidebar-extensions-separator, /*** Separator (after possible addons) ***/ 21 | /* #sidebar-reverse-position, /* Move Sidebar to Right / Left */ 22 | /* #sidebar-reverse-position + toolbarseparator, /************** Separator ****************/ 23 | /* toolbarbutton[oncommand="SidebarUI.hide()"], /* Close Sidebar */ 24 | 25 | #leave_this_dummy_here { 26 | display: none !important; 27 | } 28 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/source-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** source-context.css ***/ 9 | /*** When right-clicking on a blank area when viewing source code ***/ 10 | /*** Note: Check out blank-context.css, it is very similar and more detailed. ***/ 11 | 12 | /* #context-navigation, /* Hide whole navigation bar */ 13 | /* #context-sep-navigation, /********* Separator *********/ 14 | /* #context-viewsource-goToLine, /* Go to Line… */ 15 | /* #context-viewsource-wrapLongLines, /* Wrap Long Lines */ 16 | /* #context-viewsource-highlightSyntax, /* Syntax Highlighting */ 17 | /* #context-sep-viewsource-commands, /********* Separator *********/ 18 | /* #context-savepage, /* Save Page As... */ 19 | /* #context-selectall, /* Select All */ 20 | /* #context-sep-selectall, /********* Separator *********/ 21 | /* #context-take-screenshot, /* Take Screenshot */ 22 | /* #context-sep-screenshots, /********* Separator *********/ 23 | /* #context-viewsource, /* View Page Source */ 24 | /* #context-inspect, /* Inspect (Q) */ 25 | 26 | #leave_this_dummy_here { 27 | display: none !important; 28 | } 29 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/tab-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** tab-context.css ***/ 9 | /*** When right-clicking on a tab ***/ 10 | 11 | /* #tabContextMenu #context_openANewTab, /* New Tab */ 12 | /* #tabContextMenu #context_openANewTab + menuseparator, /******** Separator ********/ 13 | /* #tabContextMenu #context_reloadTab, /* Reload Tab */ 14 | /* #tabContextMenu #context_reloadSelectedTabs, /* Reload Tabs */ 15 | /* #tabContextMenu #context_toggleMuteTab, /* Mute / Unmute Tab */ 16 | /* #tabContextMenu #context_toggleMuteSelectedTabs, /* Mute / Unmute Tabs */ 17 | /* #tabContextMenu #context_pinTab, /* Pin Tab */ 18 | /* #tabContextMenu #context_unpinTab, /* Unpin Tab */ 19 | /* #tabContextMenu #context_pinSelectedTabs, /* Pin Tabs */ 20 | /* #tabContextMenu #context_unpinSelectedTabs, /* Unpin Tabs */ 21 | /* #tabContextMenu #context_duplicateTab, /* Duplicate Tab */ 22 | /* #tabContextMenu #context_duplicateTabs, /* Duplicate Tabs */ 23 | /* #tabContextMenu #context_duplicateTabs + menuseparator, /******** Separator ********/ 24 | #tabContextMenu #context_bookmarkSelectedTabs, /* Bookmark Tabs… */ 25 | #tabContextMenu #context_bookmarkTab, /* Bookmark Tab */ 26 | /* #tabContextMenu #context_moveTabOptions, /* Move Tab */ 27 | /* #tabContextMenu #context_moveToStart, /* Move to Start */ 28 | /* #tabContextMenu #context_moveToEnd, /* Move to End */ 29 | /* #tabContextMenu #context_openTabInWindow, /* Move to New Window */ 30 | #tabContextMenu #context_sendTabToDevice, /* Send Tab to Device */ 31 | #tabContextMenu .share-tab-url-item, /* Share tab URL via 3rd party app */ 32 | /* #tabContextMenu #context_reopenInContainer, /* Reopen in Container */ 33 | #tabContextMenu #context_dummy, /* Send Tab to Device Submenu not yet supported */ 34 | /* #tabContextMenu #context_selectAllTabs, /* Select All Tabs */ 35 | /* #tabContextMenu #context_selectAllTabs + menuseparator, /******** Separator ********/ 36 | /* #tabContextMenu #context_closeTab, /* Close Tab */ 37 | /* #tabContextMenu #context_closeTabOptions, /* Close Multiple Tabs */ 38 | /* #tabContextMenu #context_closeTabsToTheStart, /* Close Tabs to Left */ 39 | /* #tabContextMenu #context_closeTabsToTheEnd, /* Close Tabs to Right */ 40 | /* #tabContextMenu #context_closeOtherTabs, /* Close Other Tabs */ 41 | /* #tabContextMenu #context_undoCloseTab, /* Undo Close Tab */ 42 | 43 | #leave_this_dummy_here { 44 | display: none !important; 45 | } 46 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/toolbar-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** toolbar-context.css ***/ 9 | /*** When right-clicking on the toolbar or tabbar ***/ 10 | 11 | /* #toolbar-context-menu .customize-context-manageExtension, /* Manage Extension */ 12 | /* #toolbar-context-menu .customize-context-removeExtension, /* Remove Extension */ 13 | #toolbar-context-menu .customize-context-reportExtension, /* Report Extension */ 14 | #toolbar-context-menu .customize-context-reportExtension 15 | + menuseparator, /******* Seperator ********/ 16 | /* #toolbar-context-menu .customize-context-moveToPanel, /* Pin to Overflow Menu */ 17 | /* #toolbar-context-menu #toolbar-context-autohide-downloads-button, /* Hide Button When Empty */ 18 | /* #toolbar-context-menu .customize-context-removeFromToolbar, /* Remove from Toolbar */ 19 | /* #toolbar-context-menu #toolbarItemsMenuSeparator, /******* Seperator ********/ 20 | /* #toolbar-context-menu #toggle_toolbar-menubar, /* Menu Bar */ 21 | /* #toolbar-context-menu #toggle_PersonalToolbar, /* Bookmarks Toolbar */ 22 | /* #toolbar-context-menu 23 | menuitem[data-l10n-id="toolbar-context-menu-bookmarks-toolbar-always-show-2"], /* Always Show */ 24 | /* #toolbar-context-menu 25 | menuitem[data-l10n-id="toolbar-context-menu-bookmarks-toolbar-on-new-tab-2"], /* Only Show on New Tab */ 26 | /* #toolbar-context-menu 27 | menuitem[data-l10n-id="toolbar-context-menu-bookmarks-toolbar-never-show-2"], /* Never Show */ 28 | /* #toolbar-context-menu #viewToolbarsMenuSeparator, /******* Seperator ********/ 29 | /* #toolbar-context-menu #viewCustomizeToolbar, /* Customize Toolbar… */ 30 | 31 | #leave_this_dummy_here { 32 | display: none !important; 33 | } 34 | -------------------------------------------------------------------------------- /chrome/components/simpleMenuWizard/urlbar-context.css: -------------------------------------------------------------------------------- 1 | /*AGENT_SHEET*/ 2 | 3 | /********************************************************************************************* 4 | simpleMenuWizard: userChrome.css tweaks to remove context menu items in Firefox. 5 | https://github.com/stonecrusher/simpleMenuWizard 6 | ********************************************************************************************** 7 | 8 | /*** urlbar-context.css ***/ 9 | /*** When right-clicking on the addressbar ***/ 10 | 11 | /* #urlbar menuitem[cmd="cmd_undo"], /* Undo */ 12 | /* #urlbar menuitem[cmd="cmd_redo"], /* Redo */ 13 | /* #urlbar menuitem[cmd="cmd_redo"] + menuseparator, /* Separator */ 14 | /* #urlbar menuitem[cmd="cmd_cut"], /* Cut */ 15 | /* #urlbar menuitem[cmd="cmd_copy"], /* Copy */ 16 | /* #urlbar menuitem[cmd="cmd_paste"], /* Paste */ 17 | /* #urlbar menuitem[anonid="paste-and-go"], /* Paste and Go */ 18 | /* #urlbar menuitem[cmd="cmd_delete"], /* Delete */ 19 | /* #urlbar menuitem[cmd="cmd_selectAll"], /* Select All */ 20 | menuseparator.menuseparator-add-engine /*** Separator ***/ 21 | 22 | #leave_this_dummy_here { 23 | display: none !important; 24 | } 25 | -------------------------------------------------------------------------------- /chrome/components/tabs.css: -------------------------------------------------------------------------------- 1 | .titlebar-spacer[type="pre-tabs"], 2 | .titlebar-spacer[type="post-tabs"] { 3 | width: var(--uc-tab-margin, 4px) !important; 4 | } 5 | 6 | .tabbrowser-tab { 7 | padding: 0 calc(var(--uc-tab-margin, 4px) / 2) !important; 8 | } 9 | 10 | #tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs]) 11 | > #tabbrowser-arrowscrollbox 12 | > .tabbrowser-tab[first-visible-unpinned-tab] { 13 | margin-inline-start: unset !important; 14 | } 15 | 16 | /* remove shadow from selected tabs */ 17 | #TabsToolbar #firefox-view-button[open] > .toolbarbutton-icon, 18 | #tabbrowser-tabs:not([noshadowfortests]) 19 | .tab-background:is([selected], [multiselected]) { 20 | box-shadow: none !important; 21 | } 22 | 23 | /* adds borders around tabs */ 24 | .tab-background { 25 | outline: var(--uc-tab-outline-width, 1px) solid 26 | color-mix(in srgb, currentColor 25%, transparent) !important; 27 | outline-offset: calc(0px - var(--uc-tab-outline-width, 1px)) !important; 28 | } 29 | 30 | /* multiselected tabs should have colored borders too */ 31 | .tab-background[selected]:-moz-lwtheme, 32 | .tab-background[multiselected="true"]:-moz-lwtheme { 33 | outline: var(--uc-tab-outline-width) solid 34 | var(--lwt-tab-line-color, var(--lwt-tabs-border-color, currentColor)) !important; 35 | outline-offset: calc(0px - var(--uc-tab-outline-width, 1px)) !important; 36 | } 37 | 38 | /* make inactive tabs shorter */ 39 | /* https://www.reddit.com/r/FirefoxCSS/comments/brklu0/the_right_way_to_change_your_tab_max_width */ 40 | .tabbrowser-tab[fadein]:not([pinned], [style*="max-width"], [selected="true"]) { 41 | max-width: var(--uc-tab-inactive-max-width, calc(225px / 2)) !important; 42 | } 43 | 44 | /* inactive tabs are faded */ 45 | .tabbrowser-tab:not([selected="true"], [pinned]) .tab-content { 46 | opacity: var(--uc-tab-inactive-opacity, 0.5); 47 | } 48 | 49 | /* for some reason, the close button appears when the first tab on the list is selected; this is a fix (?) */ 50 | .tabbrowser-tab:not([pinned="true"], [selected="true"]) 51 | > .tab-stack 52 | > .tab-content 53 | > .tab-close-button:not([selected="true"]) { 54 | display: none !important; 55 | } 56 | 57 | /* show close button when hovered but not when pinned */ 58 | .tabbrowser-tab:not([pinned="true"]):hover 59 | > .tab-stack 60 | > .tab-content 61 | > .tab-close-button:not([selected="true"]) { 62 | display: -moz-box !important; 63 | } 64 | 65 | /* don't show all tabs button */ 66 | #alltabs-button { 67 | display: none !important; 68 | } 69 | 70 | /***** container tabs *****/ 71 | 72 | .tabbrowser-tab[usercontextid] { 73 | color: color-mix( 74 | in srgb, 75 | var(--identity-tab-color) 30%, 76 | var(--lwt-tab-text) 77 | ) !important; 78 | --lwt-selected-tab-background-color: color-mix( 79 | in srgb, 80 | var(--identity-tab-color) 11%, 81 | transparent 82 | ) !important; 83 | } 84 | 85 | /* make tab border the identity color */ 86 | .tabbrowser-tab[usercontextid] > .tab-stack > .tab-background { 87 | outline: var(--uc-tab-outline-width, 1px) solid 88 | color-mix(in srgb, var(--identity-tab-color) 50%, transparent) !important; 89 | background-color: var(--lwt-selected-tab-background-color) !important; 90 | } 91 | 92 | .tabbrowser-tab[usercontextid] 93 | > .tab-stack 94 | > .tab-background:is([selected], [multiselected]) { 95 | outline: var(--uc-tab-outline-width, 1px) solid var(--identity-tab-color) !important; 96 | background-image: linear-gradient( 97 | var(--lwt-selected-tab-background-color, transparent), 98 | var(--lwt-selected-tab-background-color, transparent) 99 | ), 100 | linear-gradient(var(--toolbar-bgcolor), var(--toolbar-bgcolor)), 101 | var(--lwt-header-image, none) !important; 102 | } 103 | 104 | .tabbrowser-tab[usercontextid]:hover 105 | > .tab-stack 106 | > .tab-background:not([selected="true"], [multiselected]) { 107 | background-color: color-mix( 108 | in srgb, 109 | var(--identity-tab-color) 18%, 110 | transparent 111 | ) !important; 112 | } 113 | 114 | /* no top line */ 115 | .tabbrowser-tab[usercontextid] 116 | > .tab-stack 117 | > .tab-background 118 | > .tab-context-line { 119 | display: none; 120 | } 121 | -------------------------------------------------------------------------------- /chrome/components/titlebar.css: -------------------------------------------------------------------------------- 1 | /***** TITLE BAR - WINDOWS *****/ 2 | -------------------------------------------------------------------------------- /chrome/img/back.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/img/bookmarks.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/img/downloads.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/img/forward.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/img/history.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/img/menu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/img/overflow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/img/reload.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/js/appMenuAboutConfigButton.uc.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name App Menu about:config Button 3 | // @version 1.2.3 4 | // @author aminomancer 5 | // @homepage https://github.com/aminomancer/uc.css.js 6 | // @description Adds an about:config shortcut button to the main app menu panel, under the 7 | // built-in Settings button. It can open the built-in about:config page, or it can open the 8 | // old-school about:config page with earthlng's aboutconfig module. (https://github.com/earthlng/aboutconfig) 9 | // To use that with fx-autoconfig, download ONLY the profile/chrome/utils/aboutconfig folder and 10 | // place it inside your profile/chrome/resources folder. Then open config.xhtml and find & replace 11 | // "userchromejs" with "userchrome" and save. Now "chrome://userchrome/content/aboutconfig/config.xhtml" 12 | // should be the correct URL. By default the script will open to that link, so if you don't have 13 | // that module installed the button will open to a blank page. If you can't get the module to work 14 | // or if you just prefer Firefox's built-in page, you can change the constant on line 10 below to 15 | // "about:config" and it'll open to the same page you'd get if you typed about:config in the address 16 | // bar. (the URL must be in quotes) That said, typing about:config is already easy enough. The 17 | // reason I made this script was to make a clean shortcut to reach the old-school page, and in a 18 | // more central location than a bookmark. FYI I added an icon for this button (and for all the other 19 | // main app menu buttons too) in uc-app-menu.css 20 | // @license This Source Code Form is subject to the terms of the Creative Commons Attribution-NonCommercial-ShareAlike International License, v. 4.0. If a copy of the CC BY-NC-SA 4.0 was not distributed with this file, You can obtain one at http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 21 | // ==/UserScript== 22 | 23 | (function () { 24 | // user configuration 25 | const config = { 26 | urlOverride: "" 27 | /* the script tries to automatically find earthlng's aboutconfig URL, and if 28 | it can't be found, uses the built-in about:config URL instead. if it's 29 | unable to find the URL for your particular setup, or if you just want to 30 | use the vanilla about:config page, replace this empty string with your 31 | preferred URL, in quotes. if you want to use my about:cfg script that 32 | registers earthlng's aboutconfig page to about:cfg, and you want the 33 | about:config button to take you to about:cfg, then leave this empty. it 34 | will automatically use about:cfg if the script exists. if about:cfg 35 | doesn't work for you then change the pathOverride in *that* script 36 | instead of setting urlOverride in this one. if you changed the address 37 | (the "cfg" string) in that script, you'll need to use urlOverride here 38 | if you want the button to direct to earthlng's aboutconfig page. so if 39 | for example you changed the address to "config2" then change urlOverride 40 | above to "about:config2" */ 41 | }; 42 | 43 | function findAboutConfig() { 44 | if (config.urlOverride) return config.urlOverride; 45 | 46 | if ( 47 | Components.manager 48 | .QueryInterface(Ci.nsIComponentRegistrar) 49 | .isContractIDRegistered( 50 | "@mozilla.org/network/protocol/about;1?what=cfg" 51 | ) 52 | ) { 53 | return "about:cfg"; 54 | } 55 | 56 | let dir = Services.dirsvc.get("UChrm", Ci.nsIFile); 57 | let appendFn = (nm) => dir.append(nm); 58 | 59 | // fx-autoconfig 60 | ["resources", "aboutconfig", "config.xhtml"].forEach(appendFn); 61 | if (dir.exists()) { 62 | return "chrome://userchrome/content/aboutconfig/config.xhtml"; 63 | } 64 | 65 | // earthlng's loader 66 | dir = Services.dirsvc.get("UChrm", Ci.nsIFile); 67 | ["utils", "aboutconfig", "config.xhtml"].forEach(appendFn); 68 | if (dir.exists()) { 69 | return "chrome://userchromejs/content/aboutconfig/config.xhtml"; 70 | } 71 | 72 | // xiaoxiaoflood's loader 73 | dir = Services.dirsvc.get("UChrm", Ci.nsIFile); 74 | ["utils", "aboutconfig", "aboutconfig.xhtml"].forEach(appendFn); 75 | if (dir.exists()) { 76 | return "chrome://userchromejs/content/aboutconfig/aboutconfig.xhtml"; 77 | } 78 | 79 | // no about:config replacement found 80 | return "about:config"; 81 | } 82 | 83 | async function createButton() { 84 | // get fluent file for AboutConfig page 85 | const configStrings = await new Localization( 86 | ["toolkit/about/config.ftl"], 87 | true 88 | ); 89 | // localize the "Advanced Preferences" string 90 | const advancedPrefsLabel = await configStrings.formatValue([ 91 | "about-config-page-title" 92 | ]); 93 | const { mainView } = PanelUI; 94 | const doc = mainView.ownerDocument; 95 | const settingsButton = 96 | doc.getElementById("appMenu-settings-button") ?? 97 | doc.getElementById("appMenu-preferences-button"); 98 | const prefsButton = doc.createXULElement("toolbarbutton"); 99 | 100 | prefsButton.preferredURL = findAboutConfig(); 101 | for (const [key, val] of Object.entries({ 102 | id: "appMenu-advanced-settings-button", 103 | class: "subviewbutton", 104 | label: advancedPrefsLabel, 105 | oncommand: `openTrustedLinkIn(this.preferredURL, gBrowser.currentURI.spec === AboutNewTab.newTabURL || gBrowser.currentURI.spec === HomePage.get(window) ? "current" : "tab")` 106 | })) { 107 | prefsButton.setAttribute(key, val); 108 | } 109 | // place after the built-in "Settings" button 110 | settingsButton.after(prefsButton); 111 | } 112 | 113 | function init() { 114 | PanelMultiView.getViewNode( 115 | document, 116 | "appMenu-multiView" 117 | ).addEventListener("ViewShowing", createButton, { once: true }); 118 | } 119 | 120 | if (gBrowserInit.delayedStartupFinished) { 121 | init(); 122 | } else { 123 | let delayedListener = (subject, topic) => { 124 | if ( 125 | topic == "browser-delayed-startup-finished" && 126 | subject == window 127 | ) { 128 | Services.obs.removeObserver(delayedListener, topic); 129 | init(); 130 | } 131 | }; 132 | Services.obs.addObserver( 133 | delayedListener, 134 | "browser-delayed-startup-finished" 135 | ); 136 | } 137 | })(); 138 | -------------------------------------------------------------------------------- /chrome/js/appMenuMods.uc.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name App Menu Mods 3 | // @version 1.4.2 4 | // @author aminomancer 5 | // @homepage https://github.com/aminomancer/uc.css.js 6 | // @description Makes some minor modifications to the app menu (the popup 7 | // opened by clicking the hamburger button on the far right of the navbar). It 8 | // adds a restart button to the app menu and it adds a separator under the 9 | // "Manage Account" button in the profile/account panel. I'll continue adding 10 | // more mods to this script as I think of them. 11 | // @license This Source Code Form is subject to the terms of the Creative Commons Attribution-NonCommercial-ShareAlike International License, v. 4.0. If a copy of the CC BY-NC-SA 4.0 was not distributed with this file, You can obtain one at http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 12 | // ==/UserScript== 13 | 14 | (function () { 15 | class AppMenuMods { 16 | constructor() { 17 | PanelUI._initialized || 18 | PanelUI.init(shouldSuppressPopupNotifications); 19 | PanelUI.mainView.addEventListener("ViewShowing", this, { 20 | once: true 21 | }); 22 | this.addSeparatorToAccountPanel(); 23 | this.fixSyncSubviewButtonAlignment(); 24 | } 25 | static create(aDoc, tag, props, isHTML = false) { 26 | let el = isHTML 27 | ? aDoc.createElement(tag) 28 | : aDoc.createXULElement(tag); 29 | for (let prop in props) { 30 | el.setAttribute(prop, props[prop]); 31 | } 32 | return el; 33 | } 34 | static sleep(ms) { 35 | return new Promise((resolve) => setTimeout(resolve, ms)); 36 | } 37 | async generateStrings() { 38 | if (!this.strings) { 39 | this.strings = await new Localization( 40 | ["toolkit/about/aboutSupport.ftl"], 41 | true 42 | ); 43 | } 44 | await AppMenuMods.sleep(1); 45 | return this.strings; 46 | } 47 | get fxaPanelView() { 48 | return PanelMultiView.getViewNode(document, "PanelUI-fxa"); 49 | } 50 | async handleEvent(_e) { 51 | let strings = await this.generateStrings(); 52 | this.addRestartButton(strings); 53 | } 54 | addSeparatorToAccountPanel() { 55 | this.manageAccountSeparator = 56 | this.fxaPanelView.ownerDocument.createXULElement( 57 | "toolbarseparator" 58 | ); 59 | this.fxaPanelView 60 | .querySelector("#fxa-manage-account-button") 61 | .after(this.manageAccountSeparator); 62 | } 63 | async addRestartButton(strings) { 64 | let restartButton = AppMenuMods.create(document, "toolbarbutton", { 65 | id: "appMenu-restart-button2", 66 | class: "subviewbutton", 67 | label: await strings.formatValue(["restart-button-label"]), 68 | oncommand: `if (event.shiftKey || (AppConstants.platform == "macosx" ? event.metaKey : event.ctrlKey)) Services.appinfo.invalidateCachesOnRestart(); setTimeout(() => Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit), 300); PanelMultiView.forNode(this.closest("panelmultiview")).hidePopup(); event.preventDefault();`, 69 | onclick: `if (event.button === 0) return; Services.appinfo.invalidateCachesOnRestart(); setTimeout(() => Services.startup.quit(Ci.nsIAppStartup.eRestart | Ci.nsIAppStartup.eAttemptQuit), 300); PanelMultiView.forNode(this.closest("panelmultiview")).hidePopup(); event.preventDefault();` 70 | }); 71 | let exitButton = document.getElementById("appMenu-quit-button2"); 72 | if (exitButton) { 73 | exitButton.before(restartButton); 74 | } else { 75 | PanelUI.mainView 76 | .querySelector(".panel-subview-body") 77 | .appendChild(restartButton); 78 | } 79 | } 80 | fixSyncSubviewButtonAlignment() { 81 | eval( 82 | `gSync.populateSendTabToDevicesView = function ` + 83 | gSync.populateSendTabToDevicesView 84 | .toSource() 85 | .replace(/^populateSendTabToDevicesView/, ``) 86 | .replace( 87 | /item.setAttribute\(\"align\", \"start\"\);/, 88 | `` 89 | ) 90 | ); 91 | } 92 | } 93 | 94 | if (gBrowserInit.delayedStartupFinished) { 95 | new AppMenuMods(); 96 | } else { 97 | let delayedListener = (subject, topic) => { 98 | if ( 99 | topic == "browser-delayed-startup-finished" && 100 | subject == window 101 | ) { 102 | Services.obs.removeObserver(delayedListener, topic); 103 | new AppMenuMods(); 104 | } 105 | }; 106 | Services.obs.addObserver( 107 | delayedListener, 108 | "browser-delayed-startup-finished" 109 | ); 110 | } 111 | })(); 112 | -------------------------------------------------------------------------------- /chrome/js/clearDownloadsButton.uc.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name Clear Downloads Panel Button 3 | // @version 1.4.1 4 | // @author aminomancer 5 | // @homepage https://github.com/aminomancer/uc.css.js 6 | // @description Place a "Clear Downloads" button in the downloads panel, 7 | // right next to the "Show all downloads" button. 8 | // @license This Source Code Form is subject to the terms of the Creative Commons Attribution-NonCommercial-ShareAlike International License, v. 4.0. If a copy of the CC BY-NC-SA 4.0 was not distributed with this file, You can obtain one at http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 9 | // ==/UserScript== 10 | 11 | class ClearDLPanel { 12 | config = { 13 | // the "Show all downloads" button is in sentence case, but the 14 | // localized "Clear Downloads" button string is from a context menu, so 15 | // it's in "Title Case". if you want both in sentence case use this. 16 | // I've tried to account for other alphabets or RTL languages but user 17 | // will be the judge 18 | "Label in sentence case": true 19 | }; 20 | constructor() { 21 | this.makeButton(); 22 | this.setCountHandler(); 23 | Services.obs.addObserver(this, "downloads-panel-count-changed"); 24 | } 25 | async genStrings() { 26 | this.strings = await new Localization(["browser/downloads.ftl"], true); 27 | const messages = await this.strings.formatMessages([ 28 | "downloads-cmd-clear-downloads" 29 | ]); 30 | this.label = messages[0].attributes[0].value; 31 | this.accessKey = messages[0].attributes[1].value; 32 | return [this.label, this.accessKey]; 33 | } 34 | async makeButton() { 35 | this.clearPanelButton = document.createXULElement("button"); 36 | let strings = await this.genStrings(); 37 | let labelString = this.config["Label in sentence case"] 38 | ? this.sentenceCase(strings[0]) 39 | : strings[0]; 40 | for (const [key, val] of Object.entries({ 41 | id: "clearDownloadsPanel", 42 | class: 43 | DownloadsView.downloadsHistory.className || 44 | "downloadsPanelFooterButton subviewbutton panel-subview-footer-button toolbarbutton-1", 45 | oncommand: `goDoCommand('downloadsCmd_clearList'); DownloadsPanel.hidePanel();`, 46 | label: labelString, 47 | accesskey: strings[1], 48 | flex: "1", 49 | pack: "start" 50 | })) { 51 | this.clearPanelButton.setAttribute(key, val); 52 | } 53 | DownloadsView.downloadsHistory.after(this.clearPanelButton); 54 | this.clearPanelButton.hidden = 55 | !DownloadsView._visibleViewItems?.size > 0; 56 | this.clearPanelButton 57 | ?.closest("#downloadsFooter") 58 | .prepend(document.createXULElement("toolbarseparator")); 59 | this.clearPanelButton?.parentElement.setAttribute("uc-hbox", "true"); 60 | } 61 | sentenceCase(str) { 62 | return str 63 | .toLocaleLowerCase() 64 | .replace(RTL_UI ? /.$/i : /^./i, function (letter) { 65 | return letter.toLocaleUpperCase(); 66 | }) 67 | .trim(); 68 | } 69 | setCountHandler() { 70 | eval( 71 | `DownloadsView._itemCountChanged = function ${DownloadsView._itemCountChanged 72 | .toSource() 73 | .replace( 74 | /hiddenCount \> 0\;\n/, 75 | `hiddenCount > 0;\n Services.obs.notifyObservers(null, "downloads-panel-count-changed", String(count));\n` 76 | )}` 77 | ); 78 | } 79 | observe(_sub, _top, data) { 80 | this.clearPanelButton.hidden = parseInt(data) < 1; 81 | } 82 | } 83 | 84 | if (gBrowserInit.delayedStartupFinished) { 85 | new ClearDLPanel(); 86 | } else { 87 | let delayedListener = (subject, topic) => { 88 | if (topic == "browser-delayed-startup-finished" && subject == window) { 89 | Services.obs.removeObserver(delayedListener, topic); 90 | new ClearDLPanel(); 91 | } 92 | }; 93 | Services.obs.addObserver( 94 | delayedListener, 95 | "browser-delayed-startup-finished" 96 | ); 97 | } 98 | -------------------------------------------------------------------------------- /chrome/js/floatingSidebarResizer.uc.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name Floating Sidebar Resizer 3 | // @version 1.3.1 4 | // @author aminomancer 5 | // @homepage https://github.com/aminomancer 6 | // @description A floating sidebar that you can still resize. The default 7 | // sidebar in firefox is nice, it can move from the left side to the right side 8 | // and you can resize it. But it squeezes the browser content area out of the 9 | // way. That might be desirable for some people. That way the entire contents of 10 | // the page are still visible when the sidebar is open. That works well with 11 | // responsive page layouts but doesn't work well with elements that try to 12 | // preserve some explicit aspect ratio. It also doesn't look very aesthetic when 13 | // you open the sidebar and the entire page makes this jarring transformation as 14 | // everything shifts left or right to make way for the sidebar. So say your 15 | // browser window is sized precisely to 16:9 dimensions. Maybe you have ocd like 16 | // me and don't want to see any letterbox when you watch netflix. By default 17 | // when you open the sidebar, it pushes the whole content area to the side, 18 | // which changes the content area width:height ratio. So the player setup needs 19 | // to resize the video element, resulting in a letterbox effect. It's easy 20 | // enough to make the sidebar "float" over the content though. You can do it 21 | // with pure css. The major downside is that you lose the ability to resize the 22 | // sidebar. You'd have to set the width manually. That's because the native 23 | // implementation of resizing relies on the old-school proprietary -moz-box 24 | // spec. The space within #browser is finite and the -moz-boxes within fill that 25 | // space based on some css rules. The resizing is actually handled by the 26 | // separator, which is a totally independent element. So within #browser you 27 | // have: content | separator | sidebar. And moving the separator defines how big 28 | // the sidebar and content area are, but this only works *because* they can't 29 | // occupy the same space. To make the sidebar float over the content area you 30 | // need to change its display and position rules, which means the separator no 31 | // longer packs right next to the sidebar. It's sort of like plucking the 32 | // sidebar out of the flexbox. The separator moves all the way to the end of the 33 | // screen and the content area expands to fill that space. So the separator 34 | // becomes useless and we lose the ability to resize the sidebar. So the main 35 | // thing this does is add a resizer to the sidebar. It doesn't make the sidebar 36 | // float by itself. That's what the css files in this repo are for. 37 | // @license This Source Code Form is subject to the terms of the Creative Commons Attribution-NonCommercial-ShareAlike International License, v. 4.0. If a copy of the CC BY-NC-SA 4.0 was not distributed with this file, You can obtain one at http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 38 | // ==/UserScript== 39 | 40 | (() => { 41 | function startup() { 42 | // outer box 43 | let box = SidebarUI._box; 44 | let prefsvc = Services.prefs; 45 | // boolean pref: whether sidebar is on the left or right side of the browser content area. 46 | let anchor = "sidebar.position_start"; 47 | // string pref: we set this so we can remember user's sidebar width when 48 | // rebooting or opening a new window. 49 | let widthPref = "userChrome.floating-sidebar.width"; 50 | // invisible little bar by which to drag the sidebar to resize it 51 | let resizer = document.createElement("div"); 52 | let frame = false; 53 | let startWidth; 54 | let startX; 55 | 56 | function initDrag(e) { 57 | // this is not directly visible since the element has no background or 58 | // content. this just means that while you're clicking+dragging the 59 | // resizer, its width expands to double the size of the sidebar. 60 | resizer.style.width = "200%"; 61 | // we want the resizer to expand massively in both directions. 62 | resizer.style.marginInline = "-100%"; 63 | startX = e.screenX; 64 | startWidth = parseInt( 65 | document.defaultView.getComputedStyle(box).width, 66 | 10 67 | ); 68 | document.documentElement.addEventListener( 69 | "mousemove", 70 | doDrag, 71 | true 72 | ); 73 | document.documentElement.addEventListener("mouseup", stopDrag); 74 | } 75 | 76 | function doDrag(e) { 77 | // throttling, since mousemove events can fire way faster than even 78 | // a 144Hz monitor can render frames. 79 | if (frame) return; 80 | frame = true; 81 | requestAnimationFrame(() => { 82 | if (SidebarUI._positionStart) { 83 | box.style.width = startWidth + e.screenX - startX + "px"; 84 | } else { 85 | box.style.width = startWidth - e.screenX + startX + "px"; 86 | } 87 | frame = false; 88 | }); 89 | } 90 | 91 | function stopDrag(_e) { 92 | // this is the neutral/idle size. when you're not clicking/dragging, 93 | // it's just a 4px vertical "border" 94 | resizer.style.width = "4px"; 95 | // remove the -100% margin-inline rule we set while dragging. 96 | resizer.style.removeProperty("margin-inline"); 97 | document.documentElement.removeEventListener( 98 | "mousemove", 99 | doDrag, 100 | true 101 | ); 102 | document.documentElement.removeEventListener("mouseup", stopDrag); 103 | // now that we've stopped moving the mouse, permanently record the 104 | // sidebar width so we can restore from it later. 105 | prefsvc.setStringPref(widthPref, box.style.width); 106 | } 107 | 108 | function alignObserve(_sub, _top, pref) { 109 | // we want the resizer to go on the left side of the sidebar when 110 | // the sidebar is on the right side of the window, and vice versa. 111 | if (prefsvc.getBoolPref(pref)) resizer.style.right = "0"; 112 | else resizer.style.removeProperty("right"); 113 | } 114 | 115 | function exitSideBar(e) { 116 | if (e.code === "Escape") { 117 | if ( 118 | e.repeat || 119 | e.shiftKey || 120 | e.altKey || 121 | e.ctrlKey || 122 | this.hidden 123 | ) { 124 | return; 125 | } 126 | SidebarUI.toggle(); 127 | e.preventDefault(); 128 | } 129 | } 130 | 131 | function domSetup() { 132 | resizer.style.cssText = 133 | "display: inline-block; height: 100%; position: absolute; width: 4px; cursor: ew-resize;"; 134 | box.appendChild(resizer); 135 | box.style.minWidth = "18em"; 136 | box.style.maxWidth = "100%"; 137 | try { 138 | box.style.width = prefsvc.getStringPref(widthPref); 139 | } catch (e) { 140 | box.style.width = "18em"; 141 | } 142 | if (prefsvc.getBoolPref(anchor)) resizer.style.right = "0"; 143 | } 144 | 145 | function attachListeners() { 146 | resizer.addEventListener("mousedown", initDrag); 147 | window.addEventListener("unload", uninit); 148 | prefsvc.addObserver(anchor, alignObserve); 149 | box.addEventListener("keypress", exitSideBar, true); 150 | } 151 | 152 | function uninit() { 153 | window.removeEventListener("unload", uninit); 154 | prefsvc.removeObserver(anchor, alignObserve); 155 | } 156 | 157 | // remove old preference 158 | prefsvc.clearUserPref("userChrome.floating-sidebar.hotkey"); 159 | domSetup(); 160 | attachListeners(); 161 | } 162 | 163 | // wait until components are initialized so we can access SidebarUI 164 | if (gBrowserInit.delayedStartupFinished) { 165 | startup(); 166 | } else { 167 | let delayedListener = (subject, topic) => { 168 | if ( 169 | topic == "browser-delayed-startup-finished" && 170 | subject == window 171 | ) { 172 | Services.obs.removeObserver(delayedListener, topic); 173 | startup(); 174 | } 175 | }; 176 | Services.obs.addObserver( 177 | delayedListener, 178 | "browser-delayed-startup-finished" 179 | ); 180 | } 181 | })(); 182 | -------------------------------------------------------------------------------- /chrome/js/hideTrackingProtectionIconOnCustomNewTabPage.uc.js: -------------------------------------------------------------------------------- 1 | // ==UserScript== 2 | // @name Hide Tracking Protection Icon on Custom New Tab Page 3 | // @version 1.3.3 4 | // @author aminomancer 5 | // @homepage https://github.com/aminomancer 6 | // @description By default, Firefox hides the tracking protection while 1) 7 | // the current tab is open to the default new tab page; or 2) the user is typing 8 | // into the url bar. Hiding the icon while the user is typing is unnecessary, 9 | // since although "pageproxystate" has changed, the content principal is still 10 | // the same and clicking the tracking protection icon to open the popup still 11 | // works. Opening the popup while pageproxystate is invalid still loads the 12 | // tracking details and options for the current content URI. But hiding the icon 13 | // on the new tab page is necessary, because the tracking protection icon is 14 | // hidden on about:blank. If you use an extension to set a custom new tab page, 15 | // you will see the tracking protection icon briefly disappear when opening a 16 | // new tab, before reappearing as the custom new tab page loads. That is because 17 | // about:blank loads before the custom new tab page loads. So the icon is hidden 18 | // and unhidden in the span of a hundred milliseconds or so. This looks very 19 | // ugly, so my stylesheet has always prevented the tracking protection icon from 20 | // being hidden on any page, including about:blank. That way at least it doesn't 21 | // disappear. But this isn't a great solution, because there are a number of 22 | // pages for which the tracking protection icon does nothing. The protection 23 | // handler can't handle internal pages, for example. Previously I just disabled 24 | // pointer events on the icon when it was supposed to be hidden. But I think 25 | // this script is a better solution. If this script is not installed, my theme 26 | // will default to those older methods I just mentioned. But if the script is 27 | // installed, it will restore the built-in behavior of hiding the tracking 28 | // protection icon on internal pages, only it will also hide the icon on the 29 | // user's custom new tab page. The icon will still be visible if you're on a 30 | // valid webpage, (anything but about, chrome, and resource URIs) even if you 31 | // begin typing in the urlbar. 32 | // @license This Source Code Form is subject to the terms of the Creative Commons Attribution-NonCommercial-ShareAlike International License, v. 4.0. If a copy of the CC BY-NC-SA 4.0 was not distributed with this file, You can obtain one at http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. 33 | // ==/UserScript== 34 | 35 | (function () { 36 | class HideOnNTP { 37 | // duskFox has a preference, 38 | // userChrome.urlbar.hide-bookmarks-button-on-system-pages 39 | // which hides the urlbar's star button in certain conditions when the 40 | // tracking protection icon is hidden. that means on the new tab page or on 41 | // about:blank, there is no star button taking up space in the urlbar, since 42 | // these pages are unlikely to ever be bookmarked. however, ctrl + D can 43 | // still open the edit bookmark panel. when this happens, it can't be 44 | // anchored to the star button since the star button is hidden. so it is 45 | // anchored to the identity icon instead. this looks kinda silly though 46 | // because it's not meant to be anchored so far to the left of the star 47 | // button. so instead if this pref is enabled, we'll try to anchor it to the 48 | // bookmarks menu button or the library button, if they exist on the user's 49 | // toolbar. 50 | _getAnchor(panel) { 51 | if (this.hideBookmarks) { 52 | for (let id of [ 53 | "star-button-box", 54 | "bookmarks-menu-button", 55 | "libary-button" 56 | ]) { 57 | let node = document.getElementById(id); 58 | if (node && !node.hidden) { 59 | let bounds = 60 | window.windowUtils.getBoundsWithoutFlushing(node); 61 | if (bounds.height > 0 && bounds.width > 0) { 62 | // add an attribute to the panel if it's going to be anchored to a 63 | // toolbar button. duskFox CSS uses this to line it up better with 64 | // a toolbar button. normally a panel is positioned -7px 65 | // vertically from its anchor. but a panel anchored to a toolbar 66 | // button is anchored -12px from its anchor. the reasons for this 67 | // are just related to how the buttons are flexed in their container. 68 | node.classList.contains("toolbarbutton-1") 69 | ? panel.setAttribute("on-toolbar-button", true) 70 | : panel.removeAttribute("on-toolbar-button"); 71 | return node; 72 | } 73 | } 74 | } 75 | } 76 | panel.removeAttribute("on-toolbar-button"); 77 | return BookmarkingUI.anchor; 78 | } 79 | constructor() { 80 | const lazy = {}; 81 | ChromeUtils.defineModuleGetter( 82 | lazy, 83 | "ContentBlockingAllowList", 84 | "resource://gre/modules/ContentBlockingAllowList.jsm" 85 | ); 86 | XPCOMUtils.defineLazyPreferenceGetter( 87 | this, 88 | "hideBookmarks", 89 | "userChrome.urlbar.hide-bookmarks-button-on-system-pages", 90 | false 91 | ); 92 | eval( 93 | `StarUI.showEditBookmarkPopup = async function ` + 94 | StarUI.showEditBookmarkPopup 95 | .toSource() 96 | .replace(/^\(/, "") 97 | .replace(/\)$/, "") 98 | .replace(/async showEditBookmarkPopup/, "") 99 | .replace(/async function\s*/, "") 100 | .replace( 101 | /BookmarkingUI\.anchor/, 102 | `hideOnNTP?._getAnchor(this.panel) || BookmarkingUI.anchor` 103 | ) 104 | ); 105 | // the main part of this script. hide the tracking protection icon on new tab page. 106 | gProtectionsHandler.onLocationChange = function onLocationChange() { 107 | let currentURL = gBrowser.currentURI.spec; 108 | let isInitial = isInitialPage(gBrowser.currentURI); 109 | if (this._showToastAfterRefresh) { 110 | this._showToastAfterRefresh = false; 111 | if ( 112 | this._previousURI == currentURL && 113 | this._previousOuterWindowID == 114 | gBrowser.selectedBrowser.outerWindowID 115 | ) { 116 | this.showProtectionsPopup({ toast: true }); 117 | } 118 | } 119 | this.hadShieldState = false; 120 | if (currentURL.startsWith("view-source:")) { 121 | this._trackingProtectionIconContainer.setAttribute( 122 | "view-source", 123 | true 124 | ); 125 | } else { 126 | this._trackingProtectionIconContainer.removeAttribute( 127 | "view-source" 128 | ); 129 | } 130 | // make the identity box unfocusable on new tab page 131 | if (gIdentityHandler._identityIconBox) { 132 | gIdentityHandler._identityIconBox.disabled = isInitial; 133 | } 134 | // hide the TP icon on new tab page 135 | if ( 136 | !lazy.ContentBlockingAllowList.canHandle( 137 | gBrowser.selectedBrowser 138 | ) || 139 | isInitial 140 | ) { 141 | this._trackingProtectionIconContainer.hidden = true; 142 | return; 143 | } 144 | this._trackingProtectionIconContainer.hidden = false; 145 | this.hasException = lazy.ContentBlockingAllowList.includes( 146 | gBrowser.selectedBrowser 147 | ); 148 | if (this._protectionsPopup) { 149 | this._protectionsPopup.toggleAttribute( 150 | "hasException", 151 | this.hasException 152 | ); 153 | } 154 | this.iconBox.toggleAttribute("hasException", this.hasException); 155 | this.fingerprintersHistogramAdd("pageLoad"); 156 | this.cryptominersHistogramAdd("pageLoad"); 157 | this.shieldHistogramAdd(0); 158 | }; 159 | } 160 | } 161 | function init() { 162 | window.hideOnNTP = new HideOnNTP(); 163 | } 164 | document.documentElement.setAttribute("hide-tp-icon-on-ntp", true); 165 | if (gBrowserInit.delayedStartupFinished) { 166 | init(); 167 | } else { 168 | let delayedListener = (subject, topic) => { 169 | if ( 170 | topic == "browser-delayed-startup-finished" && 171 | subject == window 172 | ) { 173 | Services.obs.removeObserver(delayedListener, topic); 174 | init(); 175 | } 176 | }; 177 | Services.obs.addObserver( 178 | delayedListener, 179 | "browser-delayed-startup-finished" 180 | ); 181 | } 182 | })(); 183 | -------------------------------------------------------------------------------- /chrome/palette/catppuccin-frappe.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --ctp-rosewater: #f2d5cf; 3 | --ctp-flamingo: #eebebe; 4 | --ctp-pink: #f4b8e4; 5 | --ctp-mauve: #ca9ee6; 6 | --ctp-red: #e78284; 7 | --ctp-maroon: #ea999c; 8 | --ctp-peach: #ef9f76; 9 | --ctp-yellow: #e5c890; 10 | --ctp-green: #a6d189; 11 | --ctp-teal: #81c8be; 12 | --ctp-sky: #99d1db; 13 | --ctp-sapphire: #85c1dc; 14 | --ctp-blue: #8caaee; 15 | --ctp-lavender: #babbf1; 16 | --ctp-text: #c6d0f5; 17 | --ctp-subtext1: #b5bfe2; 18 | --ctp-subtext0: #a5adce; 19 | --ctp-overlay2: #949cbb; 20 | --ctp-overlay1: #838ba7; 21 | --ctp-overlay0: #737994; 22 | --ctp-surface2: #626880; 23 | --ctp-surface1: #51576d; 24 | --ctp-surface0: #414559; 25 | --ctp-base: #303446; 26 | --ctp-mantle: #292c3c; 27 | --ctp-crust: #232634; 28 | } 29 | -------------------------------------------------------------------------------- /chrome/palette/catppuccin-latte.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --ctp-rosewater: #dc8a78; 3 | --ctp-flamingo: #dd7878; 4 | --ctp-pink: #ea76cb; 5 | --ctp-mauve: #8839ef; 6 | --ctp-red: #d20f39; 7 | --ctp-maroon: #e64553; 8 | --ctp-peach: #fe640b; 9 | --ctp-yellow: #df8e1d; 10 | --ctp-green: #40a02b; 11 | --ctp-teal: #179299; 12 | --ctp-sky: #04a5e5; 13 | --ctp-sapphire: #209fb5; 14 | --ctp-blue: #1e66f5; 15 | --ctp-lavender: #7287fd; 16 | --ctp-text: #4c4f69; 17 | --ctp-subtext1: #5c5f77; 18 | --ctp-subtext0: #6c6f85; 19 | --ctp-overlay2: #7c7f93; 20 | --ctp-overlay1: #8c8fa1; 21 | --ctp-overlay0: #9ca0b0; 22 | --ctp-surface2: #acb0be; 23 | --ctp-surface1: #bcc0cc; 24 | --ctp-surface0: #ccd0da; 25 | --ctp-crust: #dce0e8; 26 | --ctp-mantle: #e6e9ef; 27 | --ctp-base: #eff1f5; 28 | } 29 | -------------------------------------------------------------------------------- /chrome/palette/catppuccin-macchiato.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --ctp-rosewater: #f4dbd6; 3 | --ctp-flamingo: #f0c6c6; 4 | --ctp-pink: #f5bde6; 5 | --ctp-mauve: #c6a0f6; 6 | --ctp-red: #ed8796; 7 | --ctp-maroon: #ee99a0; 8 | --ctp-peach: #f5a97f; 9 | --ctp-yellow: #eed49f; 10 | --ctp-green: #a6da95; 11 | --ctp-teal: #8bd5ca; 12 | --ctp-sky: #91d7e3; 13 | --ctp-sapphire: #7dc4e4; 14 | --ctp-blue: #8aadf4; 15 | --ctp-lavender: #b7bdf8; 16 | --ctp-text: #cad3f5; 17 | --ctp-subtext1: #b8c0e0; 18 | --ctp-subtext0: #a5adcb; 19 | --ctp-overlay2: #939ab7; 20 | --ctp-overlay1: #8087a2; 21 | --ctp-overlay0: #6e738d; 22 | --ctp-surface2: #5b6078; 23 | --ctp-surface1: #494d64; 24 | --ctp-surface0: #363a4f; 25 | --ctp-base: #24273a; 26 | --ctp-mantle: #1e2030; 27 | --ctp-crust: #181926; 28 | } 29 | -------------------------------------------------------------------------------- /chrome/palette/catppuccin-mocha.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --ctp-rosewater: #f5e0dc; 3 | --ctp-flamingo: #f2cdcd; 4 | --ctp-pink: #f5c2e7; 5 | --ctp-mauve: #cba6f7; 6 | --ctp-red: #f38ba8; 7 | --ctp-maroon: #eba0ac; 8 | --ctp-peach: #fab387; 9 | --ctp-yellow: #f9e2af; 10 | --ctp-green: #a6e3a1; 11 | --ctp-teal: #94e2d5; 12 | --ctp-sky: #89dceb; 13 | --ctp-sapphire: #74c7ec; 14 | --ctp-blue: #89b4fa; 15 | --ctp-lavender: #b4befe; 16 | --ctp-text: #cdd6f4; 17 | --ctp-subtext1: #bac2de; 18 | --ctp-subtext0: #a6adc8; 19 | --ctp-overlay2: #9399b2; 20 | --ctp-overlay1: #7f849c; 21 | --ctp-overlay0: #6c7086; 22 | --ctp-surface2: #585b70; 23 | --ctp-surface1: #45475a; 24 | --ctp-surface0: #313244; 25 | --ctp-base: #1e1e2e; 26 | --ctp-mantle: #181825; 27 | --ctp-crust: #11111b; 28 | } 29 | -------------------------------------------------------------------------------- /chrome/palette/catppuccin.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --ctp-latte-rosewater: #de9584; 3 | --ctp-latte-rosewater-rgb: rgb(222, 149, 132); 4 | --ctp-latte-rosewater-hsl: hsl(11, 58%, 69%); 5 | --ctp-frappe-rosewater: #f2d5cf; 6 | --ctp-frappe-rosewater-rgb: rgb(242, 213, 207); 7 | --ctp-frappe-rosewater-hsl: hsl(10, 57%, 88%); 8 | --ctp-macchiato-rosewater: #f4dbd6; 9 | --ctp-macchiato-rosewater-rgb: rgb(244, 219, 214); 10 | --ctp-macchiato-rosewater-hsl: hsl(10, 58%, 90%); 11 | --ctp-mocha-rosewater: #f5e0dc; 12 | --ctp-mocha-rosewater-rgb: rgb(245, 224, 220); 13 | --ctp-mocha-rosewater-hsl: hsl(10, 56%, 91%); 14 | --ctp-latte-flamingo: #dd7878; 15 | --ctp-latte-flamingo-rgb: rgb(221, 120, 120); 16 | --ctp-latte-flamingo-hsl: hsl(0, 60%, 67%); 17 | --ctp-frappe-flamingo: #eebebe; 18 | --ctp-frappe-flamingo-rgb: rgb(238, 190, 190); 19 | --ctp-frappe-flamingo-hsl: hsl(0, 59%, 84%); 20 | --ctp-macchiato-flamingo: #f0c6c6; 21 | --ctp-macchiato-flamingo-rgb: rgb(240, 198, 198); 22 | --ctp-macchiato-flamingo-hsl: hsl(0, 58%, 86%); 23 | --ctp-mocha-flamingo: #f2cdcd; 24 | --ctp-mocha-flamingo-rgb: rgb(242, 205, 205); 25 | --ctp-mocha-flamingo-hsl: hsl(0, 59%, 88%); 26 | --ctp-latte-pink: #ec83d0; 27 | --ctp-latte-pink-rgb: rgb(236, 131, 208); 28 | --ctp-latte-pink-hsl: hsl(316, 73%, 72%); 29 | --ctp-frappe-pink: #f4b8e4; 30 | --ctp-frappe-pink-rgb: rgb(244, 184, 228); 31 | --ctp-frappe-pink-hsl: hsl(316, 73%, 84%); 32 | --ctp-macchiato-pink: #f5bde6; 33 | --ctp-macchiato-pink-rgb: rgb(245, 189, 230); 34 | --ctp-macchiato-pink-hsl: hsl(316, 74%, 85%); 35 | --ctp-mocha-pink: #f5c2e7; 36 | --ctp-mocha-pink-rgb: rgb(245, 194, 231); 37 | --ctp-mocha-pink-hsl: hsl(316, 72%, 86%); 38 | --ctp-latte-mauve: #8839ef; 39 | --ctp-latte-mauve-rgb: rgb(136, 57, 239); 40 | --ctp-latte-mauve-hsl: hsl(266, 85%, 58%); 41 | --ctp-frappe-mauve: #ca9ee6; 42 | --ctp-frappe-mauve-rgb: rgb(202, 158, 230); 43 | --ctp-frappe-mauve-hsl: hsl(277, 59%, 76%); 44 | --ctp-macchiato-mauve: #c6a0f6; 45 | --ctp-macchiato-mauve-rgb: rgb(198, 160, 246); 46 | --ctp-macchiato-mauve-hsl: hsl(267, 83%, 80%); 47 | --ctp-mocha-mauve: #cba6f7; 48 | --ctp-mocha-mauve-rgb: rgb(203, 166, 247); 49 | --ctp-mocha-mauve-hsl: hsl(267, 84%, 81%); 50 | --ctp-latte-red: #d20f39; 51 | --ctp-latte-red-rgb: rgb(210, 15, 57); 52 | --ctp-latte-red-hsl: hsl(347, 87%, 44%); 53 | --ctp-frappe-red: #e78284; 54 | --ctp-frappe-red-rgb: rgb(231, 130, 132); 55 | --ctp-frappe-red-hsl: hsl(359, 68%, 71%); 56 | --ctp-macchiato-red: #ed8796; 57 | --ctp-macchiato-red-rgb: rgb(237, 135, 150); 58 | --ctp-macchiato-red-hsl: hsl(351, 74%, 73%); 59 | --ctp-mocha-red: #f38ba8; 60 | --ctp-mocha-red-rgb: rgb(243, 139, 168); 61 | --ctp-mocha-red-hsl: hsl(343, 81%, 75%); 62 | --ctp-latte-maroon: #e64553; 63 | --ctp-latte-maroon-rgb: rgb(230, 69, 83); 64 | --ctp-latte-maroon-hsl: hsl(355, 76%, 59%); 65 | --ctp-frappe-maroon: #ea999c; 66 | --ctp-frappe-maroon-rgb: rgb(234, 153, 156); 67 | --ctp-frappe-maroon-hsl: hsl(358, 66%, 76%); 68 | --ctp-macchiato-maroon: #ee99a0; 69 | --ctp-macchiato-maroon-rgb: rgb(238, 153, 160); 70 | --ctp-macchiato-maroon-hsl: hsl(355, 71%, 77%); 71 | --ctp-mocha-maroon: #eba0ac; 72 | --ctp-mocha-maroon-rgb: rgb(235, 160, 172); 73 | --ctp-mocha-maroon-hsl: hsl(350, 65%, 77%); 74 | --ctp-latte-peach: #fe640b; 75 | --ctp-latte-peach-rgb: rgb(254, 100, 11); 76 | --ctp-latte-peach-hsl: hsl(22, 99%, 52%); 77 | --ctp-frappe-peach: #ef9f76; 78 | --ctp-frappe-peach-rgb: rgb(239, 159, 118); 79 | --ctp-frappe-peach-hsl: hsl(20, 79%, 70%); 80 | --ctp-macchiato-peach: #f5a97f; 81 | --ctp-macchiato-peach-rgb: rgb(245, 169, 127); 82 | --ctp-macchiato-peach-hsl: hsl(21, 86%, 73%); 83 | --ctp-mocha-peach: #fab387; 84 | --ctp-mocha-peach-rgb: rgb(250, 179, 135); 85 | --ctp-mocha-peach-hsl: hsl(23, 92%, 75%); 86 | --ctp-latte-yellow: #e49320; 87 | --ctp-latte-yellow-rgb: rgb(228, 147, 32); 88 | --ctp-latte-yellow-hsl: hsl(35, 78%, 51%); 89 | --ctp-frappe-yellow: #e5c890; 90 | --ctp-frappe-yellow-rgb: rgb(229, 200, 144); 91 | --ctp-frappe-yellow-hsl: hsl(40, 62%, 73%); 92 | --ctp-macchiato-yellow: #eed49f; 93 | --ctp-macchiato-yellow-rgb: rgb(238, 212, 159); 94 | --ctp-macchiato-yellow-hsl: hsl(40, 70%, 78%); 95 | --ctp-mocha-yellow: #f9e2af; 96 | --ctp-mocha-yellow-rgb: rgb(249, 226, 175); 97 | --ctp-mocha-yellow-hsl: hsl(41, 86%, 83%); 98 | --ctp-latte-green: #40a02b; 99 | --ctp-latte-green-rgb: rgb(64, 160, 43); 100 | --ctp-latte-green-hsl: hsl(109, 58%, 40%); 101 | --ctp-frappe-green: #a6d189; 102 | --ctp-frappe-green-rgb: rgb(166, 209, 137); 103 | --ctp-frappe-green-hsl: hsl(96, 44%, 68%); 104 | --ctp-macchiato-green: #a6da95; 105 | --ctp-macchiato-green-rgb: rgb(166, 218, 149); 106 | --ctp-macchiato-green-hsl: hsl(105, 48%, 72%); 107 | --ctp-mocha-green: #a6e3a1; 108 | --ctp-mocha-green-rgb: rgb(166, 227, 161); 109 | --ctp-mocha-green-hsl: hsl(115, 54%, 76%); 110 | --ctp-latte-teal: #179299; 111 | --ctp-latte-teal-rgb: rgb(23, 146, 153); 112 | --ctp-latte-teal-hsl: hsl(183, 74%, 35%); 113 | --ctp-frappe-teal: #81c8be; 114 | --ctp-frappe-teal-rgb: rgb(129, 200, 190); 115 | --ctp-frappe-teal-hsl: hsl(172, 39%, 65%); 116 | --ctp-macchiato-teal: #8bd5ca; 117 | --ctp-macchiato-teal-rgb: rgb(139, 213, 202); 118 | --ctp-macchiato-teal-hsl: hsl(171, 47%, 69%); 119 | --ctp-mocha-teal: #94e2d5; 120 | --ctp-mocha-teal-rgb: rgb(148, 226, 213); 121 | --ctp-mocha-teal-hsl: hsl(170, 57%, 73%); 122 | --ctp-latte-sky: #04a5e5; 123 | --ctp-latte-sky-rgb: rgb(4, 165, 229); 124 | --ctp-latte-sky-hsl: hsl(197, 97%, 46%); 125 | --ctp-frappe-sky: #99d1db; 126 | --ctp-frappe-sky-rgb: rgb(153, 209, 219); 127 | --ctp-frappe-sky-hsl: hsl(189, 48%, 73%); 128 | --ctp-macchiato-sky: #91d7e3; 129 | --ctp-macchiato-sky-rgb: rgb(145, 215, 227); 130 | --ctp-macchiato-sky-hsl: hsl(189, 59%, 73%); 131 | --ctp-mocha-sky: #89dceb; 132 | --ctp-mocha-sky-rgb: rgb(137, 220, 235); 133 | --ctp-mocha-sky-hsl: hsl(189, 71%, 73%); 134 | --ctp-latte-sapphire: #209fb5; 135 | --ctp-latte-sapphire-rgb: rgb(32, 159, 181); 136 | --ctp-latte-sapphire-hsl: hsl(189, 70%, 42%); 137 | --ctp-frappe-sapphire: #85c1dc; 138 | --ctp-frappe-sapphire-rgb: rgb(133, 193, 220); 139 | --ctp-frappe-sapphire-hsl: hsl(199, 55%, 69%); 140 | --ctp-macchiato-sapphire: #7dc4e4; 141 | --ctp-macchiato-sapphire-rgb: rgb(125, 196, 228); 142 | --ctp-macchiato-sapphire-hsl: hsl(199, 66%, 69%); 143 | --ctp-mocha-sapphire: #74c7ec; 144 | --ctp-mocha-sapphire-rgb: rgb(116, 199, 236); 145 | --ctp-mocha-sapphire-hsl: hsl(199, 76%, 69%); 146 | --ctp-latte-blue: #2a6ef5; 147 | --ctp-latte-blue-rgb: rgb(42, 110, 245); 148 | --ctp-latte-blue-hsl: hsl(220, 91%, 56%); 149 | --ctp-frappe-blue: #8caaee; 150 | --ctp-frappe-blue-rgb: rgb(140, 170, 238); 151 | --ctp-frappe-blue-hsl: hsl(222, 74%, 74%); 152 | --ctp-macchiato-blue: #8aadf4; 153 | --ctp-macchiato-blue-rgb: rgb(138, 173, 244); 154 | --ctp-macchiato-blue-hsl: hsl(220, 83%, 75%); 155 | --ctp-mocha-blue: #87b0f9; 156 | --ctp-mocha-blue-rgb: rgb(135, 176, 249); 157 | --ctp-mocha-blue-hsl: hsl(218, 90%, 75%); 158 | --ctp-latte-lavender: #7287fd; 159 | --ctp-latte-lavender-rgb: rgb(114, 135, 253); 160 | --ctp-latte-lavender-hsl: hsl(231, 97%, 72%); 161 | --ctp-frappe-lavender: #babbf1; 162 | --ctp-frappe-lavender-rgb: rgb(186, 187, 241); 163 | --ctp-frappe-lavender-hsl: hsl(239, 66%, 84%); 164 | --ctp-macchiato-lavender: #b7bdf8; 165 | --ctp-macchiato-lavender-rgb: rgb(183, 189, 248); 166 | --ctp-macchiato-lavender-hsl: hsl(234, 82%, 85%); 167 | --ctp-mocha-lavender: #b4befe; 168 | --ctp-mocha-lavender-rgb: rgb(180, 190, 254); 169 | --ctp-mocha-lavender-hsl: hsl(232, 97%, 85%); 170 | --ctp-latte-text: #4c4f69; 171 | --ctp-latte-text-rgb: rgb(76, 79, 105); 172 | --ctp-latte-text-hsl: hsl(234, 16%, 35%); 173 | --ctp-frappe-text: #c6ceef; 174 | --ctp-frappe-text-rgb: rgb(198, 206, 239); 175 | --ctp-frappe-text-hsl: hsl(228, 56%, 86%); 176 | --ctp-macchiato-text: #c5cff5; 177 | --ctp-macchiato-text-rgb: rgb(197, 207, 245); 178 | --ctp-macchiato-text-hsl: hsl(228, 71%, 87%); 179 | --ctp-mocha-text: #c6d0f5; 180 | --ctp-mocha-text-rgb: rgb(198, 208, 245); 181 | --ctp-mocha-text-hsl: hsl(227, 70%, 87%); 182 | --ctp-latte-subtext1: #5c5f77; 183 | --ctp-latte-subtext1-rgb: rgb(92, 95, 119); 184 | --ctp-latte-subtext1-hsl: hsl(233, 13%, 41%); 185 | --ctp-frappe-subtext1: #b5bddc; 186 | --ctp-frappe-subtext1-rgb: rgb(181, 189, 220); 187 | --ctp-frappe-subtext1-hsl: hsl(228, 36%, 79%); 188 | --ctp-macchiato-subtext1: #b3bce0; 189 | --ctp-macchiato-subtext1-rgb: rgb(179, 188, 224); 190 | --ctp-macchiato-subtext1-hsl: hsl(228, 42%, 79%); 191 | --ctp-mocha-subtext1: #b3bcdf; 192 | --ctp-mocha-subtext1-rgb: rgb(179, 188, 223); 193 | --ctp-mocha-subtext1-hsl: hsl(228, 41%, 79%); 194 | --ctp-latte-subtext0: #6c6f85; 195 | --ctp-latte-subtext0-rgb: rgb(108, 111, 133); 196 | --ctp-latte-subtext0-hsl: hsl(233, 10%, 47%); 197 | --ctp-frappe-subtext0: #a5acc9; 198 | --ctp-frappe-subtext0-rgb: rgb(165, 172, 201); 199 | --ctp-frappe-subtext0-hsl: hsl(228, 25%, 72%); 200 | --ctp-macchiato-subtext0: #a1aacb; 201 | --ctp-macchiato-subtext0-rgb: rgb(161, 170, 203); 202 | --ctp-macchiato-subtext0-hsl: hsl(227, 29%, 71%); 203 | --ctp-mocha-subtext0: #a1a8c9; 204 | --ctp-mocha-subtext0-rgb: rgb(161, 168, 201); 205 | --ctp-mocha-subtext0-hsl: hsl(229, 27%, 71%); 206 | --ctp-latte-overlay2: #7c7f93; 207 | --ctp-latte-overlay2-rgb: rgb(124, 127, 147); 208 | --ctp-latte-overlay2-hsl: hsl(232, 10%, 53%); 209 | --ctp-frappe-overlay2: #949bb7; 210 | --ctp-frappe-overlay2-rgb: rgb(148, 155, 183); 211 | --ctp-frappe-overlay2-hsl: hsl(228, 20%, 65%); 212 | --ctp-macchiato-overlay2: #8f97b7; 213 | --ctp-macchiato-overlay2-rgb: rgb(143, 151, 183); 214 | --ctp-macchiato-overlay2-hsl: hsl(228, 22%, 64%); 215 | --ctp-mocha-overlay2: #8e95b3; 216 | --ctp-mocha-overlay2-rgb: rgb(142, 149, 179); 217 | --ctp-mocha-overlay2-hsl: hsl(229, 20%, 63%); 218 | --ctp-latte-overlay1: #8c8fa1; 219 | --ctp-latte-overlay1-rgb: rgb(140, 143, 161); 220 | --ctp-latte-overlay1-hsl: hsl(231, 10%, 59%); 221 | --ctp-frappe-overlay1: #838aa4; 222 | --ctp-frappe-overlay1-rgb: rgb(131, 138, 164); 223 | --ctp-frappe-overlay1-hsl: hsl(227, 15%, 58%); 224 | --ctp-macchiato-overlay1: #7d84a2; 225 | --ctp-macchiato-overlay1-rgb: rgb(125, 132, 162); 226 | --ctp-macchiato-overlay1-hsl: hsl(229, 17%, 56%); 227 | --ctp-mocha-overlay1: #7b819d; 228 | --ctp-mocha-overlay1-rgb: rgb(123, 129, 157); 229 | --ctp-mocha-overlay1-hsl: hsl(229, 15%, 55%); 230 | --ctp-latte-overlay0: #9ca0b0; 231 | --ctp-latte-overlay0-rgb: rgb(156, 160, 176); 232 | --ctp-latte-overlay0-hsl: hsl(228, 11%, 65%); 233 | --ctp-frappe-overlay0: #737891; 234 | --ctp-frappe-overlay0-rgb: rgb(115, 120, 145); 235 | --ctp-frappe-overlay0-hsl: hsl(230, 12%, 51%); 236 | --ctp-macchiato-overlay0: #6c728d; 237 | --ctp-macchiato-overlay0-rgb: rgb(108, 114, 141); 238 | --ctp-macchiato-overlay0-hsl: hsl(229, 13%, 49%); 239 | --ctp-mocha-overlay0: #696d86; 240 | --ctp-mocha-overlay0-rgb: rgb(105, 109, 134); 241 | --ctp-mocha-overlay0-hsl: hsl(232, 12%, 47%); 242 | --ctp-latte-surface2: #acb0be; 243 | --ctp-latte-surface2-rgb: rgb(172, 176, 190); 244 | --ctp-latte-surface2-hsl: hsl(227, 12%, 71%); 245 | --ctp-frappe-surface2: #62677e; 246 | --ctp-frappe-surface2-rgb: rgb(98, 103, 126); 247 | --ctp-frappe-surface2-hsl: hsl(229, 13%, 44%); 248 | --ctp-macchiato-surface2: #5a5f78; 249 | --ctp-macchiato-surface2-rgb: rgb(90, 95, 120); 250 | --ctp-macchiato-surface2-hsl: hsl(230, 14%, 41%); 251 | --ctp-mocha-surface2: #565970; 252 | --ctp-mocha-surface2-rgb: rgb(86, 89, 112); 253 | --ctp-mocha-surface2-hsl: hsl(233, 13%, 39%); 254 | --ctp-latte-surface1: #bcc0cc; 255 | --ctp-latte-surface1-rgb: rgb(188, 192, 204); 256 | --ctp-latte-surface1-hsl: hsl(225, 14%, 77%); 257 | --ctp-frappe-surface1: #51566c; 258 | --ctp-frappe-surface1-rgb: rgb(81, 86, 108); 259 | --ctp-frappe-surface1-hsl: hsl(229, 14%, 37%); 260 | --ctp-macchiato-surface1: #484c64; 261 | --ctp-macchiato-surface1-rgb: rgb(72, 76, 100); 262 | --ctp-macchiato-surface1-hsl: hsl(231, 16%, 34%); 263 | --ctp-mocha-surface1: #43465a; 264 | --ctp-mocha-surface1-rgb: rgb(67, 70, 90); 265 | --ctp-mocha-surface1-hsl: hsl(232, 15%, 31%); 266 | --ctp-latte-surface0: #ccd0da; 267 | --ctp-latte-surface0-rgb: rgb(204, 208, 218); 268 | --ctp-latte-surface0-hsl: hsl(223, 16%, 83%); 269 | --ctp-frappe-surface0: #414559; 270 | --ctp-frappe-surface0-rgb: rgb(65, 69, 89); 271 | --ctp-frappe-surface0-hsl: hsl(230, 16%, 30%); 272 | --ctp-macchiato-surface0: #363a4f; 273 | --ctp-macchiato-surface0-rgb: rgb(54, 58, 79); 274 | --ctp-macchiato-surface0-hsl: hsl(230, 19%, 26%); 275 | --ctp-mocha-surface0: #313244; 276 | --ctp-mocha-surface0-rgb: rgb(49, 50, 68); 277 | --ctp-mocha-surface0-hsl: hsl(237, 16%, 23%); 278 | --ctp-latte-base: #eff1f5; 279 | --ctp-latte-base-rgb: rgb(239, 241, 245); 280 | --ctp-latte-base-hsl: hsl(220, 23%, 95%); 281 | --ctp-frappe-base: #303446; 282 | --ctp-frappe-base-rgb: rgb(48, 52, 70); 283 | --ctp-frappe-base-hsl: hsl(229, 19%, 23%); 284 | --ctp-macchiato-base: #24273a; 285 | --ctp-macchiato-base-rgb: rgb(36, 39, 58); 286 | --ctp-macchiato-base-hsl: hsl(232, 23%, 18%); 287 | --ctp-mocha-base: #1e1e2e; 288 | --ctp-mocha-base-rgb: rgb(30, 30, 46); 289 | --ctp-mocha-base-hsl: hsl(240, 21%, 15%); 290 | --ctp-latte-mantle: #e6e9ef; 291 | --ctp-latte-mantle-rgb: rgb(230, 233, 239); 292 | --ctp-latte-mantle-hsl: hsl(220, 22%, 92%); 293 | --ctp-frappe-mantle: #292c3c; 294 | --ctp-frappe-mantle-rgb: rgb(41, 44, 60); 295 | --ctp-frappe-mantle-hsl: hsl(231, 19%, 20%); 296 | --ctp-macchiato-mantle: #1e2030; 297 | --ctp-macchiato-mantle-rgb: rgb(30, 32, 48); 298 | --ctp-macchiato-mantle-hsl: hsl(233, 23%, 15%); 299 | --ctp-mocha-mantle: #181825; 300 | --ctp-mocha-mantle-rgb: rgb(24, 24, 37); 301 | --ctp-mocha-mantle-hsl: hsl(240, 21%, 12%); 302 | --ctp-latte-crust: #dce0e8; 303 | --ctp-latte-crust-rgb: rgb(220, 224, 232); 304 | --ctp-latte-crust-hsl: hsl(220, 21%, 89%); 305 | --ctp-frappe-crust: #232634; 306 | --ctp-frappe-crust-rgb: rgb(35, 38, 52); 307 | --ctp-frappe-crust-hsl: hsl(229, 20%, 17%); 308 | --ctp-macchiato-crust: #181926; 309 | --ctp-macchiato-crust-rgb: rgb(24, 25, 38); 310 | --ctp-macchiato-crust-hsl: hsl(236, 23%, 12%); 311 | --ctp-mocha-crust: #11111b; 312 | --ctp-mocha-crust-rgb: rgb(17, 17, 27); 313 | --ctp-mocha-crust-hsl: hsl(240, 23%, 9%); 314 | } 315 | -------------------------------------------------------------------------------- /chrome/resources/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Tnixc/firefox-config/70874d5eab359439576eb6b830012a8036895aa8/chrome/resources/.DS_Store -------------------------------------------------------------------------------- /chrome/resources/controls/case-sensitive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/resources/controls/close.svg: -------------------------------------------------------------------------------- 1 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /chrome/resources/controls/entire-word.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /chrome/resources/controls/menu-arrow-left-tiny.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/resources/controls/menu-arrow-tiny.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/resources/extensions/3rdpartycookies-disabled.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /chrome/resources/extensions/3rdpartycookies.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chrome/resources/extensions/bitwarden.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/resources/extensions/bypass-paywalls.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /chrome/resources/extensions/case-sensitive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/resources/extensions/command-frames.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /chrome/resources/extensions/container-base.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /chrome/resources/extensions/container-go.svg: -------------------------------------------------------------------------------- 1 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /chrome/resources/extensions/container-plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/resources/extensions/darkmode.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/resources/extensions/dislike.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /chrome/resources/extensions/fingerprint.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /chrome/resources/extensions/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /chrome/resources/extensions/hide-password.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chrome/resources/extensions/hydrus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/resources/extensions/link.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/resources/extensions/pushbullet-solid.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/resources/extensions/rainmeter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/resources/extensions/react.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/resources/extensions/show-password.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chrome/resources/extensions/sidebery.svg: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/resources/extensions/sponsorblock.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /chrome/resources/extensions/stylus.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 19 | 20 | -------------------------------------------------------------------------------- /chrome/resources/extensions/svg-gobbler.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 8 | 9 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /chrome/resources/extensions/sync.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chrome/resources/extensions/tool-inspector.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/resources/extensions/tool-styleeditor.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chrome/resources/extensions/tool-webconsole.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /chrome/resources/extensions/translate-small.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/resources/extensions/translate.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /chrome/resources/extensions/tree-style-tabs-32.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/resources/extensions/tree-style-tabs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/resources/extensions/yomichan.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/resources/material/folder-add.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /chrome/resources/material/folder-open.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/resources/material/folder-save.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /chrome/resources/material/folder-snippets.svg: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /chrome/resources/material/folder-source.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /chrome/resources/material/folder-special.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /chrome/resources/material/folder-upload.svg: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /chrome/resources/material/folder-user-round.svg: -------------------------------------------------------------------------------- 1 | 2 | 8 | -------------------------------------------------------------------------------- /chrome/resources/material/folder-user.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /chrome/resources/material/folder.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | -------------------------------------------------------------------------------- /chrome/resources/material/tag.svg: -------------------------------------------------------------------------------- 1 | 2 | 5 | -------------------------------------------------------------------------------- /chrome/resources/nav-bar/back.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/resources/nav-bar/forward.svg: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /chrome/resources/userChrome.ag.css: -------------------------------------------------------------------------------- 1 | /* This example style is loaded globally as agent sheet. That means it will affect every document that is loaded including web sites so you really want to constrain your styles to apply only where you want. Thus, the default namespace is set to xul to make rules apply to xul elements. Should you want to apply rules to html elements, you need to use the namespace selector like: html|input */ 2 | 3 | /* Default to xul namespace */ 4 | @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); 5 | 6 | /* Allow selecting html elements with named namespace selector */ 7 | @namespace html url("http://www.w3.org/1999/xhtml"); 8 | 9 | /* Demonstrates namespace selector - this would only affect tooltip elements that are html elements. But those don't exist so this does nothing. If you remove the "html|" prefix, then all your tooltips will be black */ 10 | html|tooltip { 11 | -moz-appearance: none; 12 | background-color: rgb(15, 17, 34); 13 | color: rgba(255, 255, 255, 1); 14 | border: none; 15 | padding: 5px; 16 | } 17 | -------------------------------------------------------------------------------- /chrome/resources/userChrome.au.css: -------------------------------------------------------------------------------- 1 | /* This example file is supposed to be loaded as author style sheet. Notice that we can use ::part() ::host() etc. selectors here while they are unavailable in user stylesheets. */ 2 | 3 | /* Default to xul namespace */ 4 | @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"); 5 | 6 | /* Allow selecting html elements with named namespace selector */ 7 | @namespace html url("http://www.w3.org/1999/xhtml"); 8 | 9 | /* Example - this creates a small dot to appear in the top left corner of devtools-button popup - but not in any other panel */ 10 | #customizationui-widget-panel[viewId="PanelUI-developer-tools"]::part( 11 | content 12 | )::before { 13 | content: ""; 14 | display: -moz-box; 15 | position: relative; 16 | z-index: 2; 17 | width: 9px; 18 | margin-inline-end: -9px; 19 | background-image: radial-gradient( 20 | currentcolor, 21 | currentcolor, 22 | transparent 90% 23 | ); 24 | background-size: 5px 5px; 25 | background-position: 4px 4px; 26 | background-repeat: no-repeat; 27 | } 28 | -------------------------------------------------------------------------------- /chrome/resources/window/close-hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /chrome/resources/window/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /chrome/resources/window/inactive.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /chrome/resources/window/maximize-hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/resources/window/maximize-restore.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/resources/window/maximize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/resources/window/minimize-hover.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/resources/window/minimize.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /chrome/userChrome.css: -------------------------------------------------------------------------------- 1 | @import url("./components/simpleMenuWizard/_index.css"); 2 | 3 | @import url("./_config.css"); 4 | @import url("./components/_reassign.css"); 5 | @import url("./components/titlebar.css"); 6 | @import url("./components/tabs.css"); 7 | @import url("./components/nav-bar.css"); 8 | @import url("./components/extensions.css"); 9 | @import url("./components/bookmarks-bar.css"); 10 | @import url("./components/sidebar.css"); 11 | @import url("./components/findbar.css"); 12 | 13 | :root { 14 | /* delay before expanding tabs, set to '0' for no delay */ 15 | --delay: 0s; 16 | --transition-time: 0.12s; 17 | --positionX1: 48px; /* '48px' for left, '0px' for right sidebar */ 18 | --positionX2: absolute; /* 'absolute' for left, 'none' for right sidebar */ 19 | } 20 | 21 | /* General styles */ 22 | #browser { 23 | position: relative; 24 | } 25 | 26 | #nav-bar, 27 | #urlbar { 28 | z-index: 100; 29 | } 30 | 31 | #sidebar-box:not([lwt-sidebar]) { 32 | appearance: unset !important; 33 | } 34 | 35 | #sidebar-box[sidebarcommand*="tabcenter"] { 36 | z-index: 1; 37 | } 38 | 39 | #sidebar-box[sidebarcommand*="tabcenter"] #sidebar-header { 40 | visibility: collapse; 41 | display: none; 42 | } 43 | 44 | [sidebarcommand*="tabcenter"] #sidebar, 45 | #sidebar-box[sidebarcommand*="tabcenter"] { 46 | min-width: 48px !important; 47 | max-width: 48px !important; 48 | width: 48px; 49 | } 50 | 51 | #sidebar-box[sidebarcommand*="tabcenter"]:not([hidden]) { 52 | display: block; 53 | position: var(--positionX2); 54 | box-sizing: content-box; 55 | min-width: 48px; 56 | max-width: 48px; 57 | overflow: hidden; 58 | border-right: 1px solid var(--sidebar-border-color); 59 | z-index: 1; 60 | top: 0; 61 | bottom: 0; 62 | } 63 | 64 | #main-window[inFullscreen] 65 | #sidebar-box[sidebarcommand*="tabcenter"]:not([hidden]) { 66 | min-width: 1px; 67 | max-width: 1px; 68 | } 69 | 70 | #sidebar-box[sidebarcommand*="tabcenter"]:hover #sidebar, 71 | #sidebar-box[sidebarcommand*="tabcenter"]:hover { 72 | min-width: 10vw !important; 73 | width: 30vw !important; 74 | max-width: 200px !important; 75 | z-index: 1 !important; 76 | transition: all var(--transition-time) ease var(--delay); 77 | } 78 | 79 | /* used for delay function */ 80 | #sidebar-box[sidebarcommand*="tabcenter"]:not(:hover) #sidebar, 81 | #sidebar-box[sidebarcommand*="tabcenter"]:not(:hover) { 82 | transition: all var(--transition-time) ease 0s; 83 | } 84 | 85 | @media (width >= 1200px) { 86 | #sidebar-box[sidebarcommand*="tabcenter"]:hover #sidebar, 87 | #sidebar-box[sidebarcommand*="tabcenter"]:hover { 88 | max-width: 250px !important; 89 | } 90 | } 91 | 92 | [sidebarcommand*="tabcenter"] ~ #sidebar-splitter { 93 | display: none; 94 | } 95 | 96 | [sidebarcommand*="tabcenter"] #sidebar { 97 | max-height: 100%; 98 | height: 100%; 99 | } 100 | 101 | #main-window:not([inFullscreen]) 102 | #sidebar-box[sidebarcommand*="tabcenter"]:not([hidden]) 103 | ~ #appcontent { 104 | margin-left: var(--positionX1); 105 | } 106 | 107 | #main-window[inFullscreen][inDOMFullscreen] #appcontent { 108 | margin-left: 0; 109 | } 110 | 111 | #main-window[inFullscreen] #sidebar { 112 | height: 100vh; 113 | } 114 | 115 | [sidebarcommand*="tabcenter"] #sidebar-header { 116 | background: #0c0c0d; 117 | border-bottom: none !important; 118 | } 119 | 120 | [sidebarcommand*="tabcenter"] ~ #sidebar-splitter { 121 | border-right-color: #0c0c0d !important; 122 | border-left-color: #0c0c0d !important; 123 | } 124 | 125 | [sidebarcommand*="tabcenter"] #sidebar-switcher-target, 126 | [sidebarcommand*="tabcenter"] #sidebar-close { 127 | filter: invert(100%); 128 | } 129 | 130 | @media (max-width: 630px) { 131 | #urlbar-container { 132 | min-width: 100% !important; 133 | } 134 | 135 | #menubar-items { 136 | display: none !important; 137 | } 138 | } 139 | 140 | #back-button, 141 | #forward-button { 142 | padding: 0 !important; 143 | } 144 | #back-button > .toolbarbutton-icon { 145 | list-style-image: url("img/back.svg") !important; 146 | } 147 | #forward-button > .toolbarbutton-icon { 148 | list-style-image: url("img/forward.svg") !important; 149 | } 150 | #reload-button > .toolbarbutton-icon { 151 | list-style-image: url("img/reload.svg") !important; 152 | } 153 | #history-panelmenu { 154 | list-style-image: url("img/history.svg") !important; 155 | } 156 | #downloads-indicator-icon { 157 | list-style-image: url("img/downloads.svg") !important; 158 | } 159 | #bookmarks-menu-button > .toolbarbutton-icon { 160 | list-style-image: url("img/bookmarks.svg") !important; 161 | } 162 | #nav-bar-overflow-button > .toolbarbutton-icon { 163 | list-style-image: url("img/overflow.svg") !important; 164 | } 165 | #PanelUI-menu-button { 166 | list-style-image: url("img/menu.svg") !important; 167 | } 168 | 169 | #urlbar { 170 | color: #f5e0dc !important; 171 | font-size: 13px !important; 172 | text-align: left !important; 173 | transition: all ease-in-out 200ms !important; 174 | background: none !important; 175 | } 176 | #urlbar:not([focused]) .urlbar-input-box { 177 | text-align: center; 178 | transition: all ease-in-out 200ms !important; 179 | } 180 | #urlbar:not([focused]) * { 181 | background: transparent !important; 182 | } 183 | #navigator-toolbox-background > * { 184 | background-color: #1e1e2e !important; 185 | color: #f5e0dc !important; 186 | } 187 | 188 | #nordvpnproxy_nordvpn_com-BAP { 189 | filter: brightness(0) saturate(100%) invert(86%) sepia(12%) saturate(5288%) 190 | hue-rotate(188deg) brightness(100%) contrast(102%) !important; 191 | } 192 | #_5bc8d6f7-79e6-42b0-a64e-06a05dc2db5d_-BAP 193 | > stack:nth-child(1) 194 | > image:nth-child(1) { 195 | filter: brightness(0) saturate(100%) invert(86%) sepia(12%) saturate(5288%) 196 | hue-rotate(188deg) brightness(100%) contrast(102%) !important; 197 | } 198 | :root[dialogroot], 199 | :host(dialog) { 200 | --in-content-page-background: #1e1e2e !important; 201 | } 202 | #star-button { 203 | filter: brightness(0%) saturate(100%) invert(65%) sepia(72%) saturate(353%) 204 | hue-rotate(198deg) brightness(104%) contrast(99%) !important; 205 | } 206 | 207 | #downloads-button, 208 | #reader-mode-button-icon { 209 | filter: saturate(0%) brightness(0%) invert(74%) sepia(28%) saturate(2428%) 210 | hue-rotate(188deg) brightness(104%) contrast(91%) !important; 211 | } 212 | 213 | /* Hide the tab bar */ 214 | #TabsToolbar { 215 | display: none !important; 216 | } 217 | 218 | #sidebar-box { 219 | padding: 0 !important; 220 | } 221 | #webext-panels-stack { 222 | overflow-x: hidden !important; 223 | } 224 | -------------------------------------------------------------------------------- /chrome/userContent.css: -------------------------------------------------------------------------------- 1 | @import url("_config.css"); 2 | 3 | :host, 4 | :root { 5 | --in-content-page-color: #4c4f69 !important; 6 | --in-content-page-background: #e6e9ef !important; 7 | --in-content-deemphasized-text: #6c6f85 !important; 8 | --in-content-box-background: #eff1f5 !important; 9 | --in-content-box-border-color: #bcc0cc !important; 10 | --in-content-box-info-background: #eff1f5 !important; 11 | --in-content-icon-color: #eff1f5 !important; 12 | --in-content-border-color: #bcc0cc !important; 13 | --in-content-error-text-color: #d20f39 !important; 14 | --in-content-button-background: #ccd0da !important; 15 | --in-content-button-background-hover: #bdc2cf !important; 16 | --in-content-button-background-active: #b1b7c6 !important; 17 | --in-content-primary-button-text-color: #eff1f5 !important; 18 | --in-content-primary-button-background: #1e66f5 !important; 19 | --in-content-primary-button-background-hover: #0a52e0 !important; 20 | --in-content-primary-button-background-active: #094dd3 !important; 21 | --in-content-danger-button-background: #e64553; 22 | --in-content-danger-button-background-hover: #e01e2f !important; 23 | --in-content-danger-button-background-active: #d31c2c !important; 24 | --in-content-table-background: #eff1f5 !important; 25 | --blue-40: #3575f6 !important; 26 | --blue-50: #1e66f5 !important; 27 | --blue-60: #0b56ed !important; 28 | --blue-70: #094dd3 !important; 29 | --blue-80: #0843b8 !important; 30 | --grey-30: #ccd0da !important; 31 | --grey-60: #7c7f93 !important; 32 | --grey-90-a10: rgba(92, 95, 119, 0.1) !important; 33 | --grey-90-a20: rgba(92, 95, 119, 0.2) !important; 34 | --grey-90-a30: rgba(92, 95, 119, 0.3) !important; 35 | --grey-90-a50: rgba(92, 95, 119, 0.5) !important; 36 | --grey-90-a60: rgba(92, 95, 119, 0.6) !important; 37 | --green-50: #40a02b !important; 38 | --green-60: #3a9027 !important; 39 | --green-70: #338022 !important; 40 | --green-80: #2d701e !important; 41 | --green-90: #26601a !important; 42 | --orange-50: #fe640b !important; 43 | --red-40: #ed1140 !important; 44 | --red-50: #d20f39 !important; 45 | --red-60: #bd0e33 !important; 46 | --red-70: #a80c2e !important; 47 | --red-80: #930b28 !important; 48 | --red-90: #7e0922 !important; 49 | --yellow-50: #df8e1d !important; 50 | --yellow-60: #c9801a !important; 51 | --yellow-60-a30: rgba(201, 128, 26, 0.3) !important; 52 | --yellow-70: #b27217 !important; 53 | --yellow-80: #9c6314 !important; 54 | --yellow-90: #865511 !important; 55 | } 56 | 57 | .identity-color-toolbar { 58 | --identity-tab-color: #4c4f69 !important; 59 | --identity-icon-color: #4c4f69 !important; 60 | } 61 | 62 | .identity-color-blue { 63 | --identity-tab-color: #209fb5 !important; 64 | --identity-icon-color: #209fb5 !important; 65 | } 66 | 67 | .identity-color-turquoise { 68 | --identity-tab-color: #179299 !important; 69 | --identity-icon-color: #179299 !important; 70 | } 71 | 72 | .identity-color-green { 73 | --identity-tab-color: #40a02b !important; 74 | --identity-icon-color: #40a02b !important; 75 | } 76 | 77 | .identity-color-yellow { 78 | --identity-tab-color: #df8e1d !important; 79 | --identity-icon-color: #df8e1d !important; 80 | } 81 | 82 | .identity-color-orange { 83 | --identity-tab-color: #fe640b !important; 84 | --identity-icon-color: #fe640b !important; 85 | } 86 | 87 | .identity-color-red { 88 | --identity-tab-color: #d20f39 !important; 89 | --identity-icon-color: #d20f39 !important; 90 | } 91 | 92 | .identity-color-pink { 93 | --identity-tab-color: #ea76cb !important; 94 | --identity-icon-color: #ea76cb !important; 95 | } 96 | 97 | .identity-color-purple { 98 | --identity-tab-color: #8839ef !important; 99 | --identity-icon-color: #8839ef !important; 100 | } 101 | 102 | @media (prefers-color-scheme: dark) { 103 | :host, 104 | :root { 105 | --in-content-page-background: #181825 !important; 106 | --in-content-page-color: #cdd6f4 !important; 107 | --in-content-deemphasized-text: #a6adc8 !important; 108 | --in-content-box-background: #1e1e2e !important; 109 | --in-content-table-border-color: #45475a !important; 110 | --in-content-box-info-background: #1e1e2e !important; 111 | --in-content-box-border-color: #45475a !important; 112 | --in-content-border-color: #313244 !important; 113 | --in-content-border-hover: #45475a !important; 114 | --in-content-border-invalid: #ed9eab !important; 115 | --in-content-error-text-color: #eba0ac !important; 116 | --in-content-button-background: #313244 !important; 117 | --in-content-button-background-hover: #2a2b3a !important; 118 | --in-content-button-background-active: #393a4f !important; 119 | --in-content-icon-color: #11111b !important; 120 | --in-content-primary-button-text-color: #11111b !important; 121 | --in-content-primary-button-background: #89b4fa !important; 122 | --in-content-primary-button-background-hover: #89b4fb !important; 123 | --in-content-primary-button-background-active: #8fb8fa !important; 124 | --in-content-danger-button-background: #eba0ac !important; 125 | --in-content-danger-button-background-hover: #e16f81 !important; 126 | --in-content-danger-button-background-active: #eca5b0 !important; 127 | --in-content-table-background: #1e1e2e !important; 128 | --card-outline-color: #585b70 !important; 129 | --dialog-warning-text-color: #eba0ac !important; 130 | } 131 | .identity-color-toolbar { 132 | --identity-tab-color: #cdd6f4 !important; 133 | --identity-icon-color: #cdd6f4 !important; 134 | } 135 | .identity-color-blue { 136 | --identity-tab-color: #74c7ec !important; 137 | --identity-icon-color: #74c7ec !important; 138 | } 139 | .identity-color-turquoise { 140 | --identity-tab-color: #94e2d5 !important; 141 | --identity-icon-color: #94e2d5 !important; 142 | } 143 | .identity-color-green { 144 | --identity-tab-color: #a6e3a1 !important; 145 | --identity-icon-color: #a6e3a1 !important; 146 | } 147 | .identity-color-yellow { 148 | --identity-tab-color: #f9e2af !important; 149 | --identity-icon-color: #f9e2af !important; 150 | } 151 | .identity-color-orange { 152 | --identity-tab-color: #fab387 !important; 153 | --identity-icon-color: #fab387 !important; 154 | } 155 | .identity-color-red { 156 | --identity-tab-color: #f38ba8 !important; 157 | --identity-icon-color: #f38ba8 !important; 158 | } 159 | .identity-color-pink { 160 | --identity-tab-color: #f5c2e7 !important; 161 | --identity-icon-color: #f5c2e7 !important; 162 | } 163 | .identity-color-purple { 164 | --identity-tab-color: #cba6f7 !important; 165 | --identity-icon-color: #cba6f7 !important; 166 | } 167 | } 168 | -------------------------------------------------------------------------------- /chrome/utils/chrome.manifest: -------------------------------------------------------------------------------- 1 | content userchromejs ./ 2 | content userscripts ../js/ 3 | --------------------------------------------------------------------------------