diff options
Diffstat (limited to 'common/modules')
| -rw-r--r-- | common/modules/matugen/default.nix | 16 | ||||
| -rw-r--r-- | common/modules/matugen/templates/matugen-btop.nix | 2 | ||||
| -rw-r--r-- | common/modules/matugen/templates/matugen-discord.nix | 473 | ||||
| -rw-r--r-- | common/modules/matugen/templates/matugen-dunst.nix | 43 | ||||
| -rw-r--r-- | common/modules/matugen/templates/matugen-gtk.nix | 107 | ||||
| -rw-r--r-- | common/modules/matugen/templates/matugen-mango.nix | 33 | ||||
| -rw-r--r-- | common/modules/matugen/templates/matugen-nvim.nix | 34 | ||||
| -rw-r--r-- | common/modules/matugen/templates/matugen-sequences.nix | 2 | ||||
| -rw-r--r-- | common/modules/matugen/templates/matugen-terminal.nix | 208 | ||||
| -rw-r--r-- | common/modules/matugen/templates/matugen-yazi.nix | 2 | ||||
| -rw-r--r-- | common/modules/terminal/alacritty.nix | 10 | ||||
| -rw-r--r-- | common/modules/terminal/foot.nix | 10 | ||||
| -rw-r--r-- | common/modules/terminal/ghostty.nix | 10 | ||||
| -rw-r--r-- | common/modules/window_managers/default.nix | 55 | ||||
| -rw-r--r-- | common/modules/window_managers/mango/default.nix | 94 | ||||
| -rw-r--r-- | common/modules/window_managers/niri/default.nix | 388 | ||||
| -rw-r--r-- | common/modules/window_managers/noctalia.nix | 29 |
17 files changed, 1023 insertions, 493 deletions
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"); + 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 + */ - body { - /* font options */ - --font: "IosevkaInput"; - --code-font: "IosevkaInput"; - font-weight: 300; - letter-spacing: -0.05ch; + /* import theme modules */ + @import url("https://refact0r.github.io/system24/build/system24.css"); - /* sizes */ - --gap: 12px; - --divider-thickness: 4px; - --border-thickness: 2px; - --border-hover-transition: 0.2s ease; + body { + /* font options */ + --font: "IosevkaInput"; + --code-font: "IosevkaInput"; + font-weight: 300; + letter-spacing: -0.05ch; - /* animation/transition options */ - --animations: off; - --list-item-transition: 0.2s ease; - --dms-icon-svg-transition: 0.4s ease; + /* sizes */ + --gap: 12px; + --divider-thickness: 4px; + --border-thickness: 2px; + --border-hover-transition: 0.2s ease; - /* top bar options */ - --top-bar-height: var(--gap); - --top-bar-button-position: titlebar; - --top-bar-title-position: off; - --subtle-top-bar-title: off; + /* animation/transition options */ + --animations: off; + --list-item-transition: 0.2s ease; + --dms-icon-svg-transition: 0.4s ease; - /* window controls */ - --custom-window-controls: off; - --window-control-size: 14px; + /* top bar options */ + --top-bar-height: var(--gap); + --top-bar-button-position: titlebar; + --top-bar-title-position: off; + --subtle-top-bar-title: off; - /* 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)); + /* window controls */ + --custom-window-controls: off; + --window-control-size: 14px; - /* background image options */ - --background-image: off; - --background-image-url: url(""); + /* 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)); - /* transparency/blur options */ - --transparency-tweaks: off; - --remove-bg-layer: off; - --panel-blur: off; - --blur-amount: 12px; - --bg-floating: var(--bg-3); + /* background image options */ + --background-image: off; + --background-image-url: url(""); - /* other options */ - --small-user-panel: on; + /* transparency/blur options */ + --transparency-tweaks: off; + --remove-bg-layer: off; + --panel-blur: off; + --blur-amount: 12px; + --bg-floating: var(--bg-3); - /* unrounding options */ - --unrounding: on; + /* other options */ + --small-user-panel: on; - /* styling options */ - --custom-spotify-bar: on; - --ascii-titles: on; - --ascii-loader: system24; + /* unrounding options */ + --unrounding: on; - /* panel labels */ - --panel-labels: on; - --label-color: var(--text-muted); - --label-font-weight: 500; - } + /* styling options */ + --custom-spotify-bar: on; + --ascii-titles: on; + --ascii-loader: system24; - /* color options */ - :root { - --colors: on; + /* panel labels */ + --panel-labels: on; + --label-color: var(--text-muted); + --label-font-weight: 500; + } - /* 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}}; + /* color options */ + :root { + --colors: on; - /* 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 *> + /* 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}}; - /* 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); + /* 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 *> - /* 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}}; + /* 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); - /* 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); + /* 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}}; - /* 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}}; + /* 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); - /* border colors */ - --border-light: var(--hover); - --border: var(--active); - --border-hover: {{colors.primary.default.hex}}; - --button-border: {{colors.on_surface.default.hex}}1a; + /* 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}}; - /* 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); + /* border colors */ + --border-light: var(--hover); + --border: var(--active); + --border-hover: {{colors.primary.default.hex}}; + --button-border: {{colors.on_surface.default.hex}}1a; - --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); + /* 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); - --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); + --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); - --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); + --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); - --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); - } - ''; - }; + --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); - "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 - */ + --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); + } + ''; + }; - /* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */ + "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 + */ - @import url('https://refact0r.github.io/midnight-discord/build/midnight.css'); + /* IMPORTANT: make sure to enable dark mode in discord settings for the theme to apply properly!!! */ - /* customize things here */ - :root { - /* font, change to 'gg sans' for default discord font*/ - --font: 'IosevkaInput'; + @import url('https://refact0r.github.io/midnight-discord/build/midnight.css'); - /* top left corner text */ - --corner-text: 'Midnight'; + /* customize things here */ + :root { + /* font, change to 'gg sans' for default discord font*/ + --font: 'IosevkaInput'; - /* 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 */ + /* top left corner text */ + --corner-text: 'Midnight'; - /* 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 */ + /* 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 */ - /* 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 */ + /* 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 */ - /* 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 */ + /* 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 */ - /* amount of spacing and padding */ - --spacing: 12px; + /* 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 */ - /* 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.) */ + /* amount of spacing and padding */ + --spacing: 12px; - /* 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 */ + /* 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.) */ - /* 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; + /* 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 */ - /* 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 */ - } + /* 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; - /* Selected chat/friend text */ - .selected_f5eb4b, - .selected_f6f816 .link_d8bfb3 { - color: var(--text-0) !important; - background: var(--accent-3) !important; - } + /* 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_f6f816 .link_d8bfb3 * { - color: var(--text-0) !important; - fill: var(--text-0) !important; - } - ''; - }; - }; + /* 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; + }; + } + ); +} |
