diff options
| author | Akshay Nair <phenax5@gmail.com> | 2024-08-25 00:32:18 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2024-08-25 00:32:18 +0530 |
| commit | d1c6524ad7f1a805b2a2b0394df2b8cbb286d3e8 (patch) | |
| tree | 0d5fc436e42f104f8c758efd1ad2d0a38b46e78d | |
| parent | db667b17820599d850d22d6d9345fb507d399a0d (diff) | |
| download | nixos-config-d1c6524ad7f1a805b2a2b0394df2b8cbb286d3e8.tar.gz nixos-config-d1c6524ad7f1a805b2a2b0394df2b8cbb286d3e8.zip | |
Refactor firefox config
| -rw-r--r-- | modules/firefox.home/chrome/globalKeybindings.uc.js | 28 | ||||
| -rw-r--r-- | modules/firefox.home/chrome/loadingIndicator.uc.js | 2 | ||||
| -rw-r--r-- | modules/firefox.home/chrome/styles/variables.css | 9 | ||||
| -rw-r--r-- | modules/firefox.home/chrome/userChrome.css | 52 | ||||
| -rw-r--r-- | modules/firefox.home/chrome/userContent.css | 49 | ||||
| -rw-r--r-- | modules/firefox.home/default.nix | 132 | ||||
| -rw-r--r-- | modules/firefox.home/policies.nix | 78 | ||||
| -rw-r--r-- | modules/firefox.home/preferences.nix | 50 |
8 files changed, 253 insertions, 147 deletions
diff --git a/modules/firefox.home/chrome/globalKeybindings.uc.js b/modules/firefox.home/chrome/globalKeybindings.uc.js index 51326fd..1ff868c 100644 --- a/modules/firefox.home/chrome/globalKeybindings.uc.js +++ b/modules/firefox.home/chrome/globalKeybindings.uc.js @@ -12,7 +12,7 @@ RELEASE: [ [ctrl(shift(key('J'))), moveSelectedTabBy(+1)], [ctrl(shift(key('K'))), moveSelectedTabBy(-1)], - [ctrl(shift(key('B'))), toggleTabSidebar()], + [ctrl(shift(key('B'))), sidetabs.toggle()], [ctrl(alt(key('p'))), togglePassthrough(), { modes: ALL_MODES }], ], PRESS: [ @@ -40,8 +40,15 @@ const moveSelectedTabBy = incr => () => updateSelectedTabIndex(incr); const togglePassthrough = () => () => UC.globalKeybindings.updateMode(m => m !== MODE_PASSTHRU ? MODE_PASSTHRU : MODE_NORMAL) - const getSidebarId = () => [...SidebarController.sidebars].find(([_, p]) => p.label?.match(/sidetabs/i))?.[0]; - const toggleTabSidebar = () => () => SidebarController.toggle(getSidebarId() ?? undefined); + const sidetabs = { + getExtensionId: () => [...SidebarController.sidebars].find(([_, p]) => p.label?.match(/sidetabs/i))?.[0], + ensureOpen: () => !SidebarController.isOpen && SidebarController.show(sidetabs.getExtensionId() ?? undefined), + toggle: () => () => { + sidetabs.ensureOpen(); + const sidebar = document.getElementById('sidebar-box'); + sidebar?.classList.toggle('open'); + }, + } const MODE_PASSTHRU = 'passthru'; const MODE_NORMAL = ''; @@ -96,16 +103,21 @@ handleKeyUpEvent: e => module.evaluateKeybindings(module.keybindings.RELEASE, e), handleKeyDownEvent: e => module.evaluateKeybindings(module.keybindings.PRESS, e), + onWindowReady: (win) => { + win.addEventListener('keyup', module.handleKeyUpEvent, true); + win.addEventListener('keydown', module.handleKeyDownEvent, true); + + sidetabs.ensureOpen(); + }, + init(win) { - let observe = () => { + const observe = () => { Services.obs.removeObserver(observe, 'browser-window-before-show'); - win.addEventListener('keyup', module.handleKeyUpEvent, true); - win.addEventListener('keydown', module.handleKeyDownEvent, true); + module.onWindowReady(win) } if (win.__SSi) { - win.addEventListener('keyup', module.handleKeyUpEvent, true); - win.addEventListener('keydown', module.handleKeyDownEvent, true); + module.onWindowReady(win) } else { Services.obs.addObserver(observe, 'browser-window-before-show'); } diff --git a/modules/firefox.home/chrome/loadingIndicator.uc.js b/modules/firefox.home/chrome/loadingIndicator.uc.js index 61ba50b..286376a 100644 --- a/modules/firefox.home/chrome/loadingIndicator.uc.js +++ b/modules/firefox.home/chrome/loadingIndicator.uc.js @@ -63,7 +63,7 @@ onProgressStateUpdate: (win, state) => { /** @type {HTMLElement} */ const urlBar = win.gURLBar.textbox; - console.log(state, urlBar); + // console.log(state, urlBar); if (!urlBar) return; // urlBar.style.setProperty('--ff-urlbar-progress', perc); diff --git a/modules/firefox.home/chrome/styles/variables.css b/modules/firefox.home/chrome/styles/variables.css new file mode 100644 index 0000000..f002f1f --- /dev/null +++ b/modules/firefox.home/chrome/styles/variables.css @@ -0,0 +1,9 @@ +:root { + --ff-accent-color: #4e3aA3; + --ff-accent-color-1: #8161ff; + --ff-bg-color: #0f0c19; + --ff-bg-color-1: #16121f; + --ff-bg-color-2: #26222f; + --ff-urlbar-height: 28px; +} + diff --git a/modules/firefox.home/chrome/userChrome.css b/modules/firefox.home/chrome/userChrome.css index e50a3db..4133251 100644 --- a/modules/firefox.home/chrome/userChrome.css +++ b/modules/firefox.home/chrome/userChrome.css @@ -1,10 +1,4 @@ -:root { - --ff-accent-color: #4e3aA3; - --ff-bg-color: #0f0c19; - --ff-bg-color-1: #16121f; - --ff-bg-color-2: #26222f; - --ff-urlbar-height: 28px; -} +@import url('./styles/variables.css'); #navigator-toolbox { --tab-min-height: 16px; @@ -12,7 +6,7 @@ --tab-block-margin: 0; --toolbarbutton-inner-padding: 6px; --toolbar-bgcolor: var(--ff-bg-color); - --toolbar-field-background-color: var(--ff-bg-color-2); + --toolbar-field-background-color: var(--ff-bg-color-1); --toolbarbutton-border-radius: 0; --toolbar-start-end-padding: 2px; } @@ -30,6 +24,18 @@ toolbarbutton { min-height: 0; } +/* Rounded browser content window */ +#browser { + background-color: var(--ff-bg-color); +} +#appcontent { + margin: 4px; + margin-top: 0; + border-radius: 6px; + border: 1px solid rgba(255,255,255,0.06); + overflow: hidden; +} + /* Tabs */ @@ -112,7 +118,8 @@ toolbarbutton#alltabs-button { #nav-bar { border-top: none !important; - background-color: var(--ff-bg-color-1) !important; + background-color: var(--ff-bg-color) !important; + padding: 4px 2px !important; } #urlbar-container { @@ -125,6 +132,9 @@ toolbarbutton#alltabs-button { left: 0 !important; width: 100% !important; } +#navigator-toolbox { + border-bottom: none !important; +} .urlbar-input-container { background-color: var(--ff-bg-color-2) !important; @@ -157,7 +167,27 @@ toolbarbutton#alltabs-button { #sidebar-splitter { display: none !important; } - +#sidebar-box { + --sidebar-hover-width: 36px; + display: grid !important; + min-width: var(--sidebar-hover-width) !important; + max-width: var(--sidebar-hover-width) !important; + overflow: visible !important; + height: 100% !important; + min-height: 100% !important; + max-height: 100% !important; +} +#sidebar { + height: 100% !important; + width: 100% !important; + min-width: 0 !important; +} +#sidebar-box.open { + --sidebar-visible-width: 240px; + width: var(--sidebar-visible-width) !important; + min-width: var(--sidebar-visible-width) !important; + max-width: var(--sidebar-visible-width) !important; +} /* URL bar progress indicator */ @@ -190,3 +220,5 @@ toolbarbutton#alltabs-button { animation: ucLoadingSnimation 2.2s ease-in-out infinite; border-bottom: 2px solid var(--ff-accent-color); } + + diff --git a/modules/firefox.home/chrome/userContent.css b/modules/firefox.home/chrome/userContent.css new file mode 100644 index 0000000..b7361e8 --- /dev/null +++ b/modules/firefox.home/chrome/userContent.css @@ -0,0 +1,49 @@ +@import url('./styles/variables.css'); + +/* @-moz-document domain(moz-extension://292e7676-1ee2-4c2d-8b18-19529d893b17/src/entries/sidebar/sidebar.html) { */ +/* html, body, * { */ +/* border: 5px solid red !important; */ +/* padding: 5rem !important; */ +/* } */ +/* } */ + +@-moz-document domain(lite.duckduckgo.com) { + html, body { + background-color: var(--ff-bg-color-1) !important; + color: white !important; + } + + body { + width: 100%; + margin: auto; + max-width: 900px !important; + } + + a { + color: var(--ff-accent-color-1) !important; + } + + .result-link { + font-size: 1rem !important; + } + + .did-you-mean { + font-size: 0.8rem !important; + } + .did-you-mean br { + display: none !important; + } + + select.submit { + display: none !important; + } + + .link-text { + color: #888 !important; + } + + .header { + font-size: 1rem !important; + } +} + diff --git a/modules/firefox.home/default.nix b/modules/firefox.home/default.nix index c51ccef..b0a7f71 100644 --- a/modules/firefox.home/default.nix +++ b/modules/firefox.home/default.nix @@ -2,12 +2,11 @@ let unwrapped-firefox-package = pkgs.firefox-devedition-unwrapped; - homepage-url = "file://${config.xdg.configHome}/qutebrowser/homepage/index.html"; - extensions = [ "https://addons.mozilla.org/firefox/downloads/file/3792127/firefox_dracula-1.0.xpi" "https://addons.mozilla.org/firefox/downloads/file/4261352/tridactyl_vim-1.24.1.xpi" "https://addons.mozilla.org/firefox/downloads/file/4240798/sidetabs-0.66.xpi" + # "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi" # dev "https://addons.mozilla.org/firefox/downloads/file/4218479/font_inspect-0.5.8.xpi" @@ -19,133 +18,10 @@ let "https://addons.mozilla.org/firefox/downloads/file/4317971/darkreader-4.9.88.xpi" ]; - # about:config - preferences = { - "browser.newtabpage.enabled" = false; - "browser.startup.homepage" = homepage-url; - "browser.newtab.url" = homepage-url; - - "browser.startup.blankWindow" = false; - "browser.tabs.drawInTitlebar" = true; - "browser.uidensity" = 0; - "browser.theme.dark-private-windows" = true; - "browser.theme.toolbar-theme" = 0; - "browser.aboutConfig.showWarning" = false; - "toolkit.legacyUserProfileCustomizations.stylesheets" = true; - "ui.systemUsesDarkTheme" = 2; - "layers.acceleration.force-enabled" = true; - "gfx.webrender.all" = true; - "widget.gtk.rounded-bottom-corners.enabled" = true; - "browser.urlbar.suggest.calculator" = true; - "browser.urlbar.unitConversion.enabled" = true; - - "extensions.pocket.enabled" = false; - "extensions.pocket.showHome" = false; - "browser.urlbar.suggest.pocket" = false; - "privacy.globalprivacycontrol.enabled" = true; - "browser.search.suggest.enabled" = false; - "browser.urlbar.suggest.searches" = false; - "browser.urlbar.suggest.recentsearches" = false; - "browser.sessionstore.restore_tabs_lazily" = false; - "browser.dataFeatureRecommendations.enabled" = false; - "extensions.htmlaboutaddons.recommendations.enabled" = false; - - "layout.css.has-selector.enabled" = true; - "browser.toolbars.bookmarks.visibility" = "never"; - "browser.tabs.insertAfterCurrent" = true; - "browser.urlbar.shortcuts.bookmarks" = false; - "browser.urlbar.suggest.bookmark" = false; - "browser.newtab.privateAllowed" = true; - - "browser.download.forbid_open_with" = true; - "browser.download.autohideButton" = true; - "browser.download.useDownloadDir" = false; - - # HAcky stuff - "xpinstall.signatures.required" = false; - "extensions.install_origins.enabled" = false; - }; - - # https://mozilla.github.io/policy-templates - policies = { - ManagedBookmarks = [ - { toplevel_name = "Managed bookmarks"; } - { name = "Daily Dev"; url = "https://app.daily.dev"; } - { name = "Email: Microsoft Outlook"; url = "https://outlook.office365.com/mail/"; } - { name = "Email: GMail"; url = "https://mail.google.com/mail/u/0/"; } - # { name = "Shtuff"; children = [] } - ]; - DisplayBookmarksToolbar = "never"; - NoDefaultBookmarks = true; - - DisableAppUpdate = true; - DisableSystemAddonUpdate = true; - DisableProfileImport = true; - DisableFirefoxStudies = true; - DisableTelemetry = true; - DisableFeedbackCommands = true; - DisablePocket = true; - DisableAccounts = true; - DontCheckDefaultBrowser = true; - OfferToSaveLogins = false; - PasswordManagerEnabled = false; - DefaultDownloadDirectory = "${config.home.homeDirectory}/Downloads/firefox"; - NewTabPage = false; - Homepage = { URL = homepage-url; StartPage = "previous-session"; }; - OverrideFirstRunPage = ""; - - # PopupBlocking = []; - SearchEngines = { - Default = "DuckDuckGo"; - SearchSuggestEnabled = false; - Remove = [ "Google" "Bing" "Amazon.com" "eBay" "Wikipedia" ]; - PreventInstalls = false; - Add = [ - { - Name = "DuckDuckGo"; - URLTemplate = "https://duckduckgo.com/?q={searchTerms}"; - Alias = "ddg"; - } - { - Name = "Google"; - URLTemplate = "https://google.com/?q={searchTerms}"; - Alias = "google"; - } - ]; - }; - - UserMessaging = { - ExtensionRecommendations = false; - SkipOnboarding = true; - }; - - ShowHomeButton = false; - - # Permissions = { - # Camera = { - # Allow = [ "https://meet.google.com" ]; - # Block = []; - # }; - # }; - - Extensions = { - Install = extensions; - Uninstall = [ - "google@search.mozilla.org" - "bing@search.mozilla.org" - "amazondotcom@search.mozilla.org" - "ebay@search.mozilla.org" - "wikipedia@search.mozilla.org" - ]; - }; - ExtensionSettings = { - "google@search.mozilla.org".installation_mode = "blocked"; - "bing@search.mozilla.org".installation_mode = "blocked"; - "amazondotcom@search.mozilla.org".installation_mode = "blocked"; - "ebay@search.mozilla.org".installation_mode = "blocked"; - "wikipedia@search.mozilla.org".installation_mode = "blocked"; - }; + preferences = (import ./preferences.nix { inherit config; }); + policies = lib.recursiveUpdate (import ./policies.nix { inherit config; }).policies { + Extensions.Install = extensions; Preferences = lib.mapAttrs (_key: val: { Status = "locked"; Value = val; }) preferences; }; diff --git a/modules/firefox.home/policies.nix b/modules/firefox.home/policies.nix new file mode 100644 index 0000000..f18f3c8 --- /dev/null +++ b/modules/firefox.home/policies.nix @@ -0,0 +1,78 @@ +# https://mozilla.github.io/policy-templates +{ config }: { + policies = { + ManagedBookmarks = [ + { toplevel_name = "Managed bookmarks"; } + { name = "Daily Dev"; url = "https://app.daily.dev"; } + { name = "Email: Microsoft Outlook"; url = "https://outlook.office365.com/mail/"; } + { name = "Email: GMail"; url = "https://mail.google.com/mail/u/0/"; } + # { name = "Shtuff"; children = [] } + ]; + DisplayBookmarksToolbar = "never"; + NoDefaultBookmarks = true; + + DefaultDownloadDirectory = "${config.home.homeDirectory}/Downloads/firefox"; + DisableAccounts = true; + DisableAppUpdate = true; + DisableFeedbackCommands = true; + DisableFirefoxStudies = true; + DisablePocket = true; + DisableProfileImport = true; + DisableSystemAddonUpdate = true; + DisableTelemetry = true; + DontCheckDefaultBrowser = true; + Homepage = { StartPage = "previous-session"; }; + NewTabPage = false; + OfferToSaveLogins = false; + OverrideFirstRunPage = ""; + PasswordManagerEnabled = false; + DisableSetDesktopBackground = true; + UserMessaging = { + ExtensionRecommendations = false; + SkipOnboarding = true; + }; + ShowHomeButton = false; + + # PopupBlocking = []; + SearchEngines = { + Default = "DuckDuckGo lite"; + SearchSuggestEnabled = false; + Remove = [ "Google" "Bing" "Amazon.com" "eBay" "Wikipedia" ]; + PreventInstalls = false; + Add = [ + { + Name = "DuckDuckGo lite"; + URLTemplate = "https://duckduckgo.com/lite/?q={searchTerms}"; + Alias = "ddg"; + } + { + Name = "DuckDuckGo regular"; + URLTemplate = "https://duckduckgo.com/?q={searchTerms}"; + Alias = "ddgr"; + } + { + Name = "Google Sucks"; + URLTemplate = "https://google.com/?q={searchTerms}"; + Alias = "google"; + } + ]; + }; + + Extensions = { + Uninstall = [ + "google@search.mozilla.org" + "bing@search.mozilla.org" + "amazondotcom@search.mozilla.org" + "ebay@search.mozilla.org" + "wikipedia@search.mozilla.org" + ]; + }; + ExtensionSettings = { + "google@search.mozilla.org".installation_mode = "blocked"; + "bing@search.mozilla.org".installation_mode = "blocked"; + "amazondotcom@search.mozilla.org".installation_mode = "blocked"; + "ebay@search.mozilla.org".installation_mode = "blocked"; + "wikipedia@search.mozilla.org".installation_mode = "blocked"; + }; + }; +} diff --git a/modules/firefox.home/preferences.nix b/modules/firefox.home/preferences.nix new file mode 100644 index 0000000..35572cb --- /dev/null +++ b/modules/firefox.home/preferences.nix @@ -0,0 +1,50 @@ +# about:config +{ config }: +let + homepage-url = "file://${config.xdg.configHome}/qutebrowser/homepage/index.html"; +in { + "browser.newtabpage.enabled" = false; + "browser.startup.homepage" = homepage-url; + "browser.newtab.url" = homepage-url; + + "browser.startup.blankWindow" = false; + "browser.tabs.drawInTitlebar" = true; + "browser.uidensity" = 0; + "browser.theme.dark-private-windows" = true; + "browser.theme.toolbar-theme" = 0; + "browser.aboutConfig.showWarning" = false; + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "ui.systemUsesDarkTheme" = 2; + "layers.acceleration.force-enabled" = true; + "gfx.webrender.all" = true; + "widget.gtk.rounded-bottom-corners.enabled" = true; + "browser.urlbar.suggest.calculator" = true; + "browser.urlbar.unitConversion.enabled" = true; + "dom.security.https_first" = true; + + "extensions.pocket.enabled" = false; + "extensions.pocket.showHome" = false; + "browser.urlbar.suggest.pocket" = false; + "privacy.globalprivacycontrol.enabled" = true; + "browser.search.suggest.enabled" = false; + "browser.urlbar.suggest.searches" = false; + "browser.urlbar.suggest.recentsearches" = false; + "browser.sessionstore.restore_tabs_lazily" = false; + "browser.dataFeatureRecommendations.enabled" = false; + "extensions.htmlaboutaddons.recommendations.enabled" = false; + + "layout.css.has-selector.enabled" = true; + "browser.toolbars.bookmarks.visibility" = "never"; + "browser.tabs.insertAfterCurrent" = true; + "browser.urlbar.shortcuts.bookmarks" = false; + "browser.urlbar.suggest.bookmark" = false; + "browser.newtab.privateAllowed" = true; + + "browser.download.forbid_open_with" = true; + "browser.download.autohideButton" = true; + "browser.download.useDownloadDir" = false; + + # HAcky stuff + "xpinstall.signatures.required" = false; + "extensions.install_origins.enabled" = false; + } |
