diff --git a/flake.lock b/flake.lock index 0d08ad6..2bd18c3 100644 --- a/flake.lock +++ b/flake.lock @@ -7,11 +7,11 @@ ] }, "locked": { - "lastModified": 1751463132, - "narHash": "sha256-eKbIZwTsl+Rbkj4coSZETlcTbmVbegN1nCKJ7059p88=", + "lastModified": 1751880463, + "narHash": "sha256-aSQllMKqsTYAUp4yhpspZn0Hj5yIj7Mh4UD5iyk5iMM=", "owner": "catppuccin", "repo": "nix", - "rev": "a682f7033678ea093c42c5e361975af5988aa3de", + "rev": "9474347c69e93e392f194dda7a57c641ba4b998e", "type": "github" }, "original": { @@ -94,32 +94,11 @@ ] }, "locked": { - "lastModified": 1751549056, - "narHash": "sha256-miKaJ4SFNxhZ/WVDADae2jNd9zka5bV9hKmXspAzvxo=", + "lastModified": 1752093218, + "narHash": "sha256-+3rXu8ewcNDi65/2mKkdSGrivQs5zEZVp5aYszXC0d0=", "owner": "nix-community", "repo": "home-manager", - "rev": "1fa73bb2cc39e250eb01e511ae6ac83bfbf9f38c", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager_2": { - "inputs": { - "nixpkgs": [ - "youtube-music", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1747439237, - "narHash": "sha256-5rCGrnkglKKj4cav1U3HC+SIUNJh08pqOK4spQv9RjA=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "ae755329092c87369b9e9a1510a8cf1ce2b1c708", + "rev": "206ed3c71418b52e176f16f58805c96e84555320", "type": "github" }, "original": { @@ -135,11 +114,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1751561412, - "narHash": "sha256-f09KaIjEwn/ljsV3BsIIbp5Fh7rYDRdxqAltLsf00IE=", + "lastModified": 1752110958, + "narHash": "sha256-D3isIKaOsq/6KfKC+t0NDNJ7cY3oik2SZDuPXVFP6vw=", "owner": "kaylorben", "repo": "nixcord", - "rev": "55990af63fdbc0123a3b7fb18c30de018684ce32", + "rev": "b11cbba03347769b00eaf531cbc518669e8af447", "type": "github" }, "original": { @@ -181,11 +160,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1751271578, - "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", + "lastModified": 1751984180, + "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", + "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", "type": "github" }, "original": { @@ -219,8 +198,7 @@ "home-manager": "home-manager", "nixcord": "nixcord", "nixpkgs": "nixpkgs_2", - "sops-nix": "sops-nix", - "youtube-music": "youtube-music" + "sops-nix": "sops-nix" } }, "sops-nix": { @@ -228,11 +206,11 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1750119275, - "narHash": "sha256-Rr7Pooz9zQbhdVxux16h7URa6mA80Pb/G07T4lHvh0M=", + "lastModified": 1751606940, + "narHash": "sha256-KrDPXobG7DFKTOteqdSVeL1bMVitDcy7otpVZWDE6MA=", "owner": "Mic92", "repo": "sops-nix", - "rev": "77c423a03b9b2b79709ea2cb63336312e78b72e2", + "rev": "3633fc4acf03f43b260244d94c71e9e14a2f6e0d", "type": "github" }, "original": { @@ -240,27 +218,6 @@ "repo": "sops-nix", "type": "github" } - }, - "youtube-music": { - "inputs": { - "home-manager": "home-manager_2", - "nixpkgs": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1747498370, - "narHash": "sha256-mJ7fLdL/A4cWHMm0n3/dcQ72Ijm+uTu/snl8iqgtbtc=", - "owner": "h-banii", - "repo": "youtube-music-nix", - "rev": "410071c47bb39a5abb672cd5c1a59bc5f853d908", - "type": "github" - }, - "original": { - "owner": "h-banii", - "repo": "youtube-music-nix", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index dc8e0f4..44ab739 100644 --- a/flake.nix +++ b/flake.nix @@ -41,11 +41,6 @@ nixcord = { url = "github:kaylorben/nixcord"; }; - - youtube-music = { - url = "github:h-banii/youtube-music-nix"; - inputs.nixpkgs.follows = "nixpkgs"; - }; }; outputs = diff --git a/homes/x86_64-linux/jo/apps/firefox/default.nix b/homes/x86_64-linux/jo/apps/firefox/default.nix new file mode 100644 index 0000000..8844b1a --- /dev/null +++ b/homes/x86_64-linux/jo/apps/firefox/default.nix @@ -0,0 +1,19 @@ +{ lib, config, ... }: +let + inherit (lib) mkIf; +in +{ + programs.firefox = mkIf config.programs.firefox.enable { + # Required settings for Onebar + profiles.default.settings = { + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + }; + }; + + home.file.".mozilla/firefox/default/chrome/userChrome.css".text = + mkIf config.programs.firefox.enable '' + @import "onebar/onebar.css"; + ''; + + home.file.".mozilla/firefox/default/chrome/onebar/onebar.css".source = ./onebar.css; +} diff --git a/homes/x86_64-linux/jo/apps/firefox/onebar.css b/homes/x86_64-linux/jo/apps/firefox/onebar.css new file mode 100644 index 0000000..76282d6 --- /dev/null +++ b/homes/x86_64-linux/jo/apps/firefox/onebar.css @@ -0,0 +1,514 @@ +/* 1.8.3 +- Fixed for Firefox 137! +- Fixed https truncate (fix #29) +*/ + +:root { + --urlbar-collapsed-width: 200px; + --urlbar-open-width: 300px; /* Only when disable-centering-of-URLbar is enabled */ +} + +#navigator-toolbox { + display: flex; + flex-wrap: wrap; + flex-direction: row; + position: relative !important; +} + + +/* Hide flexible spaces */ +toolbarspring, +[id^="wrapper-customizableui-special-spring"] { + display: none !important; +} + + +/* Tabs */ +#titlebar { + width: 0; + flex-grow: 1; + overflow: hidden; +} +#toolbar-menubar[inactive="true"] { /* Prevent duplicate window controls */ + display: none !important; +} +#TabsToolbar { + display: flex !important; + align-items: center; + z-index: 1; + padding-left: var(--tab-block-margin) !important; +} +#TabsToolbar-customization-target { + display: flex !important; + margin-block: auto !important; + align-items: center; +} +#tabbrowser-tabs { + overflow: hidden !important; + width: 0 !important; + flex: 1 !important; +} +.tabbrowser-tab { + min-height: calc(var(--tab-min-height) - 2px) !important; +} +.tab-background { /* Just thought it looked nicer */ + margin-block: calc(2px + var(--tab-block-margin)) !important; + box-shadow: none !important; + transition: background-color .2s; +} + +@media -moz-pref("onebar.hide-all-tabs-button") { + @media not (max-width: 700px) { + #alltabs-button { + display: none !important; + } + } +} + + +/* Navigation buttons */ +@media -moz-pref("onebar.conditional-navigation-buttons") { + :root:not([customizing]) #back-button[disabled], + :root:not([customizing]) #forward-button[disabled] { + display: none !important; + } +} +@media not -moz-pref("onebar.disable-hiding-navigation-buttons") { + #urlbar-container ~ :is(#back-button, #forward-button) { + display: none !important; + } + /* In the customize menu */ + :is(#wrapper-back-button, #wrapper-forward-button) { + opacity: 1 !important; + } + #wrapper-urlbar-container ~ :is(#wrapper-back-button, #wrapper-forward-button) { + opacity: .5 !important; + } + + /* Add note in customize menu for nav buttons */ + #customization-header::after { + content: "To hide the back & forward buttons, drag them to the right of the URL bar"; + background-color: blue; + color: white; + border-radius: 4px; + padding: .4em .7em; + margin-top: 1em; + display: block; + width: max-content; + } +} +:root[customizing] .urlbar-input-box { + visibility: visible !important; +} +:root[customizing] .urlbar-input-box::before { + content: "https://"; + margin-block: auto; +} +:root[customizing] #urlbar-input { + display: none !important; +} + +:root[customizing] .customization-target { + padding-inline: 20px; +} +:root[customizing] #nav-bar-customization-target { + border-right: 1px dashed var(--border-color-deemphasized); +} +:root[customizing] #nav-bar-customization-target, +:root[customizing] #tabbrowser-tabs { + border-left: 1px dashed var(--border-color-deemphasized); +} + + + + + +/* Single Tab Styling */ +@media not -moz-pref("onebar.disable-single-tab") { + .tabbrowser-tab:only-of-type { + width: max-content !important; + max-width: 80% !important; + flex: unset !important; + margin-inline-end: auto !important; + --toolbar-bgcolor: transparent !important; + --tab-selected-bgimage: transparent !important; + } + .tabbrowser-tab:only-of-type .tab-text { + font-weight: 600 !important; + } + .tabbrowser-tab:only-of-type .tab-close-button, + #tabbrowser-tabs:not([closebuttons="activetab"]) ~ #alltabs-button { + display: none !important; + } + .tabbrowser-tab:only-of-type .tab-background { + opacity: 0; + } +} + + + +/* Match button sizes to toolbar buttons */ +#TabsToolbar { + --toolbarbutton-inner-padding: 8px !important; +} +#TabsToolbar toolbarbutton { + margin: 0 !important; +} + + +#alltabs-button { + order: -1; +} +.titlebar-buttonbox-container { + order: -100 !important; +} + +/* Toolbar */ +#nav-bar { + background: none !important; +} +#urlbar-container { + width: var(--urlbar-collapsed-width) !important; + flex: 1 !important; + z-index: 10; + justify-content: flex-end; + transition: background-color .2s, width .2s, min-width .2s; +} +#urlbar:not([breakout-extend]) { + min-width: max-content !important; +} +@media not -moz-pref("onebar.disable-centering-of-URLbar") { + #urlbar { + position: relative !important; + top: unset !important; + margin-block: auto !important; + } + #urlbar[breakout-extend] { + position: absolute !important; + inset-inline: 20vw !important; + width: unset !important; + align-self: flex-start !important; + } +} +@media -moz-pref("onebar.disable-centering-of-URLbar") { + #urlbar[breakout-extend] .urlbar-input-box { + width: 400px !important; + } + #urlbar-container:focus-within, #urlbar-container:hover { + width: var(--urlbar-open-width) !important; + } + @media (max-width: 700px) { + #urlbar[breakout-extend] { + width: unset !important; + } + } +} +@media -moz-pref("onebar.collapse-URLbar") { + :root:not([customizing]) #urlbar-container:has(#urlbar:not([focused])) { + justify-content: flex-end; + width: var(--urlbar-collapsed-width) !important; + --urlbar-collapsed-width: calc( + var(--urlbar-min-height) - 2px + 2 * var(--urlbar-container-padding) + ); + #urlbar { + min-width: var(--urlbar-collapsed-width) !important; + width: max-content !important; + max-width: 2000px; + transition: max-width .2s; + } + #urlbar-background::before { + content: ""; + position: absolute; + inset: 0; + background: var(--toolbar-bgcolor); + border-radius: var(--toolbarbutton-border-radius); + opacity: 0; + z-index: -1; + transition: opacity .2s; + } + &:not(:hover) { + #urlbar { + max-width: var(--urlbar-collapsed-width); + } + } + &:hover #urlbar-background::before { + opacity: 1; + } + .urlbar-input-box { + position: absolute !important; + opacity: 0; + pointer-events: none; + } + .identity-box-button { + padding-inline: var(--urlbar-icon-padding) !important; + } + #identity-icon-box, + #tracking-protection-icon-container { + max-width: unset !important; + opacity: 1 !important; + padding-inline: var(--urlbar-icon-padding) !important; + order: 3; + } + @media (max-width: 700px) { + & { + flex: unset !important; + width: auto !important; + margin-inline-start: auto !important; + } + } + } +} + +#urlbar-input-container { + display: flex !important; +} +.urlbar-input-container > :not(.urlbar-input-box) { + order: 2; + margin: 0 !important; +} +.urlbar-input-box { + flex-grow: 1 !important; + padding-left: .5em !important; + width: 100px !important; + min-width: 50px !important; + transition: width .2s; +} +#urlbar-input:not(:focus-within) { + mask: linear-gradient(to right, black calc(100% - 20px), transparent); +} +#urlbar-background { + transition: border .2s; +} +#urlbar:hover:not([focused="true"]) > #urlbar-background { + --toolbar-field-border-color: var(--toolbar-field-focus-border-color) +} + +/* Truncate https:// when collapsed */ +@media (not -moz-pref("onebar.disable-https-truncate")) and (not -moz-pref("browser.urlbar.trimHttps")) { + #urlbar-input { + transition: margin .1s; + } + .verifiedDomain ~ .urlbar-input-box:not(:focus-within) #urlbar-input { + --https-size: 5ch; + margin-left: calc(0ch - var(--https-size)) !important; + mask: linear-gradient(to right, transparent var(--https-size), black calc(var(--https-size) + 1ch) calc(100% - 3ch), transparent) !important; + } +} + +/* Hide unimportant buttons until hover */ +:root { + --in-transition: font-size .2s, padding .2s, margin .2s, max-width .2s, opacity .2s .15s; + --out-transition: font-size .2s, padding .2s, margin .2s, max-width .2s, opacity .07s; +} +#urlbar-container:hover .urlbar-input-container > box:not(#page-action-buttons):not(.urlbar-input-box), +#urlbar-container:hover #page-action-buttons > *, +#urlbar-container:hover #userContext-label { + transition: var(--in-transition) !important; + max-width: 200px; +} +@media -moz-pref("onebar.disable-autohide-of-URLbar-icons") { + #urlbar-container { + width: var(--urlbar-open-width) !important; + } +} +@media not -moz-pref("onebar.disable-autohide-of-URLbar-icons") { + #urlbar-container:not(:hover) :where( + toolbarbutton, + #userContext-label, + #star-button-box, + .verifiedDomain, + #tracking-protection-icon-container, + #pageAction-urlbar-_testpilot-containers, + #pageActionButton, + ) { + font-size: 0 !important; + max-width: 0 !important; + padding-inline: 0 !important; + margin-inline: 0 !important; + opacity: 0 !important; + transition: var(--out-transition) !important; + } + @media -moz-pref("onebar.hide-all-URLbar-icons") { + #urlbar-container:not(:hover) :where(#page-action-buttons, #identity-box) > * { + font-size: 0 !important; + max-width: 0 !important; + padding-inline: 0 !important; + margin-inline: 0 !important; + opacity: 0 !important; + transition: var(--out-transition) !important; + } + } +} +#urlbar-container #urlbar[focused="true"] .urlbar-input-container > box, +#urlbar-container #urlbar[focused="true"] #page-action-buttons > * { + font-size: 0 !important; + max-width: 0 !important; + padding-inline: 0 !important; + margin-inline: 0 !important; + opacity: 0 !important; + transition: var(--out-transition) !important; +} + +/* Other Buttons */ + +.toolbarbutton-icon { + transition: background-color .1s; +} + +#nav-bar #search-container { + min-width: 32px !important; + transition: min-width .2s; +} + +.titlebar-spacer, +#identity-icon-label { + display: none; +} + +@media -moz-pref("onebar.hide-unified-extensions-button") { + #unified-extensions-button, #unified-extensions-button > .toolbarbutton-icon { + width: 0px !important; + padding: 0px !important; + } +} + +/* Wrap other toolbars to bottom */ +#nav-bar ~ * { + width: 100vw !important; +} + + + + + +/* Linux fixes, credits: https://github.com/ranmaru22/firefox-vertical-tabs/pull/39 */ + +@media (-moz-gtk-csd-available) { + /* window control padding values (these don't change the size of the actual buttons, only the padding for the navbar) */ + :root[customtitlebar] { + /* default button/padding size based on adw-gtk3 theme */ + --uc-win-ctrl-btn-width: 38px; + --uc-win-ctrl-padding: 12px; + } + + :root[customtitlebar][lwtheme] { + /* seperate values for when using a theme, based on the Firefox defaults */ + --uc-win-ctrl-btn-width: 30px; + --uc-win-ctrl-padding: 12px; + } + + /* setting the padding value for all button combinations */ + @media (-moz-gtk-csd-minimize-button), + (-moz-gtk-csd-maximize-button), + (-moz-gtk-csd-close-button) { + #navigator-toolbox { + --uc-navbar-padding: calc(var(--uc-win-ctrl-btn-width) * 1); + } + } + + @media (-moz-gtk-csd-minimize-button) and (-moz-gtk-csd-maximize-button), + (-moz-gtk-csd-minimize-button) and (-moz-gtk-csd-close-button), + (-moz-gtk-csd-maximize-button) and (-moz-gtk-csd-close-button) { + #navigator-toolbox { + --uc-navbar-padding: calc(var(--uc-win-ctrl-btn-width) * 2); + } + } + + @media (-moz-gtk-csd-minimize-button) and (-moz-gtk-csd-maximize-button) and (-moz-gtk-csd-close-button) { + #navigator-toolbox { + --uc-navbar-padding: calc(var(--uc-win-ctrl-btn-width) * 3); + } + } + + /* only applies padding/positioning if there is 1 or more buttons */ + @media (-moz-gtk-csd-minimize-button), + (-moz-gtk-csd-maximize-button), + (-moz-gtk-csd-close-button) { + .titlebar-buttonbox-container { + left: 0; + position: absolute; + display: block; + z-index: 101; + } + @media (-moz-gtk-csd-reversed-placement) { + #TabsToolbar { + padding-left: calc(var(--uc-navbar-padding, 0) + var(--uc-win-ctrl-padding)) !important; + } + } + /* window controls on the right */ + @media not (-moz-gtk-csd-reversed-placement) { + #nav-bar { + padding-right: calc(var(--uc-navbar-padding, 0) + var(--uc-win-ctrl-padding)) !important; + } + .titlebar-buttonbox-container { + right: 0; + left: unset; + } + } + .toolbar-items { + max-width: calc(100vw - ( + var(--uc-navbar-padding, 0) + var(--uc-win-ctrl-padding) + )); + } + } +} + +/* MacOS fixes */ +@media (-moz-platform: macos) { + .titlebar-buttonbox-container { + margin-right: 10px; + } +} + +/* Windows OS fixes */ +@media (-moz-platform: windows-win10), (-moz-platform: windows) { + /* Unsure if same attribute changed on windows, + would like confirmation or someone to fix */ + :root[tabsintitlebar], :root[customtitlebar] { + --uc-window-control-width: 137px; + --uc-win-ctrl-padding: 12px; + } + + #nav-bar { + padding-right: calc(var(--uc-window-control-width) + var(--uc-win-ctrl-padding)) !important; + } + .titlebar-buttonbox-container { + top: 0 !important; + right: 0 !important; + height: calc(var(--tab-min-height) + var(--toolbarbutton-inner-padding) + var(--toolbarbutton-outer-padding)); + position: absolute !important; + z-index: 101 !important; + max-height: 100%; + } + .toolbar-items { + max-width: calc(100vw - var(--uc-window-control-width)) !important; + } + + /* Hide window buttons in fullscreen */ + #navigator-toolbox[style*="margin-top: -"] .titlebar-buttonbox-container, + [inDOMFullscreen="true"] .titlebar-buttonbox-container { + transform: translateY(-100px) + } + +} + +/* Small window */ + +@media (max-width: 700px) { + #nav-bar { + width: 0 !important; + flex-grow: 999; + --toolbarbutton-outer-padding: 0px; + --toolbar-start-end-padding: 0px; + } + #TabsToolbar { + min-width: unset !important; + } + #tabbrowser-tabs { + display: none !important; + } + #urlbar[breakout-extend] { + inset-inline: 15px !important; + z-index: 102 !important; + } +}