aboutsummaryrefslogtreecommitdiff
path: root/modules/firefox.home
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2024-08-25 00:32:18 +0530
committerAkshay Nair <phenax5@gmail.com>2024-08-25 00:32:18 +0530
commitd1c6524ad7f1a805b2a2b0394df2b8cbb286d3e8 (patch)
tree0d5fc436e42f104f8c758efd1ad2d0a38b46e78d /modules/firefox.home
parentdb667b17820599d850d22d6d9345fb507d399a0d (diff)
downloadnixos-config-d1c6524ad7f1a805b2a2b0394df2b8cbb286d3e8.tar.gz
nixos-config-d1c6524ad7f1a805b2a2b0394df2b8cbb286d3e8.zip
Refactor firefox config
Diffstat (limited to 'modules/firefox.home')
-rw-r--r--modules/firefox.home/chrome/globalKeybindings.uc.js28
-rw-r--r--modules/firefox.home/chrome/loadingIndicator.uc.js2
-rw-r--r--modules/firefox.home/chrome/styles/variables.css9
-rw-r--r--modules/firefox.home/chrome/userChrome.css52
-rw-r--r--modules/firefox.home/chrome/userContent.css49
-rw-r--r--modules/firefox.home/default.nix132
-rw-r--r--modules/firefox.home/policies.nix78
-rw-r--r--modules/firefox.home/preferences.nix50
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;
+ }