From 54471f0faf2697e55e01ed4a276de0cd921a7c30 Mon Sep 17 00:00:00 2001 From: beeb5k Date: Sat, 6 Jun 2026 15:59:26 +0530 Subject: Add noctalia niri and way to switch between my config and noxtalia easily --- common/default.nix | 1 + common/modules/matugen/default.nix | 16 +- common/modules/matugen/templates/matugen-btop.nix | 2 +- .../modules/matugen/templates/matugen-discord.nix | 557 +++++++++++---------- common/modules/matugen/templates/matugen-dunst.nix | 43 +- common/modules/matugen/templates/matugen-gtk.nix | 107 ++-- common/modules/matugen/templates/matugen-mango.nix | 33 +- common/modules/matugen/templates/matugen-nvim.nix | 34 +- .../matugen/templates/matugen-sequences.nix | 2 +- .../modules/matugen/templates/matugen-terminal.nix | 208 ++++---- common/modules/matugen/templates/matugen-yazi.nix | 2 +- common/modules/terminal/alacritty.nix | 10 +- common/modules/terminal/foot.nix | 10 +- common/modules/terminal/ghostty.nix | 10 +- common/modules/window_managers/default.nix | 55 +- common/modules/window_managers/mango/default.nix | 94 ++-- common/modules/window_managers/niri/default.nix | 388 ++++++++++++++ common/modules/window_managers/noctalia.nix | 29 ++ common/overlays/IosevkaInput.nix | 187 ------- common/overlays/default.nix | 1 - common/packages/default.nix | 5 + common/packages/iosevka-input.nix | 186 +++++++ common/programs/btop.nix | 10 +- common/programs/dunst.nix | 50 +- common/programs/fastfetch.nix | 1 - common/programs/rofi.nix | 264 +++++----- common/programs/vesktop.nix | 10 +- 27 files changed, 1434 insertions(+), 881 deletions(-) create mode 100644 common/modules/window_managers/niri/default.nix create mode 100644 common/modules/window_managers/noctalia.nix delete mode 100644 common/overlays/IosevkaInput.nix create mode 100644 common/packages/default.nix create mode 100644 common/packages/iosevka-input.nix (limited to 'common') diff --git a/common/default.nix b/common/default.nix index 90505c7..0d3244f 100644 --- a/common/default.nix +++ b/common/default.nix @@ -5,6 +5,7 @@ inputs: (lib.modules.importApply ./overlays { inherit inputs; }) # (inputs.nixpkgs.lib.modules.importApply ./overlays { inherit inputs; }) (lib.modules.importApply ./modules { inherit inputs; }) + (lib.modules.importApply ./packages { inherit inputs; }) ]; flake.templates = import ./templates inputs; diff --git a/common/modules/matugen/default.nix b/common/modules/matugen/default.nix index 6eb8182..9e9f3d6 100644 --- a/common/modules/matugen/default.nix +++ b/common/modules/matugen/default.nix @@ -21,7 +21,7 @@ in enable = lib.mkEnableOption "Enable Dynamic colors"; }; - config = lib.mkIf cfg.enable ( + config = lib.mkIf (cfg.enable && config.beeMods.windowManagers.beeConfig.enable) ( lib.optionalAttrs homeManager { xdg.configFile = { "matugen/config.toml" = { @@ -96,13 +96,15 @@ in output_path = '~/.config/rofi/shared/colors.rasi' ''} - [templates.gtk3] - input_path = '~/.config/matugen/templates/gtk.css' - output_path = '~/.config/gtk-3.0/matugen.css' + ${lib.optionalString (config.gtk.theme.name == "adw-gtk3") '' + [templates.gtk3] + input_path = '~/.config/matugen/templates/gtk.css' + output_path = '~/.config/gtk-3.0/matugen.css' - [templates.gtk4] - input_path = '~/.config/matugen/templates/gtk.css' - output_path = '~/.config/gtk-4.0/matugen.css' + [templates.gtk4] + input_path = '~/.config/matugen/templates/gtk.css' + output_path = '~/.config/gtk-4.0/matugen.css' + ''} [templates.neovim] input_path = '~/.config/matugen/templates/neovim.json' diff --git a/common/modules/matugen/templates/matugen-btop.nix b/common/modules/matugen/templates/matugen-btop.nix index 1f23c25..e698fa4 100644 --- a/common/modules/matugen/templates/matugen-btop.nix +++ b/common/modules/matugen/templates/matugen-btop.nix @@ -4,7 +4,7 @@ ... }: { - config = lib.mkIf config.programs.btop.enable { + config = lib.mkIf (config.programs.btop.enable && config.beeMods.windowManagers.beeConfig.enable) { xdg.configFile = { "matugen/templates/btop.theme" = { text = '' diff --git a/common/modules/matugen/templates/matugen-discord.nix b/common/modules/matugen/templates/matugen-discord.nix index 2f61fea..d3e72a5 100644 --- a/common/modules/matugen/templates/matugen-discord.nix +++ b/common/modules/matugen/templates/matugen-discord.nix @@ -4,280 +4,285 @@ ... }: { - xdg.configFile = { - "matugen/templates/discord-system24.css" = { - text = '' - /** - * @name system24-matugen - * @description a tui-style discord theme. Matugen Material UI + Original Base Colors. - * @author refact0r - * @version 2.0.0 - * @invite nz87hXyvcy - * @website https://github.com/refact0r/system24 - * @source https://github.com/refact0r/system24/blob/master/theme/system24.theme.css - */ - - /* import theme modules */ - @import url("https://refact0r.github.io/system24/build/system24.css"); - - body { - /* font options */ - --font: "IosevkaInput"; - --code-font: "IosevkaInput"; - font-weight: 300; - letter-spacing: -0.05ch; - - /* sizes */ - --gap: 12px; - --divider-thickness: 4px; - --border-thickness: 2px; - --border-hover-transition: 0.2s ease; - - /* animation/transition options */ - --animations: off; - --list-item-transition: 0.2s ease; - --dms-icon-svg-transition: 0.4s ease; - - /* top bar options */ - --top-bar-height: var(--gap); - --top-bar-button-position: titlebar; - --top-bar-title-position: off; - --subtle-top-bar-title: off; - - /* window controls */ - --custom-window-controls: off; - --window-control-size: 14px; - - /* dms button options */ - --custom-dms-icon: off; - --dms-icon-svg-url: url(""); - --dms-icon-svg-size: 90%; - --dms-icon-color-before: var(--icon-subtle); - --dms-icon-color-after: var(--white); - --custom-dms-background: off; - --dms-background-image-url: url(""); - --dms-background-image-size: cover; - --dms-background-color: linear-gradient(70deg, var(--blue-2), var(--purple-2), var(--red-2)); - - /* background image options */ - --background-image: off; - --background-image-url: url(""); - - /* transparency/blur options */ - --transparency-tweaks: off; - --remove-bg-layer: off; - --panel-blur: off; - --blur-amount: 12px; - --bg-floating: var(--bg-3); - - /* other options */ - --small-user-panel: on; - - /* unrounding options */ - --unrounding: on; - - /* styling options */ - --custom-spotify-bar: on; - --ascii-titles: on; - --ascii-loader: system24; - - /* panel labels */ - --panel-labels: on; - --label-color: var(--text-muted); - --label-font-weight: 500; - } - - /* color options */ - :root { - --colors: on; - - /* text colors - mapped to matugen safe hex */ - --text-0: var(--bg-4); - --text-1: {{colors.on_surface.default.hex}}; - --text-2: {{colors.on_surface.default.hex}}; - --text-3: {{colors.on_surface_variant.default.hex}}; - --text-4: {{colors.outline.default.hex}}; - --text-5: {{colors.outline_variant.default.hex}}; - - /* background colors - mapped to matugen safe hex */ - --bg-1: {{colors.surface_variant.default.hex}}; - --bg-2: {{colors.surface_container_high.default.hex}}; - --bg-3: {{colors.surface_container_low.default.hex}}; - <* if {{ is_dark_mode }} *> - --bg-4: {{colors.surface.default.hex}}; - <* else *> - --bg-4: {{colors.surface_container_low.default.hex}}; - <* endif *> - - /* hovers - using on_surface hex + CSS hex opacity (1a=10%, 33=20%, 4d=30%) */ - --hover: {{colors.on_surface.default.hex}}1a; - --active: {{colors.on_surface.default.hex}}33; - --active-2: {{colors.on_surface.default.hex}}4d; - --message-hover: var(--hover); - - /* accent colors - Replaced with Matugen Colors */ - --accent-1: {{colors.tertiary.default.hex}}; - --accent-2: {{colors.primary.default.hex}}; - --accent-3: {{colors.primary.default.hex}}; - --accent-4: {{colors.primary_container.default.hex}}; - --accent-5: {{colors.primary_fixed_dim.default.hex}}; - --accent-new: {{colors.error.default.hex}}; - - /* Math kept identical, only source colors swapped to Matugen */ - --mention: linear-gradient(to right, color-mix(in hsl, {{colors.primary.default.hex}}, transparent 90%) 40%, transparent); - --mention-hover: linear-gradient(to right, color-mix(in hsl, {{colors.primary.default.hex}}, transparent 95%) 40%, transparent); - --reply: linear-gradient(to right, color-mix(in hsl, {{colors.on_surface_variant.default.hex}}, transparent 90%) 40%, transparent); - --reply-hover: linear-gradient(to right, color-mix(in hsl, {{colors.on_surface_variant.default.hex}}, transparent 95%) 40%, transparent); - - /* status indicator colors - Kept original as requested, updated offline */ - --online: var(--green-2); - --dnd: var(--red-2); - --idle: var(--yellow-2); - --streaming: var(--purple-2); - --offline: {{colors.outline.default.hex}}; - - /* border colors */ - --border-light: var(--hover); - --border: var(--active); - --border-hover: {{colors.primary.default.hex}}; - --button-border: {{colors.on_surface.default.hex}}1a; - - /* base colors - UNTOUCHED OKLCH FROM ORIGINAL */ - --red-1: oklch(75% 0.13 0); - --red-2: oklch(70% 0.13 0); - --red-3: oklch(65% 0.13 0); - --red-4: oklch(60% 0.13 0); - --red-5: oklch(55% 0.13 0); - - --green-1: oklch(75% 0.12 170); - --green-2: oklch(70% 0.12 170); - --green-3: oklch(65% 0.12 170); - --green-4: oklch(60% 0.12 170); - --green-5: oklch(55% 0.12 160); - - --blue-1: oklch(75% 0.11 215); - --blue-2: oklch(70% 0.11 215); - --blue-3: oklch(65% 0.11 215); - --blue-4: oklch(60% 0.11 215); - --blue-5: oklch(55% 0.11 215); - - --yellow-1: oklch(80% 0.12 90); - --yellow-2: oklch(75% 0.12 90); - --yellow-3: oklch(70% 0.12 90); - --yellow-4: oklch(65% 0.12 90); - --yellow-5: oklch(60% 0.12 90); - - --purple-1: oklch(75% 0.12 310); - --purple-2: oklch(70% 0.12 310); - --purple-3: oklch(65% 0.12 310); - --purple-4: oklch(60% 0.12 310); - --purple-5: oklch(55% 0.12 310); - } - ''; - }; - - "matugen/templates/discord-midnight.css" = { - text = '' - /** - * @name midnight-matugen - * @description midnight-discord, generated by matugen - * @author refact0r - * @version 1.6.2 - * @invite nz87hXyvcy - * @website https://github.com/refact0r/midnight-discord - * @source https://github.com/refact0r/midnight-discord/blob/master/midnight.theme.css - * @authorId 508863359777505290 - * @authorLink https://www.refact0r.dev - */ - - /* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */ - - @import url('https://refact0r.github.io/midnight-discord/build/midnight.css'); - - /* customize things here */ - :root { - /* font, change to 'gg sans' for default discord font*/ - --font: 'IosevkaInput'; - - /* top left corner text */ - --corner-text: 'Midnight'; - - /* color of status indicators and window controls */ - --online-indicator: {{colors.inverse_primary.default.hex}}; /* change to #23a55a for default green */ - --dnd-indicator: {{colors.error.default.hex}}; /* change to #f13f43 for default red */ - --idle-indicator: {{colors.tertiary_container.default.hex}}; /* change to #f0b232 for default yellow */ - --streaming-indicator: {{colors.on_primary.default.hex}}; /* change to #593695 for default purple */ - - /* accent colors */ - --accent-1: {{colors.tertiary.default.hex}}; /* links */ - --accent-2: {{colors.primary.default.hex}}; /* general unread/mention elements, some icons when active */ - --accent-3: {{colors.primary.default.hex}}; /* accent buttons */ - --accent-4: {{colors.surface_bright.default.hex}}; /* accent buttons when hovered */ - --accent-5: {{colors.primary_fixed_dim.default.hex}}; /* accent buttons when clicked */ - --mention: {{colors.surface.default.hex}}; /* mentions & mention messages */ - --mention-hover: {{colors.surface_bright.default.hex}}; /* mentions & mention messages when hovered */ - - /* text colors */ - --text-0: {{colors.surface.default.hex}}; /* text on colored elements */ - --text-1: {{colors.on_surface.default.hex}}; /* other normally white text */ - --text-2: {{colors.on_surface.default.hex}}; /* headings and important text */ - --text-3: {{colors.on_surface_variant.default.hex}}; /* normal text */ - --text-4: {{colors.on_surface_variant.default.hex}}; /* icon buttons and channels */ - --text-5: {{colors.outline.default.hex}}; /* muted channels/chats and timestamps */ - - /* background and dark colors */ - --bg-1: {{colors.surface_variant.default.hex}}; /* dark buttons when clicked */ - --bg-2: {{colors.surface_container_high.default.hex}}; /* dark buttons */ - --bg-3: {{colors.surface_container_low.default.hex}}; /* spacing, secondary elements */ - --bg-4: {{colors.surface.default.hex}}; /* main background color */ - --hover: {{colors.surface_bright.default.hex}}; /* channels and buttons when hovered */ - --active: {{colors.surface_bright.default.hex}}; /* channels and buttons when clicked or selected */ - --message-hover: {{colors.surface_bright.default.hex}}; /* messages when hovered */ - - /* amount of spacing and padding */ - --spacing: 12px; - - /* animations */ - /* ALL ANIMATIONS CAN BE DISABLED WITH REDUCED MOTION IN DISCORD SETTINGS */ - --list-item-transition: 0.2s ease; /* channels/members/settings hover transition */ - --unread-bar-transition: 0.2s ease; /* unread bar moving into view transition */ - --moon-spin-transition: 0.4s ease; /* moon icon spin */ - --icon-spin-transition: 1s ease; /* round icon button spin (settings, emoji, etc.) */ - - /* corner roundness (border-radius) */ - --roundness-xl: 22px; /* roundness of big panel outer corners */ - --roundness-l: 20px; /* popout panels */ - --roundness-m: 16px; /* smaller panels, images, embeds */ - --roundness-s: 12px; /* members, settings inputs */ - --roundness-xs: 10px; /* channels, buttons */ - --roundness-xxs: 8px; /* searchbar, small elements */ - - /* direct messages moon icon */ - /* change to block to show, none to hide */ - --discord-icon: none; /* discord icon */ - --moon-icon: block; /* moon icon */ - --moon-icon-url: url('https://upload.wikimedia.org/wikipedia/commons/c/c4/Font_Awesome_5_solid_moon.svg'); /* custom icon url */ - --moon-icon-size: auto; - - /* filter uncolorable elements to fit theme */ - /* (just set to none, they're too much work to configure) */ - --login-bg-filter: saturate(0.3) hue-rotate(-15deg) brightness(0.4); /* login background artwork */ - --green-to-accent-3-filter: hue-rotate(56deg) saturate(1.43); /* add friend page explore icon */ - --blurple-to-accent-3-filter: hue-rotate(304deg) saturate(0.84) brightness(1.2); /* add friend page school icon */ - } - - /* Selected chat/friend text */ - .selected_f5eb4b, - .selected_f6f816 .link_d8bfb3 { - color: var(--text-0) !important; - background: var(--accent-3) !important; - } - - .selected_f6f816 .link_d8bfb3 * { - color: var(--text-0) !important; - fill: var(--text-0) !important; - } - ''; - }; - }; + + config = + lib.mkIf (config.programs.vesktop.enable && config.beeMods.windowManagers.beeConfig.enable) + { + xdg.configFile = { + "matugen/templates/discord-system24.css" = { + text = '' + /** + * @name system24-matugen + * @description a tui-style discord theme. Matugen Material UI + Original Base Colors. + * @author refact0r + * @version 2.0.0 + * @invite nz87hXyvcy + * @website https://github.com/refact0r/system24 + * @source https://github.com/refact0r/system24/blob/master/theme/system24.theme.css + */ + + /* import theme modules */ + @import url("https://refact0r.github.io/system24/build/system24.css"); + + body { + /* font options */ + --font: "IosevkaInput"; + --code-font: "IosevkaInput"; + font-weight: 300; + letter-spacing: -0.05ch; + + /* sizes */ + --gap: 12px; + --divider-thickness: 4px; + --border-thickness: 2px; + --border-hover-transition: 0.2s ease; + + /* animation/transition options */ + --animations: off; + --list-item-transition: 0.2s ease; + --dms-icon-svg-transition: 0.4s ease; + + /* top bar options */ + --top-bar-height: var(--gap); + --top-bar-button-position: titlebar; + --top-bar-title-position: off; + --subtle-top-bar-title: off; + + /* window controls */ + --custom-window-controls: off; + --window-control-size: 14px; + + /* dms button options */ + --custom-dms-icon: off; + --dms-icon-svg-url: url(""); + --dms-icon-svg-size: 90%; + --dms-icon-color-before: var(--icon-subtle); + --dms-icon-color-after: var(--white); + --custom-dms-background: off; + --dms-background-image-url: url(""); + --dms-background-image-size: cover; + --dms-background-color: linear-gradient(70deg, var(--blue-2), var(--purple-2), var(--red-2)); + + /* background image options */ + --background-image: off; + --background-image-url: url(""); + + /* transparency/blur options */ + --transparency-tweaks: off; + --remove-bg-layer: off; + --panel-blur: off; + --blur-amount: 12px; + --bg-floating: var(--bg-3); + + /* other options */ + --small-user-panel: on; + + /* unrounding options */ + --unrounding: on; + + /* styling options */ + --custom-spotify-bar: on; + --ascii-titles: on; + --ascii-loader: system24; + + /* panel labels */ + --panel-labels: on; + --label-color: var(--text-muted); + --label-font-weight: 500; + } + + /* color options */ + :root { + --colors: on; + + /* text colors - mapped to matugen safe hex */ + --text-0: var(--bg-4); + --text-1: {{colors.on_surface.default.hex}}; + --text-2: {{colors.on_surface.default.hex}}; + --text-3: {{colors.on_surface_variant.default.hex}}; + --text-4: {{colors.outline.default.hex}}; + --text-5: {{colors.outline_variant.default.hex}}; + + /* background colors - mapped to matugen safe hex */ + --bg-1: {{colors.surface_variant.default.hex}}; + --bg-2: {{colors.surface_container_high.default.hex}}; + --bg-3: {{colors.surface_container_low.default.hex}}; + <* if {{ is_dark_mode }} *> + --bg-4: {{colors.surface.default.hex}}; + <* else *> + --bg-4: {{colors.surface_container_low.default.hex}}; + <* endif *> + + /* hovers - using on_surface hex + CSS hex opacity (1a=10%, 33=20%, 4d=30%) */ + --hover: {{colors.on_surface.default.hex}}1a; + --active: {{colors.on_surface.default.hex}}33; + --active-2: {{colors.on_surface.default.hex}}4d; + --message-hover: var(--hover); + + /* accent colors - Replaced with Matugen Colors */ + --accent-1: {{colors.tertiary.default.hex}}; + --accent-2: {{colors.primary.default.hex}}; + --accent-3: {{colors.primary.default.hex}}; + --accent-4: {{colors.primary_container.default.hex}}; + --accent-5: {{colors.primary_fixed_dim.default.hex}}; + --accent-new: {{colors.error.default.hex}}; + + /* Math kept identical, only source colors swapped to Matugen */ + --mention: linear-gradient(to right, color-mix(in hsl, {{colors.primary.default.hex}}, transparent 90%) 40%, transparent); + --mention-hover: linear-gradient(to right, color-mix(in hsl, {{colors.primary.default.hex}}, transparent 95%) 40%, transparent); + --reply: linear-gradient(to right, color-mix(in hsl, {{colors.on_surface_variant.default.hex}}, transparent 90%) 40%, transparent); + --reply-hover: linear-gradient(to right, color-mix(in hsl, {{colors.on_surface_variant.default.hex}}, transparent 95%) 40%, transparent); + + /* status indicator colors - Kept original as requested, updated offline */ + --online: var(--green-2); + --dnd: var(--red-2); + --idle: var(--yellow-2); + --streaming: var(--purple-2); + --offline: {{colors.outline.default.hex}}; + + /* border colors */ + --border-light: var(--hover); + --border: var(--active); + --border-hover: {{colors.primary.default.hex}}; + --button-border: {{colors.on_surface.default.hex}}1a; + + /* base colors - UNTOUCHED OKLCH FROM ORIGINAL */ + --red-1: oklch(75% 0.13 0); + --red-2: oklch(70% 0.13 0); + --red-3: oklch(65% 0.13 0); + --red-4: oklch(60% 0.13 0); + --red-5: oklch(55% 0.13 0); + + --green-1: oklch(75% 0.12 170); + --green-2: oklch(70% 0.12 170); + --green-3: oklch(65% 0.12 170); + --green-4: oklch(60% 0.12 170); + --green-5: oklch(55% 0.12 160); + + --blue-1: oklch(75% 0.11 215); + --blue-2: oklch(70% 0.11 215); + --blue-3: oklch(65% 0.11 215); + --blue-4: oklch(60% 0.11 215); + --blue-5: oklch(55% 0.11 215); + + --yellow-1: oklch(80% 0.12 90); + --yellow-2: oklch(75% 0.12 90); + --yellow-3: oklch(70% 0.12 90); + --yellow-4: oklch(65% 0.12 90); + --yellow-5: oklch(60% 0.12 90); + + --purple-1: oklch(75% 0.12 310); + --purple-2: oklch(70% 0.12 310); + --purple-3: oklch(65% 0.12 310); + --purple-4: oklch(60% 0.12 310); + --purple-5: oklch(55% 0.12 310); + } + ''; + }; + + "matugen/templates/discord-midnight.css" = { + text = '' + /** + * @name midnight-matugen + * @description midnight-discord, generated by matugen + * @author refact0r + * @version 1.6.2 + * @invite nz87hXyvcy + * @website https://github.com/refact0r/midnight-discord + * @source https://github.com/refact0r/midnight-discord/blob/master/midnight.theme.css + * @authorId 508863359777505290 + * @authorLink https://www.refact0r.dev + */ + + /* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */ + + @import url('https://refact0r.github.io/midnight-discord/build/midnight.css'); + + /* customize things here */ + :root { + /* font, change to 'gg sans' for default discord font*/ + --font: 'IosevkaInput'; + + /* top left corner text */ + --corner-text: 'Midnight'; + + /* color of status indicators and window controls */ + --online-indicator: {{colors.inverse_primary.default.hex}}; /* change to #23a55a for default green */ + --dnd-indicator: {{colors.error.default.hex}}; /* change to #f13f43 for default red */ + --idle-indicator: {{colors.tertiary_container.default.hex}}; /* change to #f0b232 for default yellow */ + --streaming-indicator: {{colors.on_primary.default.hex}}; /* change to #593695 for default purple */ + + /* accent colors */ + --accent-1: {{colors.tertiary.default.hex}}; /* links */ + --accent-2: {{colors.primary.default.hex}}; /* general unread/mention elements, some icons when active */ + --accent-3: {{colors.primary.default.hex}}; /* accent buttons */ + --accent-4: {{colors.surface_bright.default.hex}}; /* accent buttons when hovered */ + --accent-5: {{colors.primary_fixed_dim.default.hex}}; /* accent buttons when clicked */ + --mention: {{colors.surface.default.hex}}; /* mentions & mention messages */ + --mention-hover: {{colors.surface_bright.default.hex}}; /* mentions & mention messages when hovered */ + + /* text colors */ + --text-0: {{colors.surface.default.hex}}; /* text on colored elements */ + --text-1: {{colors.on_surface.default.hex}}; /* other normally white text */ + --text-2: {{colors.on_surface.default.hex}}; /* headings and important text */ + --text-3: {{colors.on_surface_variant.default.hex}}; /* normal text */ + --text-4: {{colors.on_surface_variant.default.hex}}; /* icon buttons and channels */ + --text-5: {{colors.outline.default.hex}}; /* muted channels/chats and timestamps */ + + /* background and dark colors */ + --bg-1: {{colors.surface_variant.default.hex}}; /* dark buttons when clicked */ + --bg-2: {{colors.surface_container_high.default.hex}}; /* dark buttons */ + --bg-3: {{colors.surface_container_low.default.hex}}; /* spacing, secondary elements */ + --bg-4: {{colors.surface.default.hex}}; /* main background color */ + --hover: {{colors.surface_bright.default.hex}}; /* channels and buttons when hovered */ + --active: {{colors.surface_bright.default.hex}}; /* channels and buttons when clicked or selected */ + --message-hover: {{colors.surface_bright.default.hex}}; /* messages when hovered */ + + /* amount of spacing and padding */ + --spacing: 12px; + + /* animations */ + /* ALL ANIMATIONS CAN BE DISABLED WITH REDUCED MOTION IN DISCORD SETTINGS */ + --list-item-transition: 0.2s ease; /* channels/members/settings hover transition */ + --unread-bar-transition: 0.2s ease; /* unread bar moving into view transition */ + --moon-spin-transition: 0.4s ease; /* moon icon spin */ + --icon-spin-transition: 1s ease; /* round icon button spin (settings, emoji, etc.) */ + + /* corner roundness (border-radius) */ + --roundness-xl: 22px; /* roundness of big panel outer corners */ + --roundness-l: 20px; /* popout panels */ + --roundness-m: 16px; /* smaller panels, images, embeds */ + --roundness-s: 12px; /* members, settings inputs */ + --roundness-xs: 10px; /* channels, buttons */ + --roundness-xxs: 8px; /* searchbar, small elements */ + + /* direct messages moon icon */ + /* change to block to show, none to hide */ + --discord-icon: none; /* discord icon */ + --moon-icon: block; /* moon icon */ + --moon-icon-url: url('https://upload.wikimedia.org/wikipedia/commons/c/c4/Font_Awesome_5_solid_moon.svg'); /* custom icon url */ + --moon-icon-size: auto; + + /* filter uncolorable elements to fit theme */ + /* (just set to none, they're too much work to configure) */ + --login-bg-filter: saturate(0.3) hue-rotate(-15deg) brightness(0.4); /* login background artwork */ + --green-to-accent-3-filter: hue-rotate(56deg) saturate(1.43); /* add friend page explore icon */ + --blurple-to-accent-3-filter: hue-rotate(304deg) saturate(0.84) brightness(1.2); /* add friend page school icon */ + } + + /* Selected chat/friend text */ + .selected_f5eb4b, + .selected_f6f816 .link_d8bfb3 { + color: var(--text-0) !important; + background: var(--accent-3) !important; + } + + .selected_f6f816 .link_d8bfb3 * { + color: var(--text-0) !important; + fill: var(--text-0) !important; + } + ''; + }; + }; + }; } diff --git a/common/modules/matugen/templates/matugen-dunst.nix b/common/modules/matugen/templates/matugen-dunst.nix index dae700f..d7f9200 100644 --- a/common/modules/matugen/templates/matugen-dunst.nix +++ b/common/modules/matugen/templates/matugen-dunst.nix @@ -1,22 +1,29 @@ { - xdg.configFile."matugen/templates/dunstrc" = { - text = '' - [global] - frame_color = "{{colors.primary.default.hex}}" - separator_color = "{{colors.primary_container.default.hex}}" - foreground = "{{colors.on_surface.default.hex}}" - highlight = "{{colors.primary.default.hex}}" - <* if {{ is_dark_mode }} *> - background = "{{colors.surface.default.hex}}" - <* else *> - background = "{{colors.surface_container.default.hex}}" - <* endif *> + config, + lib, + ... +}: +{ + config = lib.mkIf config.services.dunst.enable { + xdg.configFile."matugen/templates/dunstrc" = { + text = '' + [global] + frame_color = "{{colors.primary.default.hex}}" + separator_color = "{{colors.primary_container.default.hex}}" + foreground = "{{colors.on_surface.default.hex}}" + highlight = "{{colors.primary.default.hex}}" + <* if {{ is_dark_mode }} *> + background = "{{colors.surface.default.hex}}" + <* else *> + background = "{{colors.surface_container.default.hex}}" + <* endif *> - [urgency_critical] - background = "{{colors.error_container.default.hex}}" - foreground = "{{colors.on_error_container.default.hex}}" - frame_color = "{{colors.error.default.hex}}" - highlight = "{{colors.error.default.hex}}" - ''; + [urgency_critical] + background = "{{colors.error_container.default.hex}}" + foreground = "{{colors.on_error_container.default.hex}}" + frame_color = "{{colors.error.default.hex}}" + highlight = "{{colors.error.default.hex}}" + ''; + }; }; } diff --git a/common/modules/matugen/templates/matugen-gtk.nix b/common/modules/matugen/templates/matugen-gtk.nix index 3bf2c1b..7351398 100644 --- a/common/modules/matugen/templates/matugen-gtk.nix +++ b/common/modules/matugen/templates/matugen-gtk.nix @@ -1,54 +1,63 @@ { - xdg.configFile."matugen/templates/gtk.css" = { - text = '' - /* - * GTK Colors - * Generated with Matugen - */ + config, + lib, + ... +}: +{ + config = + lib.mkIf (config.gtk.theme.name == "adw-gtk3" && config.beeMods.windowManagers.beeConfig.enable) + { + xdg.configFile."matugen/templates/gtk.css" = { + text = '' + /* + * GTK Colors + * Generated with Matugen + */ - /* via thairanaru on GitHub: */ + /* via thairanaru on GitHub: */ - /* Destructive colors are basically error colors */ - @define-color destructive_bg_color {{colors.error.default.hex}}; - @define-color destructive_fg_color {{colors.on_error.default.hex}}; - /* Follow material spec */ - @define-color error_bg_color {{colors.error.default.hex}}; - @define-color error_fg_color {{colors.on_error.default.hex}}; - /* Follow material spec (also I think looks nicer) */ - @define-color accent_fg_color {{colors.on_primary.default.hex}}; - @define-color accent_bg_color {{colors.primary.default.hex}}; - /* Use surface instead of background */ - @define-color window_bg_color {{colors.surface.default.hex}}; - @define-color window_fg_color {{colors.on_surface.default.hex}}; - /* Make it more similar to Adwaita */ - @define-color view_bg_color {{colors.surface.default.hex}}; - @define-color view_fg_color {{colors.on_surface.default.hex}}; - @define-color headerbar_bg_color {{colors.surface.default.hex}}; - @define-color headerbar_fg_color {{colors.on_surface.default.hex}}; - @define-color sidebar_bg_color {{colors.surface_container.default.hex}}; - @define-color sidebar_fg_color {{colors.on_surface.default.hex}}; - /* There is only like one application I know that uses this, and there isn't a good way to get - a color between surface and surface container so I think just giving this surface is a good enough fallback*/ - @define-color secondary_sidebar_bg_color {{colors.surface.default.hex}}; - @define-color secondary_sidebar_fg_color {{colors.on_surface.default.hex}}; - @define-color card_bg_color {{colors.surface_container.default.hex}}; - @define-color card_fg_color {{colors.on_surface.default.hex}}; - @define-color overview_bg_color {{colors.surface_container.default.hex}}; - @define-color overview_fg_color {{colors.on_surface.default.hex}}; - @define-color popover_bg_color {{colors.surface_container.default.hex}}; - @define-color popover_fg_color {{colors.on_surface.default.hex}}; - @define-color dialog_bg_color {{colors.surface.default.hex}}; - @define-color dialog_fg_color {{colors.on_surface.default.hex}}; + /* Destructive colors are basically error colors */ + @define-color destructive_bg_color {{colors.error.default.hex}}; + @define-color destructive_fg_color {{colors.on_error.default.hex}}; + /* Follow material spec */ + @define-color error_bg_color {{colors.error.default.hex}}; + @define-color error_fg_color {{colors.on_error.default.hex}}; + /* Follow material spec (also I think looks nicer) */ + @define-color accent_fg_color {{colors.on_primary.default.hex}}; + @define-color accent_bg_color {{colors.primary.default.hex}}; + /* Use surface instead of background */ + @define-color window_bg_color {{colors.surface.default.hex}}; + @define-color window_fg_color {{colors.on_surface.default.hex}}; + /* Make it more similar to Adwaita */ + @define-color view_bg_color {{colors.surface.default.hex}}; + @define-color view_fg_color {{colors.on_surface.default.hex}}; + @define-color headerbar_bg_color {{colors.surface.default.hex}}; + @define-color headerbar_fg_color {{colors.on_surface.default.hex}}; + @define-color sidebar_bg_color {{colors.surface_container.default.hex}}; + @define-color sidebar_fg_color {{colors.on_surface.default.hex}}; + /* There is only like one application I know that uses this, and there isn't a good way to get + a color between surface and surface container so I think just giving this surface is a good enough fallback*/ + @define-color secondary_sidebar_bg_color {{colors.surface.default.hex}}; + @define-color secondary_sidebar_fg_color {{colors.on_surface.default.hex}}; + @define-color card_bg_color {{colors.surface_container.default.hex}}; + @define-color card_fg_color {{colors.on_surface.default.hex}}; + @define-color overview_bg_color {{colors.surface_container.default.hex}}; + @define-color overview_fg_color {{colors.on_surface.default.hex}}; + @define-color popover_bg_color {{colors.surface_container.default.hex}}; + @define-color popover_fg_color {{colors.on_surface.default.hex}}; + @define-color dialog_bg_color {{colors.surface.default.hex}}; + @define-color dialog_fg_color {{colors.on_surface.default.hex}}; - /* Backdrop/unfocused states - prevents white flash on window unfocus */ - @define-color headerbar_backdrop_color @window_bg_color; - @define-color sidebar_backdrop_color @sidebar_bg_color; - @define-color theme_unfocused_fg_color @window_fg_color; - @define-color theme_unfocused_text_color @view_fg_color; - @define-color theme_unfocused_bg_color @window_bg_color; - @define-color theme_unfocused_base_color @window_bg_color; - @define-color theme_unfocused_selected_bg_color @accent_bg_color; - @define-color theme_unfocused_selected_fg_color @accent_fg_color; - ''; - }; + /* Backdrop/unfocused states - prevents white flash on window unfocus */ + @define-color headerbar_backdrop_color @window_bg_color; + @define-color sidebar_backdrop_color @sidebar_bg_color; + @define-color theme_unfocused_fg_color @window_fg_color; + @define-color theme_unfocused_text_color @view_fg_color; + @define-color theme_unfocused_bg_color @window_bg_color; + @define-color theme_unfocused_base_color @window_bg_color; + @define-color theme_unfocused_selected_bg_color @accent_bg_color; + @define-color theme_unfocused_selected_fg_color @accent_fg_color; + ''; + }; + }; } diff --git a/common/modules/matugen/templates/matugen-mango.nix b/common/modules/matugen/templates/matugen-mango.nix index 7645ba9..440c4a9 100644 --- a/common/modules/matugen/templates/matugen-mango.nix +++ b/common/modules/matugen/templates/matugen-mango.nix @@ -4,20 +4,23 @@ ... }: { - config = lib.mkIf config.beeMods.windowManagers.mango.enable { - xdg.configFile = { - "matugen/templates/mango.conf" = { - text = '' - rootcolor={{colors.background.default.hex_stripped}}ff - bordercolor={{colors.outline_variant.default.hex_stripped}}ff - focuscolor={{colors.primary.default.hex_stripped}}ff - maximizescreencolor={{colors.secondary_container.default.hex_stripped}}ff - urgentcolor={{colors.error.default.hex_stripped}}ff - scratchpadcolor={{colors.tertiary.default.hex_stripped}}ff - globalcolor={{colors.secondary_container.default.hex_stripped}}ff - overlaycolor={{colors.tertiary_container.default.hex_stripped}}ff - ''; + config = + lib.mkIf + (config.beeMods.windowManagers.mango.enable && config.beeMods.windowManagers.beeConfig.enable) + { + xdg.configFile = { + "matugen/templates/mango.conf" = { + text = '' + rootcolor={{colors.background.default.hex_stripped}}ff + bordercolor={{colors.outline_variant.default.hex_stripped}}ff + focuscolor={{colors.primary.default.hex_stripped}}ff + maximizescreencolor={{colors.secondary_container.default.hex_stripped}}ff + urgentcolor={{colors.error.default.hex_stripped}}ff + scratchpadcolor={{colors.tertiary.default.hex_stripped}}ff + globalcolor={{colors.secondary_container.default.hex_stripped}}ff + overlaycolor={{colors.tertiary_container.default.hex_stripped}}ff + ''; + }; + }; }; - }; - }; } diff --git a/common/modules/matugen/templates/matugen-nvim.nix b/common/modules/matugen/templates/matugen-nvim.nix index 8e6f5f5..276d695 100644 --- a/common/modules/matugen/templates/matugen-nvim.nix +++ b/common/modules/matugen/templates/matugen-nvim.nix @@ -4,19 +4,23 @@ ... }: { - xdg.configFile = { - "matugen/templates/neovim.json" = { - text = '' - { - "mode": "{{mode}}", - "source_color":"{{colors.primary.default.hex}}", - <* if {{ is_dark_mode }} *> - "background":"{{colors.surface.default.hex}}" - <* else *> - "background":"{{colors.surface_container_low.default.hex}}" - <* endif *> - } - ''; - }; - }; + config = + lib.mkIf (config.wrappers.neovim.enable && config.beeMods.windowManagers.beeConfig.enable) + { + xdg.configFile = { + "matugen/templates/neovim.json" = { + text = '' + { + "mode": "{{mode}}", + "source_color":"{{colors.primary.default.hex}}", + <* if {{ is_dark_mode }} *> + "background":"{{colors.surface.default.hex}}" + <* else *> + "background":"{{colors.surface_container_low.default.hex}}" + <* endif *> + } + ''; + }; + }; + }; } diff --git a/common/modules/matugen/templates/matugen-sequences.nix b/common/modules/matugen/templates/matugen-sequences.nix index 817edb9..13e25f1 100644 --- a/common/modules/matugen/templates/matugen-sequences.nix +++ b/common/modules/matugen/templates/matugen-sequences.nix @@ -4,7 +4,7 @@ ... }: { - config = lib.mkIf config.beeMods.matugen.enable { + config = lib.mkIf (config.beeMods.terminal.foot && config.beeMods.windowManagers.beeConfig.enable) { xdg.configFile."matugen/templates/sequences" = { text = '' #!/bin/sh diff --git a/common/modules/matugen/templates/matugen-terminal.nix b/common/modules/matugen/templates/matugen-terminal.nix index 4d7106e..1f09579 100644 --- a/common/modules/matugen/templates/matugen-terminal.nix +++ b/common/modules/matugen/templates/matugen-terminal.nix @@ -4,116 +4,118 @@ ... }: { - config = lib.mkMerge [ - (lib.mkIf config.beeMods.terminal.foot { - xdg.configFile."matugen/templates/foot-colors.ini" = { - text = '' - [colors-dark] - foreground={{colors.on_surface.default.hex_stripped}} - <* if {{ is_dark_mode }} *> - background={{colors.surface.default.hex_stripped}} - <* else *> - background={{colors.surface_container_low.default.hex_stripped}} - <* endif *> - selection-foreground={{colors.on_primary_container.default.hex_stripped}} - selection-background={{colors.primary_container.default.hex_stripped}} - cursor = {{colors.on_primary.default.hex_stripped}} {{colors.primary.default.hex_stripped}} + config = lib.mkIf config.beeMods.windowManagers.beeConfig.enable ( + lib.mkMerge [ + (lib.mkIf config.beeMods.terminal.foot { + xdg.configFile."matugen/templates/foot-colors.ini" = { + text = '' + [colors-dark] + foreground={{colors.on_surface.default.hex_stripped}} + <* if {{ is_dark_mode }} *> + background={{colors.surface.default.hex_stripped}} + <* else *> + background={{colors.surface_container_low.default.hex_stripped}} + <* endif *> + selection-foreground={{colors.on_primary_container.default.hex_stripped}} + selection-background={{colors.primary_container.default.hex_stripped}} + cursor = {{colors.on_primary.default.hex_stripped}} {{colors.primary.default.hex_stripped}} - regular0={{colors.surface_container_high.default.hex_stripped}} - regular1={{colors.error.default.hex_stripped}} - regular2={{colors.primary.default.hex_stripped}} - regular3={{colors.tertiary.default.hex_stripped}} - regular4={{colors.secondary.default.hex_stripped}} - regular5={{colors.primary_fixed.default.hex_stripped}} - regular6={{colors.secondary_fixed.default.hex_stripped}} - regular7={{colors.on_surface_variant.default.hex_stripped}} + regular0={{colors.surface_container_high.default.hex_stripped}} + regular1={{colors.error.default.hex_stripped}} + regular2={{colors.primary.default.hex_stripped}} + regular3={{colors.tertiary.default.hex_stripped}} + regular4={{colors.secondary.default.hex_stripped}} + regular5={{colors.primary_fixed.default.hex_stripped}} + regular6={{colors.secondary_fixed.default.hex_stripped}} + regular7={{colors.on_surface_variant.default.hex_stripped}} - bright0={{colors.outline.default.hex_stripped}} - bright1={{colors.error.default.hex_stripped | to_color | lighten: 10.0}} - bright2={{colors.primary_container.default.hex_stripped}} - bright3={{colors.tertiary_container.default.hex_stripped}} - bright4={{colors.secondary_container.default.hex_stripped}} - bright5={{colors.inverse_primary.default.hex_stripped}} - bright6={{colors.outline_variant.default.hex_stripped}} - bright7={{colors.on_surface.default.hex_stripped}} + bright0={{colors.outline.default.hex_stripped}} + bright1={{colors.error.default.hex_stripped | to_color | lighten: 10.0}} + bright2={{colors.primary_container.default.hex_stripped}} + bright3={{colors.tertiary_container.default.hex_stripped}} + bright4={{colors.secondary_container.default.hex_stripped}} + bright5={{colors.inverse_primary.default.hex_stripped}} + bright6={{colors.outline_variant.default.hex_stripped}} + bright7={{colors.on_surface.default.hex_stripped}} - # dim-blend-towards=<* if {{ is_dark_mode }} *>black<* else *>white<* endif *> - ''; - }; - }) - (lib.mkIf config.beeMods.terminal.alacritty { - xdg.configFile."matugen/templates/alacritty-colors.toml" = { - text = '' - [colors.primary] - <* if {{ is_dark_mode }} *> - background = '{{colors.background.default.hex}}' - <* else *> - background = '{{colors.surface_container_low.default.hex}}' - <* endif *> - foreground = '{{colors.on_surface.default.hex}}' + # dim-blend-towards=<* if {{ is_dark_mode }} *>black<* else *>white<* endif *> + ''; + }; + }) + (lib.mkIf config.beeMods.terminal.alacritty { + xdg.configFile."matugen/templates/alacritty-colors.toml" = { + text = '' + [colors.primary] + <* if {{ is_dark_mode }} *> + background = '{{colors.background.default.hex}}' + <* else *> + background = '{{colors.surface_container_low.default.hex}}' + <* endif *> + foreground = '{{colors.on_surface.default.hex}}' - [colors.selection] - text = '{{colors.on_surface.default.hex}}' - background = '{{colors.primary_container.default.hex}}' + [colors.selection] + text = '{{colors.on_surface.default.hex}}' + background = '{{colors.primary_container.default.hex}}' - [colors.cursor] - text = '{{colors.background.default.hex}}' - cursor = '{{colors.primary.default.hex}}' + [colors.cursor] + text = '{{colors.background.default.hex}}' + cursor = '{{colors.primary.default.hex}}' - [colors.normal] - black = '{{colors.surface_container_high.default.hex}}' - red = '{{colors.error.default.hex}}' - green = '{{colors.primary.default.hex}}' - yellow = '{{colors.tertiary.default.hex}}' - blue = '{{colors.secondary.default.hex}}' - magenta = '{{colors.primary_fixed.default.hex}}' - cyan = '{{colors.secondary_fixed.default.hex}}' - white = '{{colors.on_surface_variant.default.hex}}' + [colors.normal] + black = '{{colors.surface_container_high.default.hex}}' + red = '{{colors.error.default.hex}}' + green = '{{colors.primary.default.hex}}' + yellow = '{{colors.tertiary.default.hex}}' + blue = '{{colors.secondary.default.hex}}' + magenta = '{{colors.primary_fixed.default.hex}}' + cyan = '{{colors.secondary_fixed.default.hex}}' + white = '{{colors.on_surface_variant.default.hex}}' - [colors.bright] - black = '{{colors.outline.default.hex}}' - red = '{{colors.error_container.default.hex | to_color | lighten: 10.0}}' - green = '{{colors.primary_container.default.hex}}' - yellow = '{{colors.tertiary_container.default.hex}}' - blue = '{{colors.secondary_container.default.hex}}' - magenta = '{{colors.inverse_primary.default.hex}}' - cyan = '{{colors.outline_variant.default.hex}}' - white = '{{colors.on_surface.default.hex}}' + [colors.bright] + black = '{{colors.outline.default.hex}}' + red = '{{colors.error_container.default.hex | to_color | lighten: 10.0}}' + green = '{{colors.primary_container.default.hex}}' + yellow = '{{colors.tertiary_container.default.hex}}' + blue = '{{colors.secondary_container.default.hex}}' + magenta = '{{colors.inverse_primary.default.hex}}' + cyan = '{{colors.outline_variant.default.hex}}' + white = '{{colors.on_surface.default.hex}}' - ''; - }; - }) - (lib.mkIf config.beeMods.terminal.ghostty { - xdg.configFile."matugen/templates/ghostty-colors.conf" = { - text = '' - <* if {{ is_dark_mode }} *> - background = {{colors.background.default.hex}} - <* else *> - background = {{colors.surface_container_low.default.hex}} - <* endif *> - foreground = {{colors.on_surface.default.hex}} - cursor-color = {{colors.primary.default.hex}} - selection-background = {{colors.primary_container.default.hex}} - selection-foreground = {{colors.on_surface.default.hex}} + ''; + }; + }) + (lib.mkIf config.beeMods.terminal.ghostty { + xdg.configFile."matugen/templates/ghostty-colors.conf" = { + text = '' + <* if {{ is_dark_mode }} *> + background = {{colors.background.default.hex}} + <* else *> + background = {{colors.surface_container_low.default.hex}} + <* endif *> + foreground = {{colors.on_surface.default.hex}} + cursor-color = {{colors.primary.default.hex}} + selection-background = {{colors.primary_container.default.hex}} + selection-foreground = {{colors.on_surface.default.hex}} - palette = 0={{colors.surface_container_high.default.hex}} - palette = 1={{colors.error.default.hex}} - palette = 2={{colors.primary.default.hex}} - palette = 3={{colors.tertiary.default.hex}} - palette = 4={{colors.secondary.default.hex}} - palette = 5={{colors.primary_fixed.default.hex}} - palette = 6={{colors.secondary_fixed.default.hex}} - palette = 7={{colors.on_surface_variant.default.hex}} - palette = 8={{colors.outline.default.hex}} - palette = 9={{colors.error_container.default.hex | to_color | lighten: 10.0}} - palette = 10={{colors.primary_container.default.hex}} - palette = 11={{colors.tertiary_container.default.hex}} - palette = 12={{colors.secondary_container.default.hex}} - palette = 13={{colors.inverse_primary.default.hex}} - palette = 14={{colors.outline_variant.default.hex}} - palette = 15={{colors.on_surface.default.hex}} - ''; - }; - }) - ]; + palette = 0={{colors.surface_container_high.default.hex}} + palette = 1={{colors.error.default.hex}} + palette = 2={{colors.primary.default.hex}} + palette = 3={{colors.tertiary.default.hex}} + palette = 4={{colors.secondary.default.hex}} + palette = 5={{colors.primary_fixed.default.hex}} + palette = 6={{colors.secondary_fixed.default.hex}} + palette = 7={{colors.on_surface_variant.default.hex}} + palette = 8={{colors.outline.default.hex}} + palette = 9={{colors.error_container.default.hex | to_color | lighten: 10.0}} + palette = 10={{colors.primary_container.default.hex}} + palette = 11={{colors.tertiary_container.default.hex}} + palette = 12={{colors.secondary_container.default.hex}} + palette = 13={{colors.inverse_primary.default.hex}} + palette = 14={{colors.outline_variant.default.hex}} + palette = 15={{colors.on_surface.default.hex}} + ''; + }; + }) + ] + ); } diff --git a/common/modules/matugen/templates/matugen-yazi.nix b/common/modules/matugen/templates/matugen-yazi.nix index ce84729..0df2339 100644 --- a/common/modules/matugen/templates/matugen-yazi.nix +++ b/common/modules/matugen/templates/matugen-yazi.nix @@ -4,7 +4,7 @@ ... }: { - config = lib.mkIf config.programs.yazi.enable { + config = lib.mkIf (config.programs.yazi.enable && config.beeMods.windowManagers.beeConfig.enable) { xdg.configFile = { "matugen/templates/yazi.toml" = { text = '' diff --git a/common/modules/terminal/alacritty.nix b/common/modules/terminal/alacritty.nix index 7cbcfec..606e4f0 100644 --- a/common/modules/terminal/alacritty.nix +++ b/common/modules/terminal/alacritty.nix @@ -25,7 +25,15 @@ in hide_when_typing = true; }; general = { - import = lib.optionals config.beeMods.matugen.enable [ "~/.config/alacritty/themes/matugen.toml" ]; + import = + if + config.beeMods.matugen.enable + && config.beeMods.windowManagers.beeConfig.enable + && !config.beeMods.windowManagers.noctalia + then + [ "~/.config/alacritty/themes/matugen.toml" ] + else + [ "~/.config/alacritty/themes/noctalia" ]; }; window = { dynamic_padding = true; diff --git a/common/modules/terminal/foot.nix b/common/modules/terminal/foot.nix index afc4539..7603776 100644 --- a/common/modules/terminal/foot.nix +++ b/common/modules/terminal/foot.nix @@ -11,7 +11,15 @@ in enable = true; settings = { main = { - include = lib.optionals config.beeMods.matugen.enable [ "~/.config/foot/themes/matugen" ]; + include = + if + config.beeMods.matugen.enable + && config.beeMods.windowManagers.beeConfig.enable + && !config.beeMods.windowManagers.noctalia + then + [ "~/.config/foot/themes/matugen" ] + else + [ "~/.config/foot/themes/noctalia" ]; line-height = 13; letter-spacing = 0; vertical-letter-offset = 0; diff --git a/common/modules/terminal/ghostty.nix b/common/modules/terminal/ghostty.nix index c47e991..9c74e2a 100644 --- a/common/modules/terminal/ghostty.nix +++ b/common/modules/terminal/ghostty.nix @@ -11,7 +11,15 @@ in enable = true; enableFishIntegration = true; settings = { - theme = lib.optionalString config.beeMods.matugen.enable "matugen"; + theme = + if + config.beeMods.matugen.enable + && config.beeMods.windowManagers.beeConfig.enable + && !config.beeMods.windowManagers.noctalia + then + [ "matugen" ] + else + [ "noctalia" ]; font-family = cfg.font.family; font-size = cfg.font.size; diff --git a/common/modules/window_managers/default.nix b/common/modules/window_managers/default.nix index 1c66f63..7967292 100644 --- a/common/modules/window_managers/default.nix +++ b/common/modules/window_managers/default.nix @@ -20,33 +20,52 @@ in { imports = [ (import ./mango args) + (import ./niri args) + (import ./noctalia.nix args) ]; options.${moduleNameSpace}.windowManagers = { mango.enable = lib.mkEnableOption "Enable mangowm"; + niri.enable = lib.mkEnableOption "Enable niri"; + noctalia = lib.mkEnableOption "Enable noctalia shell"; + beeConfig = { + enable = lib.mkEnableOption "Enable stuff from my config"; + waybar = lib.mkOption { + type = lib.types.bool; + default = config.beeMods.windowManagers.beeConfig.enable || false; + description = "Enable waybar"; + }; + }; eyeCandy = { - animations.enable = lib.mkEnableOption "Uiiiiiiiiiii"; + enable = lib.mkEnableOption "Enable Eyecandy ex (animations, windowblurs, effects)"; + animations = { + enable = lib.mkOption { + type = lib.types.bool; + default = config.beeMods.windowManagers.eyeCandy.enable || false; + description = "Uiiiiiiiiiii"; + }; + }; window = { blur = { enable = lib.mkEnableOption "Enable window blur"; passes = lib.mkOption { type = lib.types.int; - default = 1; + default = 3; }; radius = lib.mkOption { type = lib.types.int; - default = 10; + default = 12; }; }; shadows.enable = lib.mkEnableOption "Enable window drop shadows"; borderRadius = lib.mkOption { type = lib.types.int; - default = 0; + default = 12; description = "Border radius"; }; opacity = lib.mkOption { type = lib.types.number; - default = 1.0; + default = 0.87; description = "Window opacity"; }; }; @@ -55,16 +74,22 @@ in config = ( if homeManager then { - home.packages = with pkgs; [ - wl-clipboard - cliphist - brightnessctl - playerctl - matugen - awww - waybar - scripts.dotfiles - ]; + home.packages = + with pkgs; + [ + wl-clipboard + brightnessctl + playerctl + fyi + gapless + scripts.dotfiles + ] + ++ lib.optionals config.beeMods.windowManagers.beeConfig.enable [ + waybar + matugen + awww + cliphist + ]; } else { diff --git a/common/modules/window_managers/mango/default.nix b/common/modules/window_managers/mango/default.nix index 94c83c5..3d70b82 100644 --- a/common/modules/window_managers/mango/default.nix +++ b/common/modules/window_managers/mango/default.nix @@ -13,6 +13,7 @@ let cfg = config.${moduleNameSpace}.windowManagers; scripts = import ../scripts.nix { inherit pkgs config; }; + eyecandy = cfg.eyeCandy.enable; in { imports = @@ -26,21 +27,25 @@ in systemd.enable = true; systemd.variables = [ "--all" ]; extraConfig = '' - ${lib.optionalString (config.beeMods.matugen.enable) '' + ${lib.optionalString (config.beeMods.matugen.enable && cfg.beeConfig.enable && !cfg.noctalia) '' source = ~/.config/mango/colors.conf ''} - blur=${if cfg.eyeCandy.window.blur.enable then "1" else "0"} + ${lib.optionalString (!cfg.beeConfig.enable && cfg.noctalia) '' + source = ~/.config/mango/noctalia.conf + ''} + + blur=${if eyecandy && cfg.eyeCandy.window.blur.enable then "1" else "0"} blur_layer=0 blur_optimized=1 - blur_params_num_passes = ${toString cfg.eyeCandy.window.blur.passes} - blur_params_radius = ${toString cfg.eyeCandy.window.blur.radius} + blur_params_num_passes = ${if eyecandy then toString cfg.eyeCandy.window.blur.passes else "0"} + blur_params_radius = ${if eyecandy then toString cfg.eyeCandy.window.blur.radius else "0"} blur_params_noise = 0.02 blur_params_brightness = 0.9 blur_params_contrast = 0.9 blur_params_saturation = 1.1 - shadows=${if cfg.eyeCandy.window.shadows.enable then "1" else "0"} + shadows=${if eyecandy && cfg.eyeCandy.window.shadows.enable then "1" else "0"} layer_shadows = 0 shadow_only_floating = 1 shadows_size = 10 @@ -48,11 +53,11 @@ in shadows_position_x = 0 shadows_position_y = 0 - border_radius=${toString cfg.eyeCandy.window.borderRadius} + border_radius=${if eyecandy then toString cfg.eyeCandy.window.borderRadius else "0"} no_radius_when_single=0 - focused_opacity=${toString cfg.eyeCandy.window.opacity} - unfocused_opacity=${toString cfg.eyeCandy.window.opacity} + focused_opacity=${if eyecandy then toString cfg.eyeCandy.window.opacity else "1.0"} + unfocused_opacity=${if eyecandy then toString cfg.eyeCandy.window.opacity else "1.0"} # Scroller configuration scroller_structs=15 @@ -122,16 +127,52 @@ in borderpx=2 #Keymaps + # beeConfig keymaps + ${lib.optionalString (config.beeMods.matugen.enable && cfg.beeConfig.enable && !cfg.noctalia) '' + bind=SUPER,y,spawn,${scripts.dostuff} wall + bind=SUPER,a,spawn,rofi -show drun + bind=SUPER,c,spawn,sh -c 'fyi "Clock" "$(date)"' + bind=SUPER,comma,spawn,${scripts.dostuff} settings + + bind=NONE,XF86AudioRaiseVolume,spawn,${scripts.volume} up + bind=NONE,XF86AudioLowerVolume,spawn,${scripts.volume} down + bind=NONE,XF86AudioMute,spawn,${scripts.volume} toggle + + bind=NONE,XF86AudioMicMute,spawn,${scripts.micToggle} + + bind=NONE,XF86MonBrightnessUp,spawn,${scripts.brightness} up + bind=NONE,XF86MonBrightnessDown,spawn,${scripts.brightness} down + + bind=NONE,Print,spawn,${scripts.screenshot} full + bind=SUPER,Print,spawn,${scripts.screenshot} selection + bind=SUPER+SHIFT,Print,spawn,${scripts.screenshot} window + ''} + + ${lib.optionalString (!cfg.beeConfig.enable && cfg.noctalia) '' + bind=SUPER,y,spawn,noctalia msg panel-toggle wallpaper + bind=SUPER,a,spawn,noctalia msg panel-toggle launcher + bind=SUPER,c,spawn,sh -c 'fyi "Clock" "$(date)"' + bind=SUPER,v,spawn,noctalia msg panel-toggle clipboard + bind=SUPER,comma,spawn,noctalia msg settings-toggle + + bind=NONE,XF86AudioRaiseVolume,spawn,noctalia msg volume-up + bind=NONE,XF86AudioLowerVolume,spawn,noctalia msg volume-down + bind=NONE,XF86AudioMute,spawn,noctalia msg volume-mute + + bind=NONE,XF86AudioMicMute,spawn,noctalia msg mic-mute + + bind=NONE,XF86MonBrightnessUp,spawn,noctalia msg brightness-up + bind=NONE,XF86MonBrightnessDown,spawn,noctalia msg brightness-down + + bind=NONE,Print,spawn,noctalia msg screenshot-fullscreen + ''} + bind=SUPER,r,reload_config bind=SUPER,Return,spawn,${config.beeMods.terminal.default} - bind=SUPER,y,spawn,${scripts.dostuff} wall - bind=SUPER,a,spawn,rofi -show drun - bind=SUPER,c,spawn,sh -c 'dunstify "$(date)"' - bind=SUPER,comma,spawn,${scripts.dostuff} settings bind=SUPER,F12,spawn,gnome-calculator bind=SUPER,b,spawn,librewolf - bind=SUPER,e,spawn,pcmanfm + bind=SUPER,e,spawn,nautilus bind=SUPER,m,quit bind=SUPER,q,killclient, @@ -141,9 +182,6 @@ in bind=SUPER,k,focusdir,up bind=SUPER,j,focusdir,down - bind=NONE,Print,spawn,${scripts.screenshot} full - bind=SUPER,Print,spawn,${scripts.screenshot} selection - bind=SUPER+SHIFT,Print,spawn,${scripts.screenshot} window bind=SUPER+SHIFT,k,exchange_client,up bind=SUPER+SHIFT,j,exchange_client,down @@ -199,19 +237,12 @@ in bind=ALT,h,resizewin,-50,+0 bind=ALT,l,resizewin,+50,+0 - bind=NONE,XF86AudioRaiseVolume,spawn,${scripts.volume} up - bind=NONE,XF86AudioLowerVolume,spawn,${scripts.volume} down - bind=NONE,XF86AudioMute,spawn,${scripts.volume} toggle bind=NONE,XF86AudioPlay,spawn,playerctl play-pause bind=NONE,XF86AudioNext,spawn,playerctl next bind=NONE,XF86AudioPrev,spawn,playerctl previous bind=NONE,XF86AudioStop,spawn,playerctl stop - bind=NONE,XF86AudioMicMute,spawn,${scripts.micToggle} - - bind=NONE,XF86MonBrightnessUp,spawn,${scripts.brightness} up - bind=NONE,XF86MonBrightnessDown,spawn,${scripts.brightness} down mousebind=SUPER,btn_left,moveresize,curmove mousebind=NONE,btn_middle,togglemaximizescreen,0 @@ -242,8 +273,6 @@ in tagrule=id:8,layout_name:tile tagrule=id:9,layout_name:tile - # env=XCURSOR_THEME, Bibata-Modern-Ice - # env=XCURSOR_SIZE, 24 env=ELECTRON_OZONE_PLATFORM_HINT,auto env=QT_QPA_PLATFORMTHEME,qt6ct env=QT_QPA_PLATFORM,wayland @@ -251,10 +280,9 @@ in env=XDG_SESSION_TYPE,wayland env=GDK_BACKEND,wayland,x11 env=GDK_SCALE,1 - # env=XCURSOR_PATH,/usr/share/icons env=NVD_BACKEND,direct - animations=0 + animations=${if eyecandy && cfg.eyeCandy.animations.enable then "1" else "0"} layer_animations=0 animation_type_open=slide animation_type_close=zoom @@ -279,11 +307,15 @@ in animation_curve_opafadein=0.46,1.0,0.29,1 ''; autostart_sh = '' - wl-paste --type text --watch cliphist store & gnome-keyring-daemon --start --components=secrets,ssh,pkcs11 & - awww-daemon & - waybar & - dunst & + ${lib.optionalString cfg.beeConfig.enable '' + wl-paste --type text --watch cliphist store & + awww-daemon & + dunst & + ''} + ${lib.optionalString cfg.beeConfig.waybar '' + waybar & + ''} ''; }; } diff --git a/common/modules/window_managers/niri/default.nix b/common/modules/window_managers/niri/default.nix new file mode 100644 index 0000000..0306256 --- /dev/null +++ b/common/modules/window_managers/niri/default.nix @@ -0,0 +1,388 @@ +{ + homeManager, + inputs, + moduleNameSpace, + ... +}: +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.${moduleNameSpace}.windowManagers; + scripts = import ../scripts.nix { inherit pkgs config; }; + eyecandy = cfg.eyeCandy.enable; +in +{ + config = lib.mkIf cfg.niri.enable ( + if homeManager then + { + xdg.configFile."niri/config.kdl".text = '' + include optional=true "./noctalia.kdl" + workspace "1" + workspace "2" + workspace "3" + workspace "4" + + input { + keyboard { + xkb { + layout "us" + } + + repeat-delay 300 + repeat-rate 50 + } + + touchpad { + tap + natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "two-finger" + // disabled-on-external-mouse + } + + warp-mouse-to-focus + focus-follows-mouse max-scroll-amount="0%" + } + + output "eDP-1" { + mode "1920x1080@120.030" + scale 1 + transform "normal" + position x=1280 y=0 + } + + blur { + passes ${if eyecandy then toString cfg.eyeCandy.window.blur.passes else "0"} + offset ${if eyecandy then toString cfg.eyeCandy.window.blur.radius else "0"} + noise 0.03 + saturation 1.0 + } + + layout { + gaps 4 + center-focused-column "never" + background-color "transparent" + + preset-column-widths { + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + } + + default-column-width { proportion 0.5; } + + preset-window-heights { + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + } + + focus-ring { + off + } + + border { + on + width 2 + } + + shadow { + off + // on + softness 30 + spread 5 + offset x=0 y=5 + draw-behind-window true + } + + tab-indicator { + on + hide-when-single-tab + place-within-column + gap 5 + width 4 + length total-proportion=1.0 + position "right" + gaps-between-tabs 2 + corner-radius 8 + } + + insert-hint { + on + } + } + + hotkey-overlay { + skip-at-startup + } + + prefer-no-csd + // screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" + screenshot-path null + + animations { + on + // Slow down all animations by this factor. Values below 1 speed them up instead. + // slowdown 3.0 + } + + gestures { + hot-corners { + off + } + } + + window-rule { + match title="^Kdenlive$" + open-floating true + open-on-workspace "3" + } + + window-rule { + match app-id=r#"^(firefox|librewolf)$"# + open-on-workspace "1" + } + + window-rule { + match app-id=r#"^(foot|alacritty|ghotty|kitty)$"# + open-on-workspace "2" + } + + window-rule { + match app-id=r#"^(vesktop|mpv|.*Kdenlive.*)$"# + open-on-workspace "3" + } + + binds { + Mod+Shift+Slash { show-hotkey-overlay; } + + Mod+Return hotkey-overlay-title="Open a Terminal: ${config.beeMods.terminal.default}" { spawn "${config.beeMods.terminal.default}"; } + + ${lib.optionalString (config.beeMods.matugen.enable && cfg.beeConfig.enable && !cfg.noctalia) '' + Mod+A hotkey-overlay-title="Run an Application" { spawn-sh "rofi -show drun"; } + Mod+Y hotkey-overlay-title="Open wallpaper picker" { spawn-sh "${scripts.dostuff} wall"; } + Mod+Comma hotkey-overlay-title="Open Noctalia settings" { spawn-sh "${scripts.dostuff} settings"; } + + XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "${scripts.volume} up"; } + XF86AudioLowerVolume allow-when-locked=true { spawn-sh "${scripts.volume} down"; } + XF86AudioMute allow-when-locked=true { spawn-sh "${scripts.volume} toggle"; } + XF86AudioMicMute allow-when-locked=true { spawn-sh "${scripts.micToggle}"; } + + XF86MonBrightnessUp allow-when-locked=true { spawn-sh "${scripts.volume} up 0.02"; } + XF86MonBrightnessDown allow-when-locked=true { spawn-sh "{scripts.volume} down 0.02"; } + + XF86MonBrightnessUp allow-when-locked=true { spawn-sh "${scripts.brightness} up"; } + XF86MonBrightnessDown allow-when-locked=true { spawn-sh "${scripts.brightness} down"; } + ''} + + ${lib.optionalString (!cfg.beeConfig.enable && cfg.noctalia) '' + Mod+A hotkey-overlay-title="Run an Application" { spawn-sh "noctalia msg panel-toggle launcher"; } + Mod+Y hotkey-overlay-title="Open wallpaper picker" { spawn-sh "noctalia msg panel-toggle wallpaper"; } + Mod+V hotkey-overlay-title="Open clipboard panel" { spawn-sh "noctalia msg panel-toggle clipboard"; } + Mod+Comma hotkey-overlay-title="Open Noctalia settings" { spawn-sh "noctalia msg settings-toggle"; } + Mod+S { spawn-sh "noctalia msg panel-toggle control-center"; } + + + XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "noctalia msg volume-up"; } + XF86AudioLowerVolume allow-when-locked=true { spawn-sh "noctalia msg volume-down"; } + XF86AudioMute allow-when-locked=true { spawn-sh "noctalia msg volume-mute"; } + XF86AudioMicMute allow-when-locked=true { spawn-sh "noctalia msg mic-mute"; } + + Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } + Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } + + XF86MonBrightnessUp allow-when-locked=true { spawn-sh "noctalia msg volume-up 0.02"; } + XF86MonBrightnessDown allow-when-locked=true { spawn-sh "noctalia msg volume-down 0.02"; } + ''} + + Mod+Shift+C hotkey-overlay-title="Get current dat and time as noticiation" { spawn-sh "fyi Clock $(date)"; } + XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; } + XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; } + XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; } + XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; } + + + Mod+O repeat=false { toggle-overview; } + + Mod+Q repeat=false { close-window; } + + Mod+Left { focus-column-left; } + Mod+Down { focus-window-down; } + Mod+Up { focus-window-up; } + Mod+Right { focus-column-right; } + Mod+H { focus-column-left; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Mod+L { focus-column-right; } + + Mod+Ctrl+Left { move-column-left; } + Mod+Ctrl+Down { move-window-down; } + Mod+Ctrl+Up { move-window-up; } + Mod+Ctrl+Right { move-column-right; } + Mod+Ctrl+H { move-column-left; } + Mod+Ctrl+J { move-window-down; } + Mod+Ctrl+K { move-window-up; } + Mod+Ctrl+L { move-column-right; } + + // Alternative commands that move across workspaces when reaching + // the first or last window in a column. + // Mod+J { focus-window-or-workspace-down; } + // Mod+K { focus-window-or-workspace-up; } + // Mod+Ctrl+J { move-window-down-or-to-workspace-down; } + // Mod+Ctrl+K { move-window-up-or-to-workspace-up; } + + Mod+Home { focus-column-first; } + Mod+End { focus-column-last; } + Mod+Ctrl+Home { move-column-to-first; } + Mod+Ctrl+End { move-column-to-last; } + + Mod+Shift+Left { focus-monitor-left; } + Mod+Shift+Down { focus-monitor-down; } + Mod+Shift+Up { focus-monitor-up; } + Mod+Shift+Right { focus-monitor-right; } + Mod+Shift+H { focus-monitor-left; } + Mod+Shift+J { focus-monitor-down; } + Mod+Shift+K { focus-monitor-up; } + Mod+Shift+L { focus-monitor-right; } + + Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } + Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } + Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } + Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } + Mod+Shift+Ctrl+H { move-column-to-monitor-left; } + Mod+Shift+Ctrl+J { move-column-to-monitor-down; } + Mod+Shift+Ctrl+K { move-column-to-monitor-up; } + Mod+Shift+Ctrl+L { move-column-to-monitor-right; } + + Mod+Page_Down { focus-workspace-down; } + Mod+Page_Up { focus-workspace-up; } + Mod+U { focus-workspace-down; } + Mod+I { focus-workspace-up; } + Mod+Ctrl+Page_Down { move-column-to-workspace-down; } + Mod+Ctrl+Page_Up { move-column-to-workspace-up; } + Mod+Ctrl+U { move-column-to-workspace-down; } + Mod+Ctrl+I { move-column-to-workspace-up; } + + Mod+Shift+Page_Down { move-workspace-down; } + Mod+Shift+Page_Up { move-workspace-up; } + Mod+Shift+U { move-workspace-down; } + Mod+Shift+I { move-workspace-up; } + + Mod+WheelScrollRight { focus-column-right; } + Mod+WheelScrollLeft { focus-column-left; } + Mod+Ctrl+WheelScrollRight { move-column-right; } + Mod+Ctrl+WheelScrollLeft { move-column-left; } + + // Usually scrolling up and down with Shift in applications results in + // horizontal scrolling; these binds replicate that. + Mod+Shift+WheelScrollDown { focus-column-right; } + Mod+Shift+WheelScrollUp { focus-column-left; } + Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } + Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } + + + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + Mod+Shift+1 { move-column-to-workspace 1; } + Mod+Shift+2 { move-column-to-workspace 2; } + Mod+Shift+3 { move-column-to-workspace 3; } + Mod+Shift+4 { move-column-to-workspace 4; } + Mod+Shift+5 { move-column-to-workspace 5; } + Mod+Shift+6 { move-column-to-workspace 6; } + Mod+Shift+7 { move-column-to-workspace 7; } + Mod+Shift+8 { move-column-to-workspace 8; } + Mod+Shift+9 { move-column-to-workspace 9; } + + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + + Mod+Shift+BracketLeft { consume-window-into-column; } + Mod+Shift+BracketRight { expel-window-from-column; } + + Mod+R { switch-preset-column-width; } + // Cycling through the presets in reverse order is also possible. + // Mod+R { switch-preset-column-width-back; } + Mod+Shift+R { switch-preset-window-height; } + Mod+Ctrl+R { reset-window-height; } + Mod+D { maximize-column; } + Mod+F { fullscreen-window; } + + // Expand the focused column to space not taken up by other fully visible columns. + // Makes the column "fill the rest of the space". + Mod+Ctrl+F { expand-column-to-available-width; } + + Mod+C { center-column; } + + // Center all fully visible columns on screen. + Mod+Ctrl+C { center-visible-columns; } + + // Finer width adjustments. + // This command can also: + // * set width in pixels: "1000" + // * adjust width in pixels: "-5" or "+5" + // * set width as a percentage of screen width: "25%" + // * adjust width as a percentage of screen width: "-10%" or "+10%" + // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, + // set-column-width "100" will make the column occupy 200 physical screen pixels. + Mod+Minus { set-column-width "-10%"; } + Mod+Equal { set-column-width "+10%"; } + + // Finer height adjustments when in column with other windows. + Mod+Shift+Minus { set-window-height "-10%"; } + Mod+Shift+Equal { set-window-height "+10%"; } + + Mod+Space { toggle-window-floating; } + Mod+Shift+Space { switch-focus-between-floating-and-tiling; } + + Mod+W { toggle-column-tabbed-display; } + + // Actions to switch layouts. + // Note: if you uncomment these, make sure you do NOT have + // a matching layout switch hotkey configured in xkb options above. + // Having both at once on the same hotkey will break the switching, + // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). + Mod+Shift+N { switch-layout "next"; } + Mod+Shift+P { switch-layout "prev"; } + + Print { screenshot-screen; } + Mod+Print { screenshot; } + Mod+Shift+Print { screenshot-window; } + + // Applications such as remote-desktop clients and software KVM switches may + // request that niri stops processing the keyboard shortcuts defined here + // so they may, for example, forward the key presses as-is to a remote machine. + // It's a good idea to bind an escape hatch to toggle the inhibitor, + // so a buggy application can't hold your session hostage. + // + // The allow-inhibiting=false property can be applied to other binds as well, + // which ensures niri always processes them, even when an inhibitor is active. + Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } + + Mod+Shift+E { quit; } + Ctrl+Alt+Delete { quit; } + + // Mod+Shift+P { power-off-monitors; } + } + ''; + } + else + { + programs.niri = { + enable = true; + useNautilus = true; + }; + } + ); +} diff --git a/common/modules/window_managers/noctalia.nix b/common/modules/window_managers/noctalia.nix new file mode 100644 index 0000000..cc4c88c --- /dev/null +++ b/common/modules/window_managers/noctalia.nix @@ -0,0 +1,29 @@ +{ + homeManager, + inputs, + moduleNameSpace, + ... +}: +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.${moduleNameSpace}.windowManagers; +in +{ + imports = lib.optionals homeManager [ + inputs.noctalia.homeModules.default + ]; + + config = lib.mkIf cfg.noctalia ( + lib.optionalAttrs homeManager { + programs.noctalia = { + enable = true; + systemd.enable = true; + }; + } + ); +} diff --git a/common/overlays/IosevkaInput.nix b/common/overlays/IosevkaInput.nix deleted file mode 100644 index 619a086..0000000 --- a/common/overlays/IosevkaInput.nix +++ /dev/null @@ -1,187 +0,0 @@ -final: prev: { - ioskeley-input = prev.iosevka.override { - set = "Input"; - privateBuildPlan = '' - [buildPlans.IosevkaInput] - family = "IosevkaInput" - spacing = "fixed" - serifs = "sans" - exportGlyphNames = false - noLigation = true - - [buildPlans.IosevkaInput.variants.design] - one = "base" - two = "curly-neck-serifless" - three = "flat-top-serifless" - four = "closed-serifless" - five = "upright-flat-serifless" - six = "closed-contour" - seven = "straight-serifless" - eight = "two-circles" - nine = "closed-contour" - zero = "oval-long-dotted" - capital-a = "straight-serifless" - capital-b = "standard-serifless" - capital-c = "bilateral-inward-serifed" - capital-d = "standard-serifless" - capital-e = "serifless" - capital-f = "serifless" - capital-g = "toothless-corner-serifless-hooked" - capital-h = "serifless" - capital-i = "serifed" - capital-j = "serifless" - capital-k = "symmetric-connected-serifless" - capital-l = "serifless" - capital-m = "hanging-serifless" - capital-n = "standard-serifless" - capital-p = "closed-serifless" - capital-q = "crossing-curly-tailed" - capital-r = "straight-serifless" - capital-s = "bilateral-inward-serifed" - capital-t = "serifless" - capital-u = "toothless-rounded-serifless" - capital-v = "curly-serifless" - capital-w = "straight-vertical-sides-serifless" - capital-x = "curly-serifless" - capital-y = "curly-serifless" - capital-z = "straight-serifed" - a = "double-storey-toothless-corner" - b = "toothless-corner-serifless" - c = "serifless" - d = "toothless-corner-serifless" - e = "flat-crossbar" - f = "flat-hook-serifless-crossbar-at-x-height" - g = "double-storey" - h = "straight-serifless" - i = "zshaped" - j = "flat-hook-serifed" - k = "straight-serifless" - l = "zshaped" - m = "earless-rounded-double-arch-short-leg-serifless" - n = "earless-corner-straight-serifless" - p = "earless-corner-serifless" - q = "earless-corner-straight-serifless" - r = "earless-corner-serifless" - s = "serifless" - t = "flat-hook" - u = "toothless-corner-serifless" - v = "straight-serifless" - w = "rounded-vertical-sides-serifless" - x = "straight-serifless" - y = "straight-turn-serifless" - z = "straight-serifless" - capital-eszet = "corner-serifless" - long-s = "bent-hook-serifless" - eszet = "sulzbacher-serifless" - lower-eth = "straight-bar" - capital-thorn = "serifless" - lower-thorn = "serifless" - lower-alpha = "crossing" - lower-beta = "standard" - capital-gamma = "serifless" - lower-gamma = "casual" - capital-delta = "straight" - lower-delta = "flat-top" - lower-eta = "earless-corner-serifless" - lower-theta = "capsule" - lower-iota = "serifed-semi-tailed" - lower-kappa = "straight-serifless" - capital-lambda = "straight-serifless" - lower-lambda = "straight" - lower-mu = "toothless-corner-serifless" - lower-nu = "casual" - lower-xi = "flat-top" - lower-pi = "tailless" - lower-tau = "semi-tailed" - lower-upsilon = "casual-serifless" - lower-phi = "cursive" - lower-chi = "semi-chancery-straight-serifless" - lower-psi = "flat-top-serifless" - partial-derivative = "straight-bar" - cyrl-a = "double-storey-hook-inward-serifed-tailed" - cyrl-ve = "standard-serifless" - cyrl-capital-zhe = "symmetric-connected" - cyrl-zhe = "symmetric-connected" - cyrl-capital-ze = "bilateral-inward-serifed" - cyrl-ze = "serifless" - cyrl-capital-ka = "symmetric-connected-bottom-right-serifed" - cyrl-ka = "symmetric-connected-serifless" - cyrl-el = "straight" - cyrl-em = "flat-bottom-serifless" - cyrl-capital-en = "serifed" - cyrl-en = "serifless" - cyrl-capital-er = "closed-serifed" - cyrl-er = "eared-serifed" - cyrl-capital-u = "cursive-serifless" - cyrl-u = "cursive-serifless" - cyrl-ef = "serifless" - cyrl-che = "standard" - cyrl-yeri = "corner" - cyrl-yery = "corner" - cyrl-capital-e = "bilateral-inward-serifed" - cyrl-e = "serifless" - cyrl-capital-ya = "standing-serifless" - cyrl-ya = "standing-serifless" - tittle = "round" - diacritic-dot = "round" - punctuation-dot = "round" - braille-dot = "square" - tilde = "low" - asterisk = "hex-low" - underscore = "above-baseline" - caret = "medium" - ascii-grave = "straight" - ascii-single-quote = "straight" - paren = "normal" - brace = "curly-flat-boundary" - guillemet = "straight" - number-sign = "upright" - ampersand = "closed" - at = "fourfold" - dollar = "through" - cent = "through" - percent = "rings-continuous-slash" - bar = "force-upright" - question = "corner" - pilcrow = "high" - micro-sign = "tailed-serifless" - decorative-angle-brackets = "middle" - - [buildPlans.IosevkaInput.weights.Regular] - shape = 360 - menu = 400 - css = 400 - - [buildPlans.IosevkaInput.weights.Bold] - shape = 900 - menu = 700 - css = 700 - - [buildPlans.IosevkaInput.slopes.Upright] - angle = 0 - shape = "upright" - menu = "upright" - css = "normal" - - [buildPlans.IosevkaInput.slopes.Italic] - angle = 9.4 - shape = "italic" - menu = "italic" - css = "italic" - - [buildPlans.IosevkaInput.widths.Normal] - shape = 575 - menu = 5 - css = "normal" - - [buildPlans.IosevkaInput.metricOverride] - leading = 1100 - parenSize = 950 - cap = 800 - ascender = 800 - xHeight = 600 - dotSize = "blend(weight, [100, 50], [360, 140], [900, 190])" - periodSize = "blend(weight, [100, 55], [360, 160], [900, 215])" - ''; - }; -} diff --git a/common/overlays/default.nix b/common/overlays/default.nix index 5a6f72b..6918e89 100644 --- a/common/overlays/default.nix +++ b/common/overlays/default.nix @@ -1,7 +1,6 @@ { inputs, ... }: { flake.overlays = { - IosevkaInput = import ./IosevkaInput.nix; qt6ct = import ./qt6ct.nix; }; } diff --git a/common/packages/default.nix b/common/packages/default.nix new file mode 100644 index 0000000..d2b5ce6 --- /dev/null +++ b/common/packages/default.nix @@ -0,0 +1,5 @@ +{ ... }: { + perSystem = { pkgs, ... }: { + packages.iosevka-input = import ./iosevka-input.nix { inherit pkgs; }; + }; +} diff --git a/common/packages/iosevka-input.nix b/common/packages/iosevka-input.nix new file mode 100644 index 0000000..ab460c4 --- /dev/null +++ b/common/packages/iosevka-input.nix @@ -0,0 +1,186 @@ +{ pkgs }: +pkgs.iosevka.override { + set = "Input"; + privateBuildPlan = '' + [buildPlans.IosevkaInput] + family = "IosevkaInput" + spacing = "fixed" + serifs = "sans" + exportGlyphNames = false + noLigation = true + + [buildPlans.IosevkaInput.variants.design] + one = "base" + two = "curly-neck-serifless" + three = "flat-top-serifless" + four = "closed-serifless" + five = "upright-flat-serifless" + six = "closed-contour" + seven = "straight-serifless" + eight = "two-circles" + nine = "closed-contour" + zero = "oval-long-dotted" + capital-a = "straight-serifless" + capital-b = "standard-serifless" + capital-c = "bilateral-inward-serifed" + capital-d = "standard-serifless" + capital-e = "serifless" + capital-f = "serifless" + capital-g = "toothless-corner-serifless-hooked" + capital-h = "serifless" + capital-i = "serifed" + capital-j = "serifless" + capital-k = "symmetric-connected-serifless" + capital-l = "serifless" + capital-m = "hanging-serifless" + capital-n = "standard-serifless" + capital-p = "closed-serifless" + capital-q = "crossing-curly-tailed" + capital-r = "straight-serifless" + capital-s = "bilateral-inward-serifed" + capital-t = "serifless" + capital-u = "toothless-rounded-serifless" + capital-v = "curly-serifless" + capital-w = "straight-vertical-sides-serifless" + capital-x = "curly-serifless" + capital-y = "curly-serifless" + capital-z = "straight-serifed" + a = "double-storey-toothless-corner" + b = "toothless-corner-serifless" + c = "serifless" + d = "toothless-corner-serifless" + e = "flat-crossbar" + f = "flat-hook-serifless-crossbar-at-x-height" + g = "double-storey" + h = "straight-serifless" + i = "zshaped" + j = "flat-hook-serifed" + k = "straight-serifless" + l = "zshaped" + m = "earless-rounded-double-arch-short-leg-serifless" + n = "earless-corner-straight-serifless" + p = "earless-corner-serifless" + q = "earless-corner-straight-serifless" + r = "earless-corner-serifless" + s = "serifless" + t = "flat-hook" + u = "toothless-corner-serifless" + v = "straight-serifless" + w = "rounded-vertical-sides-serifless" + x = "straight-serifless" + y = "straight-turn-serifless" + z = "straight-serifless" + capital-eszet = "corner-serifless" + long-s = "bent-hook-serifless" + eszet = "sulzbacher-serifless" + lower-eth = "straight-bar" + capital-thorn = "serifless" + lower-thorn = "serifless" + lower-alpha = "crossing" + lower-beta = "standard" + capital-gamma = "serifless" + lower-gamma = "casual" + capital-delta = "straight" + lower-delta = "flat-top" + lower-eta = "earless-corner-serifless" + lower-theta = "capsule" + lower-iota = "serifed-semi-tailed" + lower-kappa = "straight-serifless" + capital-lambda = "straight-serifless" + lower-lambda = "straight" + lower-mu = "toothless-corner-serifless" + lower-nu = "casual" + lower-xi = "flat-top" + lower-pi = "tailless" + lower-tau = "semi-tailed" + lower-upsilon = "casual-serifless" + lower-phi = "cursive" + lower-chi = "semi-chancery-straight-serifless" + lower-psi = "flat-top-serifless" + partial-derivative = "straight-bar" + cyrl-a = "double-storey-hook-inward-serifed-tailed" + cyrl-ve = "standard-serifless" + cyrl-capital-zhe = "symmetric-connected" + cyrl-zhe = "symmetric-connected" + cyrl-capital-ze = "bilateral-inward-serifed" + cyrl-ze = "serifless" + cyrl-capital-ka = "symmetric-connected-bottom-right-serifed" + cyrl-ka = "symmetric-connected-serifless" + cyrl-el = "straight" + cyrl-em = "flat-bottom-serifless" + cyrl-capital-en = "serifed" + cyrl-en = "serifless" + cyrl-capital-er = "closed-serifed" + cyrl-er = "eared-serifed" + cyrl-capital-u = "cursive-serifless" + cyrl-u = "cursive-serifless" + cyrl-ef = "serifless" + cyrl-che = "standard" + cyrl-yeri = "corner" + cyrl-yery = "corner" + cyrl-capital-e = "bilateral-inward-serifed" + cyrl-e = "serifless" + cyrl-capital-ya = "standing-serifless" + cyrl-ya = "standing-serifless" + tittle = "round" + diacritic-dot = "round" + punctuation-dot = "round" + braille-dot = "square" + tilde = "low" + asterisk = "hex-low" + underscore = "above-baseline" + caret = "medium" + ascii-grave = "straight" + ascii-single-quote = "straight" + paren = "normal" + brace = "curly-flat-boundary" + guillemet = "straight" + number-sign = "upright" + ampersand = "closed" + at = "fourfold" + dollar = "through" + cent = "through" + percent = "rings-continuous-slash" + bar = "force-upright" + question = "corner" + pilcrow = "high" + micro-sign = "tailed-serifless" + decorative-angle-brackets = "middle" + + [buildPlans.IosevkaInput.weights.Regular] + shape = 360 + menu = 400 + css = 400 + + [buildPlans.IosevkaInput.weights.Bold] + shape = 900 + menu = 700 + css = 700 + + [buildPlans.IosevkaInput.slopes.Upright] + angle = 0 + shape = "upright" + menu = "upright" + css = "normal" + + [buildPlans.IosevkaInput.slopes.Italic] + angle = 9.4 + shape = "italic" + menu = "italic" + css = "italic" + + [buildPlans.IosevkaInput.widths.Normal] + shape = 575 + menu = 5 + css = "normal" + + [buildPlans.IosevkaInput.metricOverride] + leading = 1100 + parenSize = 950 + cap = 800 + ascender = 800 + xHeight = 600 + dotSize = "blend(weight, [100, 50], [360, 140], [900, 190])" + periodSize = "blend(weight, [100, 55], [360, 160], [900, 215])" + ''; +} diff --git a/common/programs/btop.nix b/common/programs/btop.nix index a030e3d..6600188 100644 --- a/common/programs/btop.nix +++ b/common/programs/btop.nix @@ -3,7 +3,15 @@ programs.btop = { enable = true; settings = { - color_theme = lib.optionalString config.beeMods.matugen.enable "matugen"; + color_theme = + if + config.beeMods.matugen.enable + && config.beeMods.windowManagers.beeConfig.enable + && !config.beeMods.windowManagers.noctalia + then + "matugen" + else + "noctalia"; theme_background = false; truecolor = true; vim_keys = true; diff --git a/common/programs/dunst.nix b/common/programs/dunst.nix index c5b5eb0..78aadf5 100644 --- a/common/programs/dunst.nix +++ b/common/programs/dunst.nix @@ -10,31 +10,33 @@ let ''; in { - services.dunst = { - enable = true; - settings = { - global = { - font = "IosevkaInput 11"; - corner_radius = 0; - frame_width = 2; - markup = "yes"; - browser = "librewolf"; + config = lib.mkIf config.beeMods.windowManagers.beeConfig.enable { + services.dunst = { + enable = true; + settings = { + global = { + font = "IosevkaInput 11"; + corner_radius = 0; + frame_width = 2; + markup = "yes"; + browser = "librewolf"; - origin = "top-center"; - offset = "(0, 4)"; - }; - urgency_low = { - timeout = 3; - }; - urgency_normal = { - timeout = 5; - }; - urgency_critical = { - timeout = 0; - }; - play_sound = { - summary = "*"; - script = "${playSound}/bin/play-notification-sound"; + origin = "top-center"; + offset = "(0, 4)"; + }; + urgency_low = { + timeout = 3; + }; + urgency_normal = { + timeout = 5; + }; + urgency_critical = { + timeout = 0; + }; + play_sound = { + summary = "*"; + script = "${playSound}/bin/play-notification-sound"; + }; }; }; }; diff --git a/common/programs/fastfetch.nix b/common/programs/fastfetch.nix index 96c942d..59ba8ac 100644 --- a/common/programs/fastfetch.nix +++ b/common/programs/fastfetch.nix @@ -16,7 +16,6 @@ "shell" "de" "wm" - "font" "terminal" "cpu" "gpu" diff --git a/common/programs/rofi.nix b/common/programs/rofi.nix index d0abd1a..20fdffe 100644 --- a/common/programs/rofi.nix +++ b/common/programs/rofi.nix @@ -5,140 +5,142 @@ ... }: { - programs.rofi = { - enable = true; - font = "IosevkaInput"; - # plugins = with pkgs; [ rofi-emoji ]; - theme = "~/.config/rofi/themes/config.rasi"; - extraConfig = { - show-icons = true; - # drun-display-format = "{name}"; + config = lib.mkIf config.beeMods.windowManagers.beeConfig.enable { + programs.rofi = { + enable = true; + font = "IosevkaInput"; + # plugins = with pkgs; [ rofi-emoji ]; + theme = "~/.config/rofi/themes/config.rasi"; + extraConfig = { + show-icons = true; + # drun-display-format = "{name}"; + }; }; - }; - home.packages = [ - pkgs.rofi-power-menu - ]; - - xdg.configFile = { - "rofi/shared/colors.rasi" = { - enable = !config.beeMods.matugen.enable; - text = - # rasi - '' - * { - bg: #212121; - bg-alt: #2d2d2d; - fg: #ffffffdd; - fg-dim: #616161; - accent: #80cbc4; - selected-bg: #424242; - selected-fg: #80cbc4; - urgent: #ef9a9a; - outline: #424242; - } - ''; - }; + home.packages = [ + pkgs.rofi-power-menu + ]; + + xdg.configFile = { + "rofi/shared/colors.rasi" = { + enable = !config.beeMods.matugen.enable; + text = + # rasi + '' + * { + bg: #212121; + bg-alt: #2d2d2d; + fg: #ffffffdd; + fg-dim: #616161; + accent: #80cbc4; + selected-bg: #424242; + selected-fg: #80cbc4; + urgent: #ef9a9a; + outline: #424242; + } + ''; + }; + + "rofi/themes/config.rasi" = { + enable = true; + text = + # rasi + '' + @import "shared/colors.rasi" + * { + background-color: transparent; + text-color: @fg; + border: 0px; + margin: 0px; + padding: 0px; + spacing: 0px; + } + + window { + background-color: @bg; + border-radius: 0px; + border: 2px; + border-color: @outline; + width: 680px; + padding: 10px; + } + + mainbox { + background-color: transparent; + spacing: 8px; + } + + inputbar { + background-color: @bg-alt; + border-radius: 0px; + padding: 10px 12px; + spacing: 8px; + children: [entry]; + } + + entry { + background-color: transparent; + text-color: @fg; + placeholder-color: @fg-dim; + placeholder: "Search..."; + cursor: text; + font: "IosevkaInput 13"; + } + + listview { + background-color: transparent; + columns: 1; + lines: 5; + spacing: 2px; + scrollbar: false; + } + + element { + background-color: transparent; + border-radius: 0px; + padding: 8px 12px; + spacing: 12px; + children: [element-icon, element-text]; + } + + element normal normal { + background-color: transparent; + text-color: @fg; + } + + element alternate normal { + background-color: transparent; + text-color: @fg; + } + + element selected normal { + background-color: @selected-bg; + text-color: @selected-fg; + } + + element normal urgent { + text-color: @urgent; + } + + element selected urgent { + background-color: @selected-bg; + text-color: @urgent; + } + + element-icon { + background-color: transparent; + size: 22px; + } + + element-text { + background-color: transparent; + text-color: inherit; + vertical-align: 0.5; + font: "IosevkaInput 13"; + } + ''; + }; - "rofi/themes/config.rasi" = { - enable = true; - text = - # rasi - '' - @import "shared/colors.rasi" - * { - background-color: transparent; - text-color: @fg; - border: 0px; - margin: 0px; - padding: 0px; - spacing: 0px; - } - - window { - background-color: @bg; - border-radius: 0px; - border: 2px; - border-color: @outline; - width: 680px; - padding: 10px; - } - - mainbox { - background-color: transparent; - spacing: 8px; - } - - inputbar { - background-color: @bg-alt; - border-radius: 0px; - padding: 10px 12px; - spacing: 8px; - children: [entry]; - } - - entry { - background-color: transparent; - text-color: @fg; - placeholder-color: @fg-dim; - placeholder: "Search..."; - cursor: text; - font: "IosevkaInput 13"; - } - - listview { - background-color: transparent; - columns: 1; - lines: 5; - spacing: 2px; - scrollbar: false; - } - - element { - background-color: transparent; - border-radius: 0px; - padding: 8px 12px; - spacing: 12px; - children: [element-icon, element-text]; - } - - element normal normal { - background-color: transparent; - text-color: @fg; - } - - element alternate normal { - background-color: transparent; - text-color: @fg; - } - - element selected normal { - background-color: @selected-bg; - text-color: @selected-fg; - } - - element normal urgent { - text-color: @urgent; - } - - element selected urgent { - background-color: @selected-bg; - text-color: @urgent; - } - - element-icon { - background-color: transparent; - size: 22px; - } - - element-text { - background-color: transparent; - text-color: inherit; - vertical-align: 0.5; - font: "IosevkaInput 13"; - } - ''; }; - }; } diff --git a/common/programs/vesktop.nix b/common/programs/vesktop.nix index 5cb6a6b..0363bb9 100644 --- a/common/programs/vesktop.nix +++ b/common/programs/vesktop.nix @@ -4,7 +4,15 @@ enable = false; vencord = { settings = { - enabledThemes = lib.optionals config.beeMods.matugen.enable [ "system24.css" ]; + enabledThemes = + if + config.beeMods.matugen.enable + && config.beeMods.windowManagers.beeConfig.enable + && !config.beeMods.windowManagers.noctalia + then + [ "system24-matugen" ] + else + [ "noctalia-system24" ]; autoUpdate = false; autoUpdateNotification = false; notifyAboutUpdates = false; -- cgit v1.3.1