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.
|
||||
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`.
|
||||
- `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 = {
|
||||
# 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
|
||||
# Nord chrome theme, which Firefox otherwise leaves disabled.
|
||||
# The functional extensions come through policy and are unaffected.
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
let
|
||||
cfg = config.modules.desktop.hyprland;
|
||||
user = config.user.name;
|
||||
cursor = config.stylix.cursor;
|
||||
|
||||
# Numbered-workspace switch and move for 1..9, the operator's i3 muscle memory.
|
||||
workspaceBinds = lib.concatMap (n: [
|
||||
@@ -62,6 +63,19 @@ in
|
||||
"$mod" = "SUPER";
|
||||
"$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 = {
|
||||
kb_layout = "us";
|
||||
# Caps is a second Escape.
|
||||
|
||||
@@ -34,13 +34,26 @@ in
|
||||
|
||||
cursor = {
|
||||
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";
|
||||
size = 24;
|
||||
};
|
||||
|
||||
fonts.monospace = {
|
||||
package = pkgs.jetbrains-mono;
|
||||
name = "JetBrains Mono";
|
||||
fonts = {
|
||||
monospace = {
|
||||
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 = {
|
||||
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
|
||||
# restore both.
|
||||
|
||||
Reference in New Issue
Block a user