Split up Librewolf CSS to make it more readable
This commit is contained in:
parent
ffb1b6d541
commit
e0d8fd1473
|
@ -1,6 +1,10 @@
|
||||||
{ pkgs, config, ... }:
|
{ pkgs, config, ... }:
|
||||||
let
|
let
|
||||||
# FireFox colors, based on https://github.com/Dook97/firefox-qutebrowser-userchrome
|
# FireFox theme, based on https://github.com/Dook97/firefox-qutebrowser-userchrome
|
||||||
|
themeFont = ''
|
||||||
|
--tab-font: '${config.look.fonts.main}';
|
||||||
|
--urlbar-font: '${config.look.fonts.main}';
|
||||||
|
'';
|
||||||
themeJim = ''
|
themeJim = ''
|
||||||
:root {
|
:root {
|
||||||
--tab-active-bg-color: #${config.look.colors.prime};
|
--tab-active-bg-color: #${config.look.colors.prime};
|
||||||
|
@ -23,267 +27,6 @@ let
|
||||||
--urlbar-not-focused-bg-color: #${config.look.colors.prime};
|
--urlbar-not-focused-bg-color: #${config.look.colors.prime};
|
||||||
--toolbar-bgcolor: #${config.look.colors.prime} !important;
|
--toolbar-bgcolor: #${config.look.colors.prime} !important;
|
||||||
'';
|
'';
|
||||||
quteFoxCSS = ''
|
|
||||||
--tab-font: '${config.look.fonts.main}';
|
|
||||||
--urlbar-font: '${config.look.fonts.main}';
|
|
||||||
|
|
||||||
/* try increasing if you encounter problems */
|
|
||||||
--urlbar-height-setting: 24px;
|
|
||||||
--tab-min-height: 20px !important;
|
|
||||||
|
|
||||||
/* I don't recommend you touch this */
|
|
||||||
--arrowpanel-menuitem-padding: 2px !important;
|
|
||||||
--arrowpanel-border-radius: 0px !important;
|
|
||||||
--arrowpanel-menuitem-border-radius: 0px !important;
|
|
||||||
--toolbarbutton-border-radius: 0px !important;
|
|
||||||
--toolbarbutton-inner-padding: 0px 2px !important;
|
|
||||||
--toolbar-field-focus-background-color: var(--urlbar-focused-bg-color) !important;
|
|
||||||
--toolbar-field-background-color: var(--urlbar-not-focused-bg-color) !important;
|
|
||||||
--toolbar-field-focus-border-color: transparent !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --- General debloat ------------------------------ */
|
|
||||||
|
|
||||||
/* bottom left page loading status or url preview */
|
|
||||||
#statuspanel { display: none !important; }
|
|
||||||
|
|
||||||
/* remove radius from right-click popup */
|
|
||||||
menupopup, panel { --panel-border-radius: 0px !important; }
|
|
||||||
menu, menuitem, menucaption { border-radius: 0px !important; }
|
|
||||||
|
|
||||||
/* no large buttons in right-click menu */
|
|
||||||
menupopup > #context-navigation { display: none !important; }
|
|
||||||
menupopup > #context-sep-navigation { display: none !important; }
|
|
||||||
|
|
||||||
/* --- Debloat navbar ------------------------------- */
|
|
||||||
|
|
||||||
#back-button { display: none; }
|
|
||||||
#forward-button { display: none; }
|
|
||||||
#reload-button { display: none; }
|
|
||||||
#stop-button { display: none; }
|
|
||||||
#home-button { display: none; }
|
|
||||||
#library-button { display: none; }
|
|
||||||
#fxa-toolbar-menu-button { display: none; }
|
|
||||||
/* empty space before and after the url bar */
|
|
||||||
#customizableui-special-spring1, #customizableui-special-spring2 { display: none; }
|
|
||||||
|
|
||||||
/* --- Style navbar -------------------------------- */
|
|
||||||
|
|
||||||
/* remove padding between toolbar buttons */
|
|
||||||
toolbar .toolbarbutton-1 { padding: 0 0 !important; }
|
|
||||||
|
|
||||||
#urlbar-container {
|
|
||||||
--urlbar-container-height: var(--urlbar-height-setting) !important;
|
|
||||||
margin-left: 0 !important;
|
|
||||||
margin-right: 0 !important;
|
|
||||||
padding-top: 0 !important;
|
|
||||||
padding-bottom: 0 !important;
|
|
||||||
font-family: var(--urlbar-font, 'monospace');
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#urlbar {
|
|
||||||
--urlbar-height: var(--urlbar-height-setting) !important;
|
|
||||||
--urlbar-toolbar-height: var(--urlbar-height-setting) !important;
|
|
||||||
min-height: var(--urlbar-height-setting) !important;
|
|
||||||
border-color: var(--lwt-toolbar-field-border-color, hsla(240,5%,5%,.25)) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#urlbar-input {
|
|
||||||
margin-left: 0.8em !important;
|
|
||||||
margin-right: 0.4em !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#navigator-toolbox {
|
|
||||||
border: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* keep pop-up menus from overlapping with navbar */
|
|
||||||
#widget-overflow { margin: 0 !important; }
|
|
||||||
#appmenu-popup { margin: 0 !important; }
|
|
||||||
#customizationui-widget-panel { margin: 0 !important; }
|
|
||||||
#unified-extensions-panel { margin: 0 !important; }
|
|
||||||
|
|
||||||
/* --- Unified extensions button -------------------- */
|
|
||||||
|
|
||||||
/* make extension icons smaller */
|
|
||||||
#unified-extensions-view {
|
|
||||||
--uei-icon-size: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* hide bloat */
|
|
||||||
.unified-extensions-item-message-deck,
|
|
||||||
#unified-extensions-view > .panel-header,
|
|
||||||
#unified-extensions-view > toolbarseparator,
|
|
||||||
#unified-extensions-manage-extensions {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* add 3px padding on the top and the bottom of the box */
|
|
||||||
.panel-subview-body {
|
|
||||||
padding: 3px 0px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#unified-extensions-view .unified-extensions-item-menu-button {
|
|
||||||
margin-inline-end: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#unified-extensions-view .toolbarbutton-icon {
|
|
||||||
padding: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.unified-extensions-item-contents {
|
|
||||||
line-height: 1 !important;
|
|
||||||
white-space: nowrap !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --- Debloat URL bar ------------------------------- */
|
|
||||||
|
|
||||||
#identity-box { display: none; }
|
|
||||||
#pageActionButton { display: none; }
|
|
||||||
#pocket-button { display: none; }
|
|
||||||
#urlbar-zoom-button { display: none; }
|
|
||||||
#tracking-protection-icon-container { display: none !important; }
|
|
||||||
#reader-mode-button{ display: none !important; }
|
|
||||||
#star-button { display: none; }
|
|
||||||
#star-button-box:hover { background: inherit !important; }
|
|
||||||
|
|
||||||
/* Go to arrow button at the end of the urlbar when searching */
|
|
||||||
#urlbar-go-button { display: none; }
|
|
||||||
|
|
||||||
/* remove container indicator from urlbar */
|
|
||||||
#userContext-label, #userContext-indicator { display: none !important;}
|
|
||||||
|
|
||||||
/* --- Style tab toolbar ---------------------------- */
|
|
||||||
|
|
||||||
#titlebar {
|
|
||||||
--proton-tab-block-margin: 0px !important;
|
|
||||||
--tab-block-margin: 0px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#TabsToolbar, .tabbrowser-tab {
|
|
||||||
max-height: var(--tab-min-height) !important;
|
|
||||||
font-size: 14px !important;
|
|
||||||
outline: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Change color of normal tabs */
|
|
||||||
tab:not([selected="true"]) {
|
|
||||||
background-color: var(--tab-inactive-bg-color) !important;
|
|
||||||
color: var(--identity-icon-color, var(--tab-inactive-fg-fallback-color)) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
tab {
|
|
||||||
font-family: var(--tab-font, monospace);
|
|
||||||
border: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* safari style tab width */
|
|
||||||
.tabbrowser-tab[fadein] {
|
|
||||||
max-width: 100vw !important;
|
|
||||||
border: none
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hide close button on tabs */
|
|
||||||
#tabbrowser-tabs .tabbrowser-tab .tab-close-button { display: none !important; }
|
|
||||||
|
|
||||||
.tabbrowser-tab {
|
|
||||||
/* remove border between tabs */
|
|
||||||
padding-inline: 0px !important;
|
|
||||||
/* reduce fade effect of tab text */
|
|
||||||
--tab-label-mask-size: 1em !important;
|
|
||||||
/* fix pinned tab behaviour on overflow */
|
|
||||||
overflow-clip-margin: 0px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tab: selected colors */
|
|
||||||
#tabbrowser-tabs .tabbrowser-tab[selected] .tab-content {
|
|
||||||
background: var(--tab-active-bg-color) !important;
|
|
||||||
color: var(--identity-icon-color, var(--tab-active-fg-fallback-color)) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tab: hovered colors */
|
|
||||||
#tabbrowser-tabs .tabbrowser-tab:hover:not([selected]) .tab-content {
|
|
||||||
background: var(--tab-hover-bg-color) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* hide window controls */
|
|
||||||
.titlebar-buttonbox-container { display: none; }
|
|
||||||
|
|
||||||
/* remove titlebar spacers */
|
|
||||||
.titlebar-spacer { display: none !important; }
|
|
||||||
|
|
||||||
/* disable tab shadow */
|
|
||||||
#tabbrowser-tabs:not([noshadowfortests]) .tab-background:is([selected], [multiselected]) {
|
|
||||||
box-shadow: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* remove dark space between pinned tab and first non-pinned tab */
|
|
||||||
#tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs]) >
|
|
||||||
#tabbrowser-arrowscrollbox >
|
|
||||||
.tabbrowser-tab:nth-child(1 of :not([pinned], [hidden])) {
|
|
||||||
margin-inline-start: 0px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* remove dropdown menu button which displays all tabs on overflow */
|
|
||||||
#alltabs-button { display: none !important }
|
|
||||||
|
|
||||||
/* fix displaying of pinned tabs on overflow */
|
|
||||||
#tabbrowser-tabs:not([secondarytext-unsupported]) .tab-label-container {
|
|
||||||
height: var(--tab-min-height) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* remove overflow scroll buttons */
|
|
||||||
#scrollbutton-up, #scrollbutton-down { display: none !important; }
|
|
||||||
|
|
||||||
/* remove new tab button */
|
|
||||||
#tabs-newtab-button {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --- Autohide Navbar ------------------------------ */
|
|
||||||
|
|
||||||
/* hide navbar unless focused */
|
|
||||||
#nav-bar {
|
|
||||||
min-height: 0 !important;
|
|
||||||
max-height: 0 !important;
|
|
||||||
height: 0 !important;
|
|
||||||
--moz-transform: scaleY(0) !important;
|
|
||||||
transform: scaleY(0) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* show on focus */
|
|
||||||
#nav-bar:focus-within {
|
|
||||||
--moz-transform: scale(1) !important;
|
|
||||||
transform: scale(1) !important;
|
|
||||||
max-height: var(--urlbar-height-setting) !important;
|
|
||||||
height: var(--urlbar-height-setting) !important;
|
|
||||||
min-height: var(--urlbar-height-setting) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
#navigator-toolbox:focus-within > .browser-toolbar {
|
|
||||||
transform: translateY(0);
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --- Hide tab bar on single tab ------------------- */
|
|
||||||
|
|
||||||
#tabbrowser-tabs .tabbrowser-tab:only-of-type,
|
|
||||||
#tabbrowser-tabs .tabbrowser-tab:only-of-type + #tabbrowser-arrowscrollbox-periphery{
|
|
||||||
display:none !important;
|
|
||||||
}
|
|
||||||
#tabbrowser-tabs, #tabbrowser-arrowscrollbox {min-height:0!important;}
|
|
||||||
#alltabs-button {display:none !important;}
|
|
||||||
|
|
||||||
/* --- Prevent tab folding -------------------------- */
|
|
||||||
|
|
||||||
.tabbrowser-tab {
|
|
||||||
min-width: initial !important;
|
|
||||||
}
|
|
||||||
.tab-content {
|
|
||||||
overflow: hidden !important;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
in {
|
in {
|
||||||
# Enable Librewolf and extensions
|
# Enable Librewolf and extensions
|
||||||
programs.firefox = let
|
programs.firefox = let
|
||||||
|
@ -376,7 +119,8 @@ in {
|
||||||
settings = commonSettings;
|
settings = commonSettings;
|
||||||
userChrome = ''
|
userChrome = ''
|
||||||
${themeJim}
|
${themeJim}
|
||||||
${quteFoxCSS}
|
${themeFont}
|
||||||
|
${builtins.readFile ./quteFox.css}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
Alt = {
|
Alt = {
|
||||||
|
@ -386,7 +130,8 @@ in {
|
||||||
settings = commonSettings;
|
settings = commonSettings;
|
||||||
userChrome = ''
|
userChrome = ''
|
||||||
${themeAlt}
|
${themeAlt}
|
||||||
${quteFoxCSS}
|
${themeFont}
|
||||||
|
${builtins.readFile ./quteFox.css}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
Misc = {
|
Misc = {
|
||||||
|
@ -395,18 +140,6 @@ in {
|
||||||
search = commonSearch;
|
search = commonSearch;
|
||||||
settings = commonSettings;
|
settings = commonSettings;
|
||||||
containersForce = true;
|
containersForce = true;
|
||||||
containers = {
|
|
||||||
Google = {
|
|
||||||
color = "green";
|
|
||||||
icon = "fingerprint";
|
|
||||||
id = 200;
|
|
||||||
};
|
|
||||||
Work = {
|
|
||||||
color = "red";
|
|
||||||
icon = "briefcase";
|
|
||||||
id = 201;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
256
modules/home/programs/gui/librewolf/quteFox.css
Normal file
256
modules/home/programs/gui/librewolf/quteFox.css
Normal file
|
@ -0,0 +1,256 @@
|
||||||
|
/* try increasing if you encounter problems */
|
||||||
|
--urlbar-height-setting: 24px;
|
||||||
|
--tab-min-height: 20px !important;
|
||||||
|
|
||||||
|
/* I don't recommend you touch this */
|
||||||
|
--arrowpanel-menuitem-padding: 2px !important;
|
||||||
|
--arrowpanel-border-radius: 0px !important;
|
||||||
|
--arrowpanel-menuitem-border-radius: 0px !important;
|
||||||
|
--toolbarbutton-border-radius: 0px !important;
|
||||||
|
--toolbarbutton-inner-padding: 0px 2px !important;
|
||||||
|
--toolbar-field-focus-background-color: var(--urlbar-focused-bg-color) !important;
|
||||||
|
--toolbar-field-background-color: var(--urlbar-not-focused-bg-color) !important;
|
||||||
|
--toolbar-field-focus-border-color: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- General debloat ------------------------------ */
|
||||||
|
|
||||||
|
/* bottom left page loading status or url preview */
|
||||||
|
#statuspanel { display: none !important; }
|
||||||
|
|
||||||
|
/* remove radius from right-click popup */
|
||||||
|
menupopup, panel { --panel-border-radius: 0px !important; }
|
||||||
|
menu, menuitem, menucaption { border-radius: 0px !important; }
|
||||||
|
|
||||||
|
/* no large buttons in right-click menu */
|
||||||
|
menupopup > #context-navigation { display: none !important; }
|
||||||
|
menupopup > #context-sep-navigation { display: none !important; }
|
||||||
|
|
||||||
|
/* --- Debloat navbar ------------------------------- */
|
||||||
|
|
||||||
|
#back-button { display: none; }
|
||||||
|
#forward-button { display: none; }
|
||||||
|
#reload-button { display: none; }
|
||||||
|
#stop-button { display: none; }
|
||||||
|
#home-button { display: none; }
|
||||||
|
#library-button { display: none; }
|
||||||
|
#fxa-toolbar-menu-button { display: none; }
|
||||||
|
/* empty space before and after the url bar */
|
||||||
|
#customizableui-special-spring1, #customizableui-special-spring2 { display: none; }
|
||||||
|
|
||||||
|
/* --- Style navbar -------------------------------- */
|
||||||
|
|
||||||
|
/* remove padding between toolbar buttons */
|
||||||
|
toolbar .toolbarbutton-1 { padding: 0 0 !important; }
|
||||||
|
|
||||||
|
#urlbar-container {
|
||||||
|
--urlbar-container-height: var(--urlbar-height-setting) !important;
|
||||||
|
margin-left: 0 !important;
|
||||||
|
margin-right: 0 !important;
|
||||||
|
padding-top: 0 !important;
|
||||||
|
padding-bottom: 0 !important;
|
||||||
|
font-family: var(--urlbar-font, 'monospace');
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#urlbar {
|
||||||
|
--urlbar-height: var(--urlbar-height-setting) !important;
|
||||||
|
--urlbar-toolbar-height: var(--urlbar-height-setting) !important;
|
||||||
|
min-height: var(--urlbar-height-setting) !important;
|
||||||
|
border-color: var(--lwt-toolbar-field-border-color, hsla(240,5%,5%,.25)) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#urlbar-input {
|
||||||
|
margin-left: 0.8em !important;
|
||||||
|
margin-right: 0.4em !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigator-toolbox {
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* keep pop-up menus from overlapping with navbar */
|
||||||
|
#widget-overflow { margin: 0 !important; }
|
||||||
|
#appmenu-popup { margin: 0 !important; }
|
||||||
|
#customizationui-widget-panel { margin: 0 !important; }
|
||||||
|
#unified-extensions-panel { margin: 0 !important; }
|
||||||
|
|
||||||
|
/* --- Unified extensions button -------------------- */
|
||||||
|
|
||||||
|
/* make extension icons smaller */
|
||||||
|
#unified-extensions-view {
|
||||||
|
--uei-icon-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* hide bloat */
|
||||||
|
.unified-extensions-item-message-deck,
|
||||||
|
#unified-extensions-view > .panel-header,
|
||||||
|
#unified-extensions-view > toolbarseparator,
|
||||||
|
#unified-extensions-manage-extensions {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add 3px padding on the top and the bottom of the box */
|
||||||
|
.panel-subview-body {
|
||||||
|
padding: 3px 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#unified-extensions-view .unified-extensions-item-menu-button {
|
||||||
|
margin-inline-end: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#unified-extensions-view .toolbarbutton-icon {
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unified-extensions-item-contents {
|
||||||
|
line-height: 1 !important;
|
||||||
|
white-space: nowrap !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Debloat URL bar ------------------------------- */
|
||||||
|
|
||||||
|
#identity-box { display: none; }
|
||||||
|
#pageActionButton { display: none; }
|
||||||
|
#pocket-button { display: none; }
|
||||||
|
#urlbar-zoom-button { display: none; }
|
||||||
|
#tracking-protection-icon-container { display: none !important; }
|
||||||
|
#reader-mode-button{ display: none !important; }
|
||||||
|
#star-button { display: none; }
|
||||||
|
#star-button-box:hover { background: inherit !important; }
|
||||||
|
|
||||||
|
/* Go to arrow button at the end of the urlbar when searching */
|
||||||
|
#urlbar-go-button { display: none; }
|
||||||
|
|
||||||
|
/* remove container indicator from urlbar */
|
||||||
|
#userContext-label, #userContext-indicator { display: none !important;}
|
||||||
|
|
||||||
|
/* --- Style tab toolbar ---------------------------- */
|
||||||
|
|
||||||
|
#titlebar {
|
||||||
|
--proton-tab-block-margin: 0px !important;
|
||||||
|
--tab-block-margin: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#TabsToolbar, .tabbrowser-tab {
|
||||||
|
max-height: var(--tab-min-height) !important;
|
||||||
|
font-size: 14px !important;
|
||||||
|
outline: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Change color of normal tabs */
|
||||||
|
tab:not([selected="true"]) {
|
||||||
|
background-color: var(--tab-inactive-bg-color) !important;
|
||||||
|
color: var(--identity-icon-color, var(--tab-inactive-fg-fallback-color)) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
tab {
|
||||||
|
font-family: var(--tab-font, monospace);
|
||||||
|
border: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* safari style tab width */
|
||||||
|
.tabbrowser-tab[fadein] {
|
||||||
|
max-width: 100vw !important;
|
||||||
|
border: none
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide close button on tabs */
|
||||||
|
#tabbrowser-tabs .tabbrowser-tab .tab-close-button { display: none !important; }
|
||||||
|
|
||||||
|
.tabbrowser-tab {
|
||||||
|
/* remove border between tabs */
|
||||||
|
padding-inline: 0px !important;
|
||||||
|
/* reduce fade effect of tab text */
|
||||||
|
--tab-label-mask-size: 1em !important;
|
||||||
|
/* fix pinned tab behaviour on overflow */
|
||||||
|
overflow-clip-margin: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tab: selected colors */
|
||||||
|
#tabbrowser-tabs .tabbrowser-tab[selected] .tab-content {
|
||||||
|
background: var(--tab-active-bg-color) !important;
|
||||||
|
color: var(--identity-icon-color, var(--tab-active-fg-fallback-color)) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Tab: hovered colors */
|
||||||
|
#tabbrowser-tabs .tabbrowser-tab:hover:not([selected]) .tab-content {
|
||||||
|
background: var(--tab-hover-bg-color) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* hide window controls */
|
||||||
|
.titlebar-buttonbox-container { display: none; }
|
||||||
|
|
||||||
|
/* remove titlebar spacers */
|
||||||
|
.titlebar-spacer { display: none !important; }
|
||||||
|
|
||||||
|
/* disable tab shadow */
|
||||||
|
#tabbrowser-tabs:not([noshadowfortests]) .tab-background:is([selected], [multiselected]) {
|
||||||
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* remove dark space between pinned tab and first non-pinned tab */
|
||||||
|
#tabbrowser-tabs[haspinnedtabs]:not([positionpinnedtabs]) >
|
||||||
|
#tabbrowser-arrowscrollbox >
|
||||||
|
.tabbrowser-tab:nth-child(1 of :not([pinned], [hidden])) {
|
||||||
|
margin-inline-start: 0px !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* remove dropdown menu button which displays all tabs on overflow */
|
||||||
|
#alltabs-button { display: none !important }
|
||||||
|
|
||||||
|
/* fix displaying of pinned tabs on overflow */
|
||||||
|
#tabbrowser-tabs:not([secondarytext-unsupported]) .tab-label-container {
|
||||||
|
height: var(--tab-min-height) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* remove overflow scroll buttons */
|
||||||
|
#scrollbutton-up, #scrollbutton-down { display: none !important; }
|
||||||
|
|
||||||
|
/* remove new tab button */
|
||||||
|
#tabs-newtab-button {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Autohide Navbar ------------------------------ */
|
||||||
|
|
||||||
|
/* hide navbar unless focused */
|
||||||
|
#nav-bar {
|
||||||
|
min-height: 0 !important;
|
||||||
|
max-height: 0 !important;
|
||||||
|
height: 0 !important;
|
||||||
|
--moz-transform: scaleY(0) !important;
|
||||||
|
transform: scaleY(0) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* show on focus */
|
||||||
|
#nav-bar:focus-within {
|
||||||
|
--moz-transform: scale(1) !important;
|
||||||
|
transform: scale(1) !important;
|
||||||
|
max-height: var(--urlbar-height-setting) !important;
|
||||||
|
height: var(--urlbar-height-setting) !important;
|
||||||
|
min-height: var(--urlbar-height-setting) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
#navigator-toolbox:focus-within > .browser-toolbar {
|
||||||
|
transform: translateY(0);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --- Hide tab bar on single tab ------------------- */
|
||||||
|
|
||||||
|
#tabbrowser-tabs .tabbrowser-tab:only-of-type,
|
||||||
|
#tabbrowser-tabs .tabbrowser-tab:only-of-type + #tabbrowser-arrowscrollbox-periphery{
|
||||||
|
display:none !important;
|
||||||
|
}
|
||||||
|
#tabbrowser-tabs, #tabbrowser-arrowscrollbox {min-height:0!important;}
|
||||||
|
#alltabs-button {display:none !important;}
|
||||||
|
|
||||||
|
/* --- Prevent tab folding -------------------------- */
|
||||||
|
|
||||||
|
.tabbrowser-tab {
|
||||||
|
min-width: initial !important;
|
||||||
|
}
|
||||||
|
.tab-content {
|
||||||
|
overflow: hidden !important;
|
||||||
|
}
|
|
@ -3,7 +3,7 @@
|
||||||
home = {
|
home = {
|
||||||
packages = with pkgs; [ mangohud ];
|
packages = with pkgs; [ mangohud ];
|
||||||
file = {
|
file = {
|
||||||
# I know options exist for this, but the order is not respected.
|
# These options exist in Nixlang, but the order is not respected.
|
||||||
".config/MangoHud/MangoHud.conf".text = ''
|
".config/MangoHud/MangoHud.conf".text = ''
|
||||||
table_columns=2
|
table_columns=2
|
||||||
frametime=0
|
frametime=0
|
||||||
|
|
|
@ -13,7 +13,6 @@
|
||||||
RecentFilesNumber=0
|
RecentFilesNumber=0
|
||||||
|
|
||||||
[Desktop]
|
[Desktop]
|
||||||
HideItems=false
|
|
||||||
SortColumn=name
|
SortColumn=name
|
||||||
SortFolderFirst=true
|
SortFolderFirst=true
|
||||||
SortHiddenLast=false
|
SortHiddenLast=false
|
||||||
|
@ -51,7 +50,6 @@
|
||||||
ShowMenuBar=true
|
ShowMenuBar=true
|
||||||
ShowTabClose=true
|
ShowTabClose=true
|
||||||
SwitchToNewTab=true
|
SwitchToNewTab=true
|
||||||
TabPaths=@Invalid()
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -115,10 +115,9 @@
|
||||||
|
|
||||||
# Remote files
|
# Remote files
|
||||||
J:/home/jimbo/JimboNFS
|
J:/home/jimbo/JimboNFS
|
||||||
K:/home/jimbo/JimboNFS/Downloads
|
K:/home/jimbo/JimboNFS/Files
|
||||||
P:/home/jimbo/JimboNFS/Photos
|
V:/home/jimbo/JimboNFS/Media
|
||||||
V:/home/jimbo/JimboNFS/Videos/Random
|
M:/home/jimbo/JimboNFS/Music
|
||||||
M:/home/jimbo/JimboNFS/Music/Synced
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
|
|
|
@ -217,7 +217,7 @@
|
||||||
"${primeMod}+shift+a" = ''focus child'';
|
"${primeMod}+shift+a" = ''focus child'';
|
||||||
|
|
||||||
# Scratchpads
|
# Scratchpads
|
||||||
"Shift+Ctrl+Backslash" = ''[app_id="gotop"] scratchpad show, move position center, resize set 1216 888'';
|
"Shift+Ctrl+Backslash" = ''[app_id="gotop"] scratchpad show, move position center resize set 1216 888'';
|
||||||
"${primeMod}+Shift+m" = ''[app_id="music"] scratchpad show, move position center, resize set 1006 657'';
|
"${primeMod}+Shift+m" = ''[app_id="music"] scratchpad show, move position center, resize set 1006 657'';
|
||||||
"${primeMod}+Shift+v" = ''[app_id="sound"] scratchpad show, move position center, resize set 1000 800'';
|
"${primeMod}+Shift+v" = ''[app_id="sound"] scratchpad show, move position center, resize set 1000 800'';
|
||||||
"${primeMod}+Shift+Backslash" = ''[app_id="com.github.wwmm.easyeffects"] scratchpad show, move position center, resize set 1000 800'';
|
"${primeMod}+Shift+Backslash" = ''[app_id="com.github.wwmm.easyeffects"] scratchpad show, move position center, resize set 1000 800'';
|
||||||
|
|
|
@ -71,12 +71,6 @@
|
||||||
command = ''mark scratchpad, opacity 0.9'';
|
command = ''mark scratchpad, opacity 0.9'';
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create a "Scratchpad" for apps I don't want to be seen when launched
|
|
||||||
{
|
|
||||||
criteria = { con_mark = "hiddenaway"; };
|
|
||||||
command = ''move scratchpad'';
|
|
||||||
}
|
|
||||||
|
|
||||||
# Give apps that don't have them borders
|
# Give apps that don't have them borders
|
||||||
{
|
{
|
||||||
criteria = { con_mark = "borderless"; };
|
criteria = { con_mark = "borderless"; };
|
||||||
|
|
|
@ -217,20 +217,8 @@
|
||||||
condition=$(echo "$fetch" | sed -n '3p')
|
condition=$(echo "$fetch" | sed -n '3p')
|
||||||
location=$(echo "$fetch" | sed -n '4p')
|
location=$(echo "$fetch" | sed -n '4p')
|
||||||
|
|
||||||
# Map weather conditions to emojis
|
|
||||||
case "$condition" in
|
|
||||||
"Clear"|"Sunny") emoji="☀️";;
|
|
||||||
"Cloudy"|"Partly cloudy"|"Overcast") emoji="☁️";;
|
|
||||||
"Rain") emoji="🌧️";;
|
|
||||||
"Drizzle") emoji="🌦️";;
|
|
||||||
"Thunderstorm") emoji="⛈️";;
|
|
||||||
"Snow") emoji="❄️";;
|
|
||||||
"Mist"|"Fog"|"Haze") emoji="🌫️";;
|
|
||||||
*) emoji="🌍";; # Default emoji for unknown
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Display weather emoji and temperature
|
# Display weather emoji and temperature
|
||||||
echo {\"text\":\"$emoji $temp\",\"tooltip\":\"$location: $condition\"}
|
echo {\"text\":\" $temp\",\"tooltip\":\"$location: $condition\"}
|
||||||
'';
|
'';
|
||||||
format = "<span font_size='11pt'>{}</span>";
|
format = "<span font_size='11pt'>{}</span>";
|
||||||
return-type = "json";
|
return-type = "json";
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
user = "jimbo";
|
user = "jimbo";
|
||||||
group = "users";
|
group = "users";
|
||||||
musicDirectory = "/home/jimbo/JimboNFS/Music/Synced";
|
musicDirectory = "/home/jimbo/JimboNFS/Music/JimBops";
|
||||||
playlistDirectory = "/home/jimbo/JimboNFS/Music/Synced/Playlists";
|
playlistDirectory = "/home/jimbo/JimboNFS/Music/JimBops/Playlists";
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
audio_output {
|
audio_output {
|
||||||
type "pipewire"
|
type "pipewire"
|
||||||
|
|
|
@ -3,12 +3,8 @@
|
||||||
services.nfs.server = {
|
services.nfs.server = {
|
||||||
enable = true;
|
enable = true;
|
||||||
exports = ''
|
exports = ''
|
||||||
/export/JimboNFS/Downloads *(rw,sync,no_subtree_check)
|
/export/JimboNFS/Files *(rw,sync,no_subtree_check)
|
||||||
/export/JimboNFS/Documents *(rw,sync,no_subtree_check)
|
/export/JimboNFS/Media *(rw,sync,no_subtree_check)
|
||||||
|
|
||||||
/export/JimboNFS/Photos *(rw,sync,no_subtree_check)
|
|
||||||
/export/JimboNFS/Videos *(rw,sync,no_subtree_check)
|
|
||||||
|
|
||||||
/export/JimboNFS/Music *(rw,sync,no_subtree_check)
|
/export/JimboNFS/Music *(rw,sync,no_subtree_check)
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -15,16 +15,6 @@
|
||||||
"guest account" = "nobody";
|
"guest account" = "nobody";
|
||||||
"map to guest" = "bad user";
|
"map to guest" = "bad user";
|
||||||
};
|
};
|
||||||
"roms" = {
|
|
||||||
"path" = "/export/JimboNFS/Downloads/GameFiles/ROMS";
|
|
||||||
"browseable" = "yes";
|
|
||||||
"read only" = "no";
|
|
||||||
"guest ok" = "yes";
|
|
||||||
"create mask" = "0644";
|
|
||||||
"directory mask" = "0755";
|
|
||||||
"force user" = "username";
|
|
||||||
"force group" = "groupname";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -5,14 +5,14 @@
|
||||||
addSSL = true;
|
addSSL = true;
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
proxyWebsockets = true;
|
proxyWebsockets = true;
|
||||||
extraConfig = "
|
extraConfig = ''
|
||||||
location /.well-known/carddav {
|
location /.well-known/carddav {
|
||||||
return 301 $scheme://$host/remote.php/dav;
|
return 301 $scheme://$host/remote.php/dav;
|
||||||
}
|
}
|
||||||
location /.well-known/caldav {
|
location /.well-known/caldav {
|
||||||
return 301 $scheme://$host/remote.php/dav;
|
return 301 $scheme://$host/remote.php/dav;
|
||||||
}
|
}
|
||||||
";
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,31 +2,21 @@
|
||||||
{
|
{
|
||||||
imports = [ ./nginx ];
|
imports = [ ./nginx ];
|
||||||
|
|
||||||
services = {
|
services.photoprism = {
|
||||||
photoprism = {
|
enable = true;
|
||||||
enable = true;
|
port = 2342;
|
||||||
port = 2342;
|
originalsPath = "/var/lib/private/photoprism/originals";
|
||||||
originalsPath = "/var/lib/private/photoprism/originals";
|
address = "0.0.0.0";
|
||||||
address = "0.0.0.0";
|
settings = {
|
||||||
settings = {
|
PHOTOPRISM_ADMIN_USER = "jimbo";
|
||||||
PHOTOPRISM_ADMIN_USER = "jimbo";
|
PHOTOPRISM_ADMIN_PASSWORD = "${config.secrets.prismAdminPass}";
|
||||||
PHOTOPRISM_ADMIN_PASSWORD = "${config.secrets.prismAdminPass}";
|
PHOTOPRISM_DEFAULT_LOCALE = "en";
|
||||||
PHOTOPRISM_DEFAULT_LOCALE = "en";
|
PHOTOPRISM_DATABASE_DRIVER = "mysql";
|
||||||
PHOTOPRISM_DATABASE_DRIVER = "mysql";
|
PHOTOPRISM_DATABASE_NAME = "photoprism";
|
||||||
PHOTOPRISM_DATABASE_NAME = "photoprism";
|
PHOTOPRISM_DATABASE_SERVER = "/run/mysqld/mysqld.sock";
|
||||||
PHOTOPRISM_DATABASE_SERVER = "/run/mysqld/mysqld.sock";
|
PHOTOPRISM_DATABASE_USER = "photoprism";
|
||||||
PHOTOPRISM_DATABASE_USER = "photoprism";
|
PHOTOPRISM_SITE_URL = "https://gallery.${config.domains.jim1}";
|
||||||
PHOTOPRISM_SITE_URL = "https://gallery.${config.domains.jim1}";
|
PHOTOPRISM_SITE_TITLE = "Jimbo's PhotoPrism";
|
||||||
PHOTOPRISM_SITE_TITLE = "Jimbo's PhotoPrism";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
nginx.virtualHosts."gallery.${config.domains.jim1}" = {
|
|
||||||
enableACME = true;
|
|
||||||
forceSSL = true;
|
|
||||||
locations."/" = {
|
|
||||||
proxyPass = "http://127.0.0.1:2342";
|
|
||||||
proxyWebsockets = true;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,6 @@
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./jimbops
|
./jimbops
|
||||||
./jimscrap
|
./jimscrapped
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
settings.scheduler.fast_queues.set(2)
|
settings.scheduler.fast_queues.set(2)
|
||||||
|
|
||||||
# Define the source with random playlist
|
# Define the source with random playlist
|
||||||
jimbops = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/export/JimboNFS/Music/Synced"))
|
jimbops = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/export/JimboNFS/Music/JimBops"))
|
||||||
|
|
||||||
# Ensure the stream never stops
|
# Ensure the stream never stops
|
||||||
jimbops_fallback = fallback([jimbops, jimbops])
|
jimbops_fallback = fallback([jimbops, jimbops])
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
settings.scheduler.fast_queues.set(2)
|
settings.scheduler.fast_queues.set(2)
|
||||||
|
|
||||||
# Define the source with random playlist
|
# Define the source with random playlist
|
||||||
jimscrap = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/export/JimboNFS/Music/Unsynced"))
|
jimscrap = mksafe(playlist(mode='randomize', reload=1, reload_mode="rounds", "/export/JimboNFS/Music/JimScrapped"))
|
||||||
|
|
||||||
# Ensure the stream never stops
|
# Ensure the stream never stops
|
||||||
jimscrap_fallback = fallback([jimscrap, jimscrap])
|
jimscrap_fallback = fallback([jimscrap, jimscrap])
|
|
@ -25,7 +25,7 @@
|
||||||
organizationName = "Jimbo's Files";
|
organizationName = "Jimbo's Files";
|
||||||
};
|
};
|
||||||
|
|
||||||
# A list of accounts, passwords generated with nix-shell -p mkpasswd --run 'mkpasswd -sm bcrypt'
|
# Passwords generated with 'mkpasswd -sm bcrypt'
|
||||||
loginAccounts = {
|
loginAccounts = {
|
||||||
"noreply@${config.domains.jim1}" = {
|
"noreply@${config.domains.jim1}" = {
|
||||||
hashedPasswordFile = pkgs.writeText "noreply" config.secrets.noreplyMailHash;
|
hashedPasswordFile = pkgs.writeText "noreply" config.secrets.noreplyMailHash;
|
||||||
|
@ -34,11 +34,11 @@
|
||||||
"jimbo@${config.domains.jim2}" = {
|
"jimbo@${config.domains.jim2}" = {
|
||||||
hashedPasswordFile = pkgs.writeText "jimbo" config.secrets.jimboMailHash;
|
hashedPasswordFile = pkgs.writeText "jimbo" config.secrets.jimboMailHash;
|
||||||
aliases = [
|
aliases = [
|
||||||
"jimbo@${config.domains.jim1}"
|
"jimbo@${config.domains.jim1}"
|
||||||
"james@${config.domains.jim1}"
|
"james@${config.domains.jim1}"
|
||||||
"james@${config.domains.jim2}"
|
"james@${config.domains.jim2}"
|
||||||
"contact@${config.domains.jim1}"
|
"contact@${config.domains.jim1}"
|
||||||
"contact@${config.domains.jim2}"
|
"contact@${config.domains.jim2}"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"luna@${config.domains.luna}" = {
|
"luna@${config.domains.luna}" = {
|
||||||
|
@ -53,6 +53,6 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Assign the correct port
|
# Rspamd port from earlier to avoid overlap
|
||||||
services.redis.servers.rspamd.port = 1515;
|
services.redis.servers.rspamd.port = 1515;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue