diff --git a/.vscode/settings.json b/.vscode/settings.json index 2e6df67cf3..87bacea833 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -2,6 +2,7 @@ "git.ignoreLimitWarning": true, "chat.tools.terminal.autoApprove": { "ForEach-Object": true, - "Get-Item": true + "Get-Item": true, + "Test-Path": true } } \ No newline at end of file diff --git a/application/basilisk/app/profile/basilisk.js b/application/basilisk/app/profile/basilisk.js index 739aa43038..0a98a12bdf 100644 --- a/application/basilisk/app/profile/basilisk.js +++ b/application/basilisk/app/profile/basilisk.js @@ -595,6 +595,7 @@ pref("mousewheel.with_win.action", 1); pref("browser.xul.error_pages.enabled", true); pref("browser.xul.error_pages.expert_bad_cert", false); +pref("browser.theme.mode", "system"); // Enable captive portal detection. pref("network.captive-portal-service.enabled", true); diff --git a/application/basilisk/base/content/abouthome/aboutHome.css b/application/basilisk/base/content/abouthome/aboutHome.css index 62a3ac6d64..b1926505db 100644 --- a/application/basilisk/base/content/abouthome/aboutHome.css +++ b/application/basilisk/base/content/abouthome/aboutHome.css @@ -400,3 +400,45 @@ body[narrow] #restorePreviousSession::before { } } +@media (prefers-color-scheme: dark) { + html { + background-color: #1f2328; + color: #f1f4f7; + } + + a { + color: #75bbff; + } + + #topSection h1 { + color: #f1f4f7; + } + + #searchIcon { + filter: invert(100%) brightness(1.05); + } + + #searchText { + background: #2b3037 padding-box; + border-color: #4b535d; + color: #f1f4f7; + box-shadow: none; + } + + #searchText[keepfocus], + #searchText:focus, + #searchText[autofocus] { + border-color: #4aa3ff; + } + + #searchSubmit { + background: url("chrome://browser/skin/search-arrow-go.svg#search-arrow-go-inverted") center center no-repeat, linear-gradient(#3e454f, #30363d) padding-box; + border-color: #4b535d; + box-shadow: none; + } + + #searchSubmit:dir(rtl) { + background-image: url("chrome://browser/skin/search-arrow-go.svg#search-arrow-go-rtl-inverted"), linear-gradient(#3e454f, #30363d); + } +} + diff --git a/application/basilisk/base/content/browser.css b/application/basilisk/base/content/browser.css index 6de8a8cd0c..8f332c8c3d 100644 --- a/application/basilisk/base/content/browser.css +++ b/application/basilisk/base/content/browser.css @@ -448,6 +448,25 @@ toolbar:not(#TabsToolbar) > #personal-bookmarks { background-position: bottom left; } +/* Dark mode browser frame background overrides */ +:root[data-theme="dark"] #tab-view-deck, +:root[data-theme="dark"] #browser-panel, +:root[data-theme="dark"] #browser-bottombox, +:root[data-theme="dark"] #browser, +:root[data-theme="dark"] #appcontent, +:root[data-theme="dark"] #content, +:root[data-theme="dark"] .browserStack, +:root[data-theme="dark"] #high-priority-global-notificationbox, +:root[data-theme="dark"] #global-notificationbox, +:root[data-theme="dark"] #main-window { + background: #2b2b2b !important; + background-color: #2b2b2b !important; + background-image: none !important; + border: none !important; + border-color: #2b2b2b !important; + box-shadow: none !important; +} + .menuitem-tooltip { -moz-binding: url("chrome://browser/content/urlbarBindings.xml#menuitem-tooltip"); } diff --git a/application/basilisk/base/content/browser.js b/application/basilisk/base/content/browser.js index 81e47cd464..0769d286ad 100644 --- a/application/basilisk/base/content/browser.js +++ b/application/basilisk/base/content/browser.js @@ -11,6 +11,34 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/ContextualIdentityService.jsm"); Cu.import("resource://gre/modules/NotificationDB.jsm"); +function ensureThemeManagerLoaded() { + if (window.ThemeManager && typeof window.ThemeManager.toggleDarkMode == "function") { + return window.ThemeManager; + } + + try { + var loader = Cc["@mozilla.org/moz/jssubscript-loader;1"] + .getService(Ci.mozIJSSubScriptLoader); + loader.loadSubScript("chrome://browser/content/themeManager.js", window); + } catch (ex) { + Cu.reportError(ex); + } + + return window.ThemeManager || null; +} + +window.toggleDarkMode = function() { + var manager = ensureThemeManagerLoaded(); + if (manager && typeof manager.toggleDarkMode == "function") { + manager.toggleDarkMode(); + } +}; + +this.toggleDarkMode = window.toggleDarkMode; +if (typeof top != "undefined") { + top.toggleDarkMode = window.toggleDarkMode; +} + // lazy module getters [ ["AboutHome", "resource:///modules/AboutHome.jsm"], diff --git a/application/basilisk/base/content/browser.xul b/application/basilisk/base/content/browser.xul index f4b802b245..20c0ab097d 100644 --- a/application/basilisk/base/content/browser.xul +++ b/application/basilisk/base/content/browser.xul @@ -76,6 +76,8 @@