Compare commits
4 Commits
28a2f5d5ae
...
05d995f8e0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
05d995f8e0 | ||
|
|
f6c4a2a591 | ||
|
|
7c34eed2ca | ||
|
|
d252f01f17 |
@@ -262,7 +262,9 @@
|
||||
"Bash(NOMARCHY_PATH=__TRACKED_VAR__ python3 pkgs/nomarchy-theme-sync/nomarchy-theme-sync.py --quiet apply summer-night --no-switch)",
|
||||
"Bash(NOMARCHY_PATH=__TRACKED_VAR__ python3 pkgs/nomarchy-theme-sync/nomarchy-theme-sync.py --quiet apply summer-day --no-switch)",
|
||||
"Bash(xargs cat)",
|
||||
"Bash(nix-instantiate --parse modules/home/rofi.nix)"
|
||||
"Bash(nix-instantiate --parse modules/home/rofi.nix)",
|
||||
"Bash(nix-instantiate --parse modules/home/shell.nix)",
|
||||
"Bash(command -v nix)"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
39
README.md
39
README.md
@@ -364,25 +364,32 @@ close · `SUPER+1..9` workspaces · `Print` region screenshot.
|
||||
and yazi fell back to presets. Fixed by adding `group = "git"` to both
|
||||
git fetcher entries in `modules/home/yazi.nix` (the git plugin's
|
||||
`setup()` only renders the linemode; the fetcher still needs registering).
|
||||
- **Starship prompt styling:** drop the powerline look — the current prompt
|
||||
doesn't read well. Rework the `format`/segment styling in
|
||||
`modules/home/shell.nix:59` toward a flat, plain prompt.
|
||||
- ✓ **Starship prompt styling:** dropped the powerline look (the `[]`
|
||||
separator glyph + `bg:` fills) for a flat prompt — bold-accent directory,
|
||||
warn git branch, subtext status/duration, `❯` character, all plain
|
||||
colored text (`modules/home/shell.nix`). Also wired in `cmd_duration`,
|
||||
which was configured but never referenced in `format`.
|
||||
- ✓ **xfce deprecation warnings:** moved `xfce.exo` → `pkgs.xfce4-exo` and
|
||||
the three Thunar plugins to their new top-level names in
|
||||
`modules/nixos/file-manager.nix`; the eval warnings are gone.
|
||||
- **Rofi function keybindings:** add direct Hyprland binds for the
|
||||
`nomarchy-menu` sub-functions (calc, web search, file search, clipboard,
|
||||
…) instead of only reaching them through the menu — see the planned binds
|
||||
in the Menu-system roadmap item and `modules/home/hyprland.nix`.
|
||||
- ✓ **Rofi function keybindings:** direct `SUPER+CTRL+<mnemonic>` binds jump
|
||||
straight to each `nomarchy-menu` module — V clipboard · C calc · W web ·
|
||||
F files · N network · B bluetooth · S capture · A ask — added to
|
||||
`modules/home/keybinds.nix`, so they also show in the SUPER+? cheatsheet.
|
||||
- ✓ **Enable nix-ld by default:** `programs.nix-ld.enable` is on distro-wide
|
||||
(`modules/nixos/default.nix`), so prebuilt/foreign dynamically-linked
|
||||
binaries run out of the box.
|
||||
- **Hyprland border colors off for some themes:** the active/inactive border
|
||||
colors don't match the legacy branch for several themes — audit
|
||||
`col.active_border`/`col.inactive_border` generation in
|
||||
`modules/home/hyprland.nix` against legacy.
|
||||
- **Waybar shows non-existent workspaces:** in summer-night/summer-day the
|
||||
bar renders every workspace icon up-front via `persistent-workspaces` /
|
||||
`all-outputs` in `themes/summer-{day,night}/waybar.jsonc`. Restore the
|
||||
legacy behaviour (only show workspaces that exist) here and across the
|
||||
other themes.
|
||||
- ✓ **Hyprland border colors off for some themes:** the cause was v1
|
||||
forcing an `accent→accentAlt` gradient on every theme; legacy used a
|
||||
*solid* border (accent for nord/retro-82/lumon, the text tone for
|
||||
kanagawa/summer-day/summer-night). Added a palette-resolved `border`
|
||||
field (`{active, inactive}`) to the theme schema (`theme.nix`), consumed
|
||||
solid in `hyprland.nix`, and declared it in every preset so a switch
|
||||
always replaces it. All six identity themes now match legacy exactly.
|
||||
- ✓ **Waybar shows non-existent workspaces:** the v1 summer port "fixed"
|
||||
legacy's deprecated `persistent_workspaces` (underscore — silently
|
||||
ignored by current Waybar, so legacy only ever showed existing
|
||||
workspaces) into the modern `persistent-workspaces` (hyphen), which
|
||||
Waybar honours → all 10 rendered as phantoms. Dropped the block from
|
||||
`themes/summer-{day,night}/waybar.jsonc`; the other themes use the
|
||||
generated `waybar.nix`, which never had it, so they already match.
|
||||
|
||||
@@ -65,8 +65,10 @@ in
|
||||
gaps_in = t.ui.gapsIn;
|
||||
gaps_out = t.ui.gapsOut;
|
||||
border_size = t.ui.borderSize;
|
||||
"col.active_border" = "${rgb c.accent} ${rgb c.accentAlt} 45deg";
|
||||
"col.inactive_border" = rgb c.overlay;
|
||||
# Solid borders from theme.border (per-theme, palette-resolved) —
|
||||
# matches the legacy identity themes, which never used a gradient.
|
||||
"col.active_border" = rgb t.border.active;
|
||||
"col.inactive_border" = rgb t.border.inactive;
|
||||
layout = lib.mkDefault "dwindle";
|
||||
resize_on_border = lib.mkDefault true;
|
||||
};
|
||||
|
||||
@@ -33,10 +33,20 @@
|
||||
{ mods = "$mod"; key = "X"; action = "exec, nomarchy-menu power"; desc = "Power menu"; }
|
||||
|
||||
{ mods = "$mod"; key = "N"; action = "exec, swaync-client -t"; desc = "Notification centre"; }
|
||||
{ mods = "$mod CTRL"; key = "V"; action = "exec, nomarchy-menu clipboard"; desc = "Clipboard history"; }
|
||||
# SUPER+? (the "question" keysym already implies Shift on most layouts).
|
||||
{ mods = "$mod"; key = "question"; action = "exec, nomarchy-menu keybinds"; desc = "Keybindings cheatsheet"; }
|
||||
|
||||
# Menu functions — SUPER+CTRL+<mnemonic> jumps straight to a
|
||||
# nomarchy-menu module (all also reachable from the SUPER+M picker).
|
||||
{ mods = "$mod CTRL"; key = "V"; action = "exec, nomarchy-menu clipboard"; desc = "Clipboard history"; }
|
||||
{ mods = "$mod CTRL"; key = "C"; action = "exec, nomarchy-menu calc"; desc = "Calculator"; }
|
||||
{ mods = "$mod CTRL"; key = "W"; action = "exec, nomarchy-menu web"; desc = "Web search"; }
|
||||
{ mods = "$mod CTRL"; key = "F"; action = "exec, nomarchy-menu files"; desc = "File search"; }
|
||||
{ mods = "$mod CTRL"; key = "N"; action = "exec, nomarchy-menu network"; desc = "Network (nmtui)"; }
|
||||
{ mods = "$mod CTRL"; key = "B"; action = "exec, nomarchy-menu bluetooth"; desc = "Bluetooth"; }
|
||||
{ mods = "$mod CTRL"; key = "S"; action = "exec, nomarchy-menu capture"; desc = "Screenshot / capture"; }
|
||||
{ mods = "$mod CTRL"; key = "A"; action = "exec, nomarchy-menu ask"; desc = "Ask Claude"; }
|
||||
|
||||
# Focus
|
||||
{ mods = "$mod"; key = "H"; action = "movefocus, l"; desc = "Focus left"; }
|
||||
{ mods = "$mod"; key = "L"; action = "movefocus, r"; desc = "Focus right"; }
|
||||
|
||||
@@ -56,35 +56,41 @@ in
|
||||
palettes.nomarchy = {
|
||||
inherit (c) base text accent good warn bad subtext;
|
||||
};
|
||||
# Flat prompt — colored text only, no powerline separators or
|
||||
# background fills. Each module emits its own trailing space so
|
||||
# there are no stray gaps when git/duration are absent.
|
||||
format = lib.concatStrings [
|
||||
"[](accent)"
|
||||
"$directory"
|
||||
"$git_branch$git_status"
|
||||
"$git_branch"
|
||||
"$git_status"
|
||||
"$cmd_duration"
|
||||
"$character"
|
||||
];
|
||||
directory = {
|
||||
style = "fg:text bg:accent";
|
||||
format = "[ $path ]($style)";
|
||||
style = "bold accent";
|
||||
format = "[$path]($style) ";
|
||||
truncation_length = 3;
|
||||
truncate_to_repo = true;
|
||||
};
|
||||
git_branch = {
|
||||
style = "fg:base bg:warn";
|
||||
format = "[ $symbol$branch ]($style)";
|
||||
style = "warn";
|
||||
format = "[$symbol$branch]($style) ";
|
||||
symbol = " ";
|
||||
};
|
||||
git_status = {
|
||||
style = "fg:base bg:warn";
|
||||
format = "[$all_status$ahead_behind ]($style)";
|
||||
style = "subtext";
|
||||
# Parenthesised → the segment (and its trailing space) only
|
||||
# render when there's actually a status to show.
|
||||
format = "([$all_status$ahead_behind]($style) )";
|
||||
};
|
||||
character = {
|
||||
success_symbol = "[ ❯](good)";
|
||||
error_symbol = "[ ❯](bad)";
|
||||
success_symbol = "[❯](good)";
|
||||
error_symbol = "[❯](bad)";
|
||||
};
|
||||
cmd_duration = {
|
||||
min_time = 2000;
|
||||
style = "fg:subtext";
|
||||
format = "[ $duration ]($style)";
|
||||
style = "subtext";
|
||||
format = "[ $duration]($style) ";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -47,10 +47,24 @@ let
|
||||
# Icon theme name; "" means "pick by mode" (resolved below). A preset
|
||||
# or the state file can name any theme in the shipped icon package.
|
||||
icons = "";
|
||||
# Window border colors. Values are palette keys (resolved against
|
||||
# `colors` below) or literal #rrggbb. Solid, not a gradient — every
|
||||
# legacy identity theme used a solid border (accent for most, the text
|
||||
# tone for kanagawa/summer-*). Each preset declares its own so a theme
|
||||
# switch always replaces it (deep_merge would otherwise leave it stuck).
|
||||
border = { active = "accent"; inactive = "overlay"; };
|
||||
};
|
||||
|
||||
parsed = lib.recursiveUpdate defaults themeState;
|
||||
|
||||
# A border value is a palette key (look it up in colors) unless it's
|
||||
# already a literal hex; unknown keys fall through to the raw string.
|
||||
resolveColor = v: if lib.hasPrefix "#" v then v else parsed.colors.${v} or v;
|
||||
border = {
|
||||
active = resolveColor parsed.border.active;
|
||||
inactive = resolveColor parsed.border.inactive;
|
||||
};
|
||||
|
||||
# Resolve the icon theme once and expose it on nomarchy.theme so both
|
||||
# the GTK side (stylix.nix) and rofi (rofi.nix) agree. The shipped
|
||||
# package (papirus-icon-theme) carries the Dark/Light pair.
|
||||
@@ -61,7 +75,7 @@ let
|
||||
in
|
||||
{
|
||||
config = {
|
||||
nomarchy.theme = parsed // { inherit iconTheme; };
|
||||
nomarchy.theme = parsed // { inherit iconTheme border; };
|
||||
|
||||
nomarchy.lib = {
|
||||
# "#7aa2f7" -> "rgb(7aa2f7)" (Hyprland color syntax)
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#e0af68",
|
||||
"bad": "#f7768e"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#32344a",
|
||||
"#f7768e",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#df8e1d",
|
||||
"bad": "#d20f39"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#bcc0cc",
|
||||
"#d20f39",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#f9e2af",
|
||||
"bad": "#f38ba8"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#45475a",
|
||||
"#f38ba8",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#E9BB4F",
|
||||
"bad": "#ED5B5A"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#060B1E",
|
||||
"#ED5B5A",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#dbbc7f",
|
||||
"bad": "#e67e80"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#475258",
|
||||
"#e67e80",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#D0A215",
|
||||
"bad": "#D14D41"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#100F0F",
|
||||
"#D14D41",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#d8a657",
|
||||
"bad": "#ea6962"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#3c3836",
|
||||
"#ea6962",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#50f7d4",
|
||||
"bad": "#50f872"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#0B0C16",
|
||||
"#50f872",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#c0a36e",
|
||||
"bad": "#c34043"
|
||||
},
|
||||
"border": {
|
||||
"active": "text",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#090618",
|
||||
"#c34043",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#6fa4c9",
|
||||
"bad": "#4d86b0"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#1b2d40",
|
||||
"#4d86b0",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#b91c1c",
|
||||
"bad": "#D35F5F"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#333333",
|
||||
"#D35F5F",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#b36d43",
|
||||
"bad": "#685742"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#000000",
|
||||
"#685742",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#ebcb8b",
|
||||
"bad": "#bf616a"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#3b4252",
|
||||
"#bf616a",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#459451",
|
||||
"bad": "#FF5345"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#23372B",
|
||||
"#FF5345",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#e97b3c",
|
||||
"bad": "#f85525"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#00172e",
|
||||
"#f85525",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#f9cc6c",
|
||||
"bad": "#fd6883"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#72696a",
|
||||
"#fd6883",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#ea9d34",
|
||||
"bad": "#b4637a"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#f2e9e1",
|
||||
"#b4637a",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#dfa000",
|
||||
"bad": "#f85552"
|
||||
},
|
||||
"border": {
|
||||
"active": "text",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#5c6a72",
|
||||
"#f85552",
|
||||
|
||||
@@ -18,11 +18,7 @@
|
||||
"all-outputs": true,
|
||||
"on-click": "activate",
|
||||
"on-scroll-up": "hyprctl dispatch workspace e+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace e-1",
|
||||
"persistent-workspaces": {
|
||||
"1": [], "2": [], "3": [], "4": [], "5": [],
|
||||
"6": [], "7": [], "8": [], "9": [], "10": []
|
||||
}
|
||||
"on-scroll-down": "hyprctl dispatch workspace e-1"
|
||||
},
|
||||
|
||||
"custom/launcher": {
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#d9bb80",
|
||||
"bad": "#e68183"
|
||||
},
|
||||
"border": {
|
||||
"active": "text",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#3c474d",
|
||||
"#e68183",
|
||||
|
||||
@@ -18,11 +18,7 @@
|
||||
"all-outputs": true,
|
||||
"on-click": "activate",
|
||||
"on-scroll-up": "hyprctl dispatch workspace r+1",
|
||||
"on-scroll-down": "hyprctl dispatch workspace r-1",
|
||||
"persistent-workspaces": {
|
||||
"1": [], "2": [], "3": [], "4": [], "5": [],
|
||||
"6": [], "7": [], "8": [], "9": [], "10": []
|
||||
}
|
||||
"on-scroll-down": "hyprctl dispatch workspace r-1"
|
||||
},
|
||||
|
||||
"custom/nomarchy": {
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#e0af68",
|
||||
"bad": "#f7768e"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#32344a",
|
||||
"#f7768e",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#cecece",
|
||||
"bad": "#a4a4a4"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#0d0d0d",
|
||||
"#a4a4a4",
|
||||
|
||||
@@ -18,6 +18,10 @@
|
||||
"warn": "#4a4a4a",
|
||||
"bad": "#2a2a2a"
|
||||
},
|
||||
"border": {
|
||||
"active": "accent",
|
||||
"inactive": "overlay"
|
||||
},
|
||||
"ansi": [
|
||||
"#ffffff",
|
||||
"#2a2a2a",
|
||||
|
||||
Reference in New Issue
Block a user