Compare commits
4 Commits
f967bc47bc
...
d2fbf78927
| Author | SHA1 | Date | |
|---|---|---|---|
| d2fbf78927 | |||
| eca87c74a6 | |||
| bb9a92b25b | |||
| 68e0aafbbb |
@@ -109,3 +109,8 @@ The domain model (Host, Module, Skeleton, Auto-loader, Enable convention, overla
|
|||||||
To actually remove a builtin, list it explicitly with `<engine>.metaData.hidden = true` — an engine entry carrying only `metaData` is treated as a builtin rather than a custom engine.
|
To actually remove a builtin, list it explicitly with `<engine>.metaData.hidden = true` — an engine entry carrying only `metaData` is treated as a builtin rather than a custom engine.
|
||||||
Engines are referenced by their current id, which the module maps from the old display names, so the default is `default = "ddg"`, not `"DuckDuckGo"` (the latter only warns and migrates).
|
Engines are referenced by their current id, which the module maps from the old display names, so the default is `default = "ddg"`, not `"DuckDuckGo"` (the latter only warns and migrates).
|
||||||
Prove the result by decoding the built file: `mozlz4a -d <search.json.mozlz4>` shows the `_metaData.hidden` flags and `defaultEngineId`.
|
Prove the result by decoding the built file: `mozlz4a -d <search.json.mozlz4>` shows the `_metaData.hidden` flags and `defaultEngineId`.
|
||||||
|
- `home.sessionVariables` do **not** reach the Hyprland session, so anything the compositor reads from its environment (cursor theme, toolkit hints) has to be declared elsewhere.
|
||||||
|
home-manager writes those variables to `hm-session-vars.sh`, which only a login shell sources; UWSM starts the graphical session without it, so the compositor's environment never gains them.
|
||||||
|
This is why a Stylix cursor (`XCURSOR_THEME`/`XCURSOR_SIZE` via `home.pointerCursor`) silently fails to apply and Hyprland draws its built-in cursor: the variables exist in `sessionVariables` but not in the running session (`tr '\0' '\n' < /proc/$(pgrep -x Hyprland)/environ` shows them absent).
|
||||||
|
The fix is Hyprland's own `env = KEY,VALUE` directive in `settings`, read at compositor startup regardless of the shell profile; `modules/desktop/hyprland/hyprland.nix` sets the cursor that way, sourced from `config.stylix.cursor`.
|
||||||
|
Bibata ships XCursor format only (no `hyprcursor/` dir), which Hyprland renders through its XCursor fallback, so both `XCURSOR_*` and `HYPRCURSOR_*` naming the same theme are safe.
|
||||||
|
|||||||
@@ -65,6 +65,13 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
|
# Scale the UI and page by a fixed factor. Left at auto (-1),
|
||||||
|
# Firefox reads the panel's 1.5x and inflates its whole chrome on
|
||||||
|
# this display while point-sized apps stay put; a shade under that
|
||||||
|
# brings it into line without dropping to true 1:1, which reads too
|
||||||
|
# small at this DPI.
|
||||||
|
"layout.css.devPixelsPerPx" = "1.25";
|
||||||
|
|
||||||
# Auto-enable the sideloaded Firefox Color add-on that carries the
|
# Auto-enable the sideloaded Firefox Color add-on that carries the
|
||||||
# Nord chrome theme, which Firefox otherwise leaves disabled.
|
# Nord chrome theme, which Firefox otherwise leaves disabled.
|
||||||
# The functional extensions come through policy and are unaffected.
|
# The functional extensions come through policy and are unaffected.
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
let
|
let
|
||||||
cfg = config.modules.desktop.hyprland;
|
cfg = config.modules.desktop.hyprland;
|
||||||
user = config.user.name;
|
user = config.user.name;
|
||||||
|
cursor = config.stylix.cursor;
|
||||||
|
|
||||||
# Numbered-workspace switch and move for 1..9, the operator's i3 muscle memory.
|
# Numbered-workspace switch and move for 1..9, the operator's i3 muscle memory.
|
||||||
workspaceBinds = lib.concatMap (n: [
|
workspaceBinds = lib.concatMap (n: [
|
||||||
@@ -62,6 +63,19 @@ in
|
|||||||
"$mod" = "SUPER";
|
"$mod" = "SUPER";
|
||||||
"$terminal" = "alacritty";
|
"$terminal" = "alacritty";
|
||||||
|
|
||||||
|
# Hand the cursor theme to the compositor directly. UWSM launches the
|
||||||
|
# session without the shell profile that carries the pointer-cursor
|
||||||
|
# variables, so without this Hyprland never sees a theme and falls back
|
||||||
|
# to its built-in cursor. Bibata ships XCursor only; the hyprcursor
|
||||||
|
# variables name the same theme, which Hyprland resolves through its
|
||||||
|
# XCursor fallback.
|
||||||
|
env = lib.optionals (cursor != null) [
|
||||||
|
"XCURSOR_THEME,${cursor.name}"
|
||||||
|
"XCURSOR_SIZE,${toString cursor.size}"
|
||||||
|
"HYPRCURSOR_THEME,${cursor.name}"
|
||||||
|
"HYPRCURSOR_SIZE,${toString cursor.size}"
|
||||||
|
];
|
||||||
|
|
||||||
input = {
|
input = {
|
||||||
kb_layout = "us";
|
kb_layout = "us";
|
||||||
# Caps is a second Escape.
|
# Caps is a second Escape.
|
||||||
|
|||||||
@@ -34,13 +34,26 @@ in
|
|||||||
|
|
||||||
cursor = {
|
cursor = {
|
||||||
package = pkgs.bibata-cursors;
|
package = pkgs.bibata-cursors;
|
||||||
|
# Solid white with a dark outline, so it stays easy to spot against the
|
||||||
|
# dark Nord wallpaper.
|
||||||
name = "Bibata-Modern-Ice";
|
name = "Bibata-Modern-Ice";
|
||||||
size = 24;
|
size = 24;
|
||||||
};
|
};
|
||||||
|
|
||||||
fonts.monospace = {
|
fonts = {
|
||||||
package = pkgs.jetbrains-mono;
|
monospace = {
|
||||||
name = "JetBrains Mono";
|
package = pkgs.jetbrains-mono;
|
||||||
|
name = "JetBrains Mono";
|
||||||
|
};
|
||||||
|
|
||||||
|
# A step below Stylix's defaults (applications 12, desktop/popups 10,
|
||||||
|
# terminal 12), which read oversized on this display.
|
||||||
|
sizes = {
|
||||||
|
applications = 10;
|
||||||
|
desktop = 9;
|
||||||
|
popups = 9;
|
||||||
|
terminal = 10;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -84,7 +84,18 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
functions = {
|
functions = {
|
||||||
fish_greeting = "fastfetch";
|
# Pick the logo that fits the terminal so the greeting never wraps:
|
||||||
|
# the full logo needs about 118 columns beside the info block, the
|
||||||
|
# compact one about 89, and the info block alone about 71.
|
||||||
|
fish_greeting = ''
|
||||||
|
if test "$COLUMNS" -ge 118
|
||||||
|
fastfetch
|
||||||
|
else if test "$COLUMNS" -ge 89
|
||||||
|
fastfetch --logo NixOS_small
|
||||||
|
else
|
||||||
|
fastfetch --logo none
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
|
||||||
# vi insert mode omits the emacs ctrl-f and ctrl-r bindings, so
|
# vi insert mode omits the emacs ctrl-f and ctrl-r bindings, so
|
||||||
# restore both.
|
# restore both.
|
||||||
|
|||||||
Reference in New Issue
Block a user