diff --git a/README.md b/README.md
index 5519cd410..8f2acf3ff 100644
--- a/README.md
+++ b/README.md
@@ -62,6 +62,12 @@ npm start
- [Erlend](https://havn.blog) (For making the logo)
- [ptr1337](https://github.com/ptr1337) (AUR Packages and optimization flags)
+## Third Party Code
+
+Zen coudn't be in its current state without the help of these amazing projects!
+
+- Zen's default preferences are based on [BetterFox](https://github.com/yokoffing/Betterfox)
+
## License
[MPL LICENSE](/LICENSE)
diff --git a/src/browser/app/profile/zen-browser.js b/src/browser/app/profile/zen-browser.js
index 017cc5f78..a856594d0 100644
--- a/src/browser/app/profile/zen-browser.js
+++ b/src/browser/app/profile/zen-browser.js
@@ -63,6 +63,7 @@ pref('zen.welcomeScreen.seen', false);
pref('zen.tabs.vertical', true);
pref('zen.tabs.vertical.right-side', false);
pref('zen.theme.accent-color', "#aac7ff");
+pref('zen.theme.border-radius', 10); // In pixels
pref('zen.theme.toolbar-themed', true);
pref('zen.theme.pill-button', false);
pref('zen.theme.floating-urlbar', false);
@@ -142,3 +143,7 @@ pref("network.http.rcwn.enabled", false);
pref("devtools.debugger.remote-enabled", true);
pref("devtools.chrome.enabled", true);
+// Disable firefox's revamp
+pref("sidebar.revamp", false, locked);
+pref("sidebar.verticalTabs", false, locked);
+
diff --git a/src/browser/base/content/ZenStartup.mjs b/src/browser/base/content/ZenStartup.mjs
new file mode 100644
index 000000000..f3af31596
--- /dev/null
+++ b/src/browser/base/content/ZenStartup.mjs
@@ -0,0 +1,106 @@
+
+var ZenStartup = {
+ init() {
+ this._changeSidebarLocation();
+ this._zenInitBrowserLayout();
+ },
+
+ _zenInitBrowserLayout() {
+ if (this.__hasInitBrowserLayout) return;
+ this.__hasInitBrowserLayout = true;
+ this.openWatermark();
+ console.info("ZenThemeModifier: init browser layout");
+ const kNavbarItems = [
+ "nav-bar",
+ "PersonalToolbar"
+ ];
+ const kNewContainerId = "zen-appcontent-navbar-container";
+ let newContainer = document.getElementById(kNewContainerId);
+ for (let id of kNavbarItems) {
+ const node = document.getElementById(id);
+ console.assert(node, "Could not find node with id: " + id);
+ if (!node) continue;
+ newContainer.appendChild(node);
+ }
+
+ // Fix notification deck
+ document.getElementById("zen-appcontent-navbar-container")
+ .appendChild(document.getElementById("tab-notification-deck-template"));
+
+ gZenVerticalTabsManager.init();
+ gZenCompactModeManager.init();
+ gZenKeyboardShortcuts.init();
+
+ function throttle(f, delay) {
+ let timer = 0;
+ return function(...args) {
+ clearTimeout(timer);
+ timer = setTimeout(() => f.apply(this, args), delay);
+ }
+ }
+
+ new ResizeObserver(throttle(
+ this._updateTabsToolbar.bind(this), 1000
+ )).observe(document.getElementById("tabbrowser-tabs"));
+
+ this.closeWatermark();
+ },
+
+ _updateTabsToolbar() {
+ // Set tabs max-height to the "toolbar-items" height
+ const toolbarItems = document.getElementById("tabbrowser-tabs");
+ const tabs = document.getElementById("tabbrowser-arrowscrollbox");
+ tabs.style.maxHeight = '0px'; // reset to 0
+ const toolbarRect = toolbarItems.getBoundingClientRect();
+ // -5 for the controls padding
+ tabs.style.maxHeight = toolbarRect.height - 5 + "px";
+ console.info("ZenThemeModifier: set tabs max-height to", toolbarRect.height + "px");
+ },
+
+ openWatermark() {
+ if (!Services.prefs.getBoolPref("zen.watermark.enabled", false)) {
+ return;
+ }
+ const watermark = window.MozXULElement.parseXULToFragment(`
+
+
+
+ `);
+ document.body.appendChild(watermark);
+ },
+
+ closeWatermark() {
+ const watermark = document.getElementById("zen-watermark");
+ if (watermark) {
+ watermark.setAttribute("hidden", "true");
+ }
+ },
+
+ _changeSidebarLocation() {
+ const kElementsToAppend = [
+ "sidebar-splitter",
+ "sidebar-box",
+ "navigator-toolbox",
+ ];
+ const wrapper = document.getElementById("zen-tabbox-wrapper");
+ const appWrapepr = document.getElementById("zen-sidebar-box-container");
+ for (let id of kElementsToAppend) {
+ const elem = document.getElementById(id);
+ if (elem) {
+ wrapper.prepend(elem);
+ }
+ }
+ appWrapepr.setAttribute("hidden", "true");
+
+ // Set a splitter to navigator-toolbox
+ const splitter = document.createXULElement("splitter");
+ splitter.setAttribute("id", "zen-sidebar-splitter");
+ splitter.setAttribute("orient", "horizontal");
+ splitter.setAttribute("resizebefore", "sibling");
+ splitter.setAttribute("resizeafter", "none");
+ const titlebar = document.getElementById("navigator-toolbox");
+ titlebar.insertAdjacentElement("afterend", splitter);
+ },
+};
+
+ZenStartup.init();
diff --git a/src/browser/base/content/browser-init-js.patch b/src/browser/base/content/browser-init-js.patch
index a3a3096da..5b816d152 100644
--- a/src/browser/base/content/browser-init-js.patch
+++ b/src/browser/base/content/browser-init-js.patch
@@ -1,12 +1,13 @@
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
-index a79a9734619f89639c15087fe28e9615354a7209..edaef604d33d76b570571e1bbb2ebc590e045d87 100644
+index f8d49ac2a3a62f389ea44b07a26fcb102abc0b24..c29415e10c776ebc435f33e55f8afb71f0dcf22a 100644
--- a/browser/base/content/browser-init.js
+++ b/browser/base/content/browser-init.js
-@@ -237,6 +237,9 @@ var gBrowserInit = {
+@@ -237,6 +237,10 @@ var gBrowserInit = {
gPrivateBrowsingUI.init();
BrowserSearch.init();
BrowserPageActions.init();
+
++ Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window);
+ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window);
+
if (gToolbarKeyNavEnabled) {
diff --git a/src/browser/base/content/browser-xhtml.patch b/src/browser/base/content/browser-xhtml.patch
index 1c6aa3fb6..6c2dfa3ac 100644
--- a/src/browser/base/content/browser-xhtml.patch
+++ b/src/browser/base/content/browser-xhtml.patch
@@ -1,17 +1,17 @@
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
-index 3063370347db9e2812ad30205e585c849e44c91e..be74d9e624b8220cb9bd009bae31fb513c4ec73f 100644
+index 481ebbee437250c71e9bd10c4fb6fc0c31314925..3bb046a4635fad831cc447e29516ee5ed407a3f2 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
-@@ -139,6 +139,8 @@
+@@ -138,6 +138,8 @@
window.addEventListener("DOMContentLoaded",
gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true });
+#include zen-locales.inc.xhtml
-+#include zen-scripts.inc.xhtml
++#include zen-assets.inc.xhtml
# All sets except for popupsets (commands, keys, and stringbundles)
-@@ -160,9 +162,12 @@
+@@ -159,9 +161,12 @@
@@ -27,10 +27,3 @@ index 3063370347db9e2812ad30205e585c849e44c91e..be74d9e624b8220cb9bd009bae31fb51
-
-+#include zen-watermark.inc.xhtml
-
-