Compare commits
4 Commits
69f7ae9051
...
3f36183021
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3f36183021 | ||
|
|
d9301ad954 | ||
|
|
66f58fa228 | ||
|
|
2c8e0b47f9 |
11
README.md
11
README.md
@@ -272,7 +272,7 @@ close · `SUPER+1..9` workspaces · `Print` region screenshot.
|
||||
`nomarchy-menu` dispatcher: root picker (no args) · `power`
|
||||
(lock/logout/suspend/hibernate/reboot/shutdown, SUPER+X) ·
|
||||
`theme` (SUPER+T) · `clipboard` (cliphist, SUPER+CTRL+V) · `calc`
|
||||
(qalc, copy/chain) · `files` (fd → xdg-open) · `web` (DuckDuckGo).
|
||||
(qalc, copy/chain) · `files` (fd → xdg-open) · `web` (Google).
|
||||
SUPER+D is `rofi -show drun`.
|
||||
- ✓ shipped modules: `network` (nmtui in `$TERMINAL`) · `bluetooth`
|
||||
(blueman-manager) · `capture` (grim/slurp submenu: region/full →
|
||||
@@ -294,6 +294,15 @@ close · `SUPER+1..9` workspaces · `Print` region screenshot.
|
||||
launcher, no second theming pipeline; the dispatcher owns the menu
|
||||
structure, so the renderer stays swappable (we moved fuzzel → rofi 2.0
|
||||
once mainline gained native Wayland, for its richer theming)
|
||||
- **Calculator module rework:** the current `calc` flow
|
||||
(`modules/home/rofi.nix`) is unsatisfying — you commit the expression
|
||||
blind, then the result only appears in the *next* menu's `-mesg` line,
|
||||
and `qalc -t` misparses common phrasings (e.g. `15% of 200` →
|
||||
`rem(15, 1 B)` instead of `30`). Rework toward live results as you type
|
||||
(rofi-calc-style: each keystroke re-evaluates and the answer is the top
|
||||
entry, Enter copies), a more robust qalc invocation, and graceful
|
||||
handling of parse errors. Decide whether to keep the hand-rolled dmenu
|
||||
loop or adopt a dedicated calc mode/plugin.
|
||||
- **Theme parity with legacy:** summer-day/night now carry their legacy
|
||||
bar layouts as `waybar.jsonc` whole-swaps (adapted: dead legacy script
|
||||
modules dropped, Nerd-Fonts-v2 codepoints remapped to FontAwesome/v3,
|
||||
|
||||
@@ -1,13 +1,31 @@
|
||||
# Hyprland — fully driven by config.nomarchy.theme (theme-state.json).
|
||||
# Gaps, borders and colors are baked from the JSON at eval time; theme
|
||||
# changes arrive via `home-manager switch`.
|
||||
{ config, lib, ... }:
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
t = config.nomarchy.theme;
|
||||
c = t.colors;
|
||||
inherit (config.nomarchy.lib) rgb rgba;
|
||||
|
||||
# swayosd 0.2.1's `--input-volume mute-toggle` draws the OSD but never
|
||||
# flips the source mute (verified on hardware: wpctl toggles the state,
|
||||
# swayosd's input-mute path is a no-op — unlike its working output-mute
|
||||
# path). Do the real toggle with wpctl, then show an OSD reflecting the
|
||||
# resulting state via swayosd's --custom-icon/--custom-message.
|
||||
micMute = pkgs.writeShellScript "nomarchy-mic-mute" ''
|
||||
${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_SOURCE@ toggle
|
||||
if ${pkgs.wireplumber}/bin/wpctl get-volume @DEFAULT_SOURCE@ | grep -q MUTED; then
|
||||
${pkgs.swayosd}/bin/swayosd-client \
|
||||
--custom-icon microphone-sensitivity-muted-symbolic \
|
||||
--custom-message "Microphone muted"
|
||||
else
|
||||
${pkgs.swayosd}/bin/swayosd-client \
|
||||
--custom-icon microphone-sensitivity-high-symbolic \
|
||||
--custom-message "Microphone unmuted"
|
||||
fi
|
||||
'';
|
||||
|
||||
# SUPER+1..9 / SUPER+SHIFT+1..9 workspace binds, generated.
|
||||
workspaceBinds = builtins.concatLists (builtins.genList
|
||||
(i:
|
||||
@@ -150,7 +168,8 @@ in
|
||||
|
||||
bindl = [
|
||||
", XF86AudioMute, exec, swayosd-client --output-volume mute-toggle"
|
||||
", XF86AudioMicMute, exec, swayosd-client --input-volume mute-toggle"
|
||||
# swayosd's input mute-toggle is broken on 0.2.1 (see micMute above).
|
||||
", XF86AudioMicMute, exec, ${micMute}"
|
||||
", XF86AudioPlay, exec, playerctl play-pause"
|
||||
", XF86AudioPause, exec, playerctl play-pause"
|
||||
", XF86AudioNext, exec, playerctl next"
|
||||
|
||||
@@ -106,7 +106,7 @@ let
|
||||
web)
|
||||
q=$(rofi -dmenu -p search < /dev/null) || exit 0
|
||||
[ -n "$q" ] || exit 0
|
||||
exec xdg-open "https://duckduckgo.com/?q=$(urlencode "$q")" ;;
|
||||
exec xdg-open "https://www.google.com/search?q=$(urlencode "$q")" ;;
|
||||
|
||||
network)
|
||||
# nmtui in a terminal (NetworkManager is the system network stack).
|
||||
|
||||
@@ -56,8 +56,12 @@ in
|
||||
# Route only audio + subtitles to mediainfo's text metadata;
|
||||
# images/videos keep yazi's native visual thumbnails. Markdown
|
||||
# renders through glow.
|
||||
# Match field is `url` (a path glob) or `mime` — yazi 26.x renamed
|
||||
# the old `name` to `url`, same as the fetchers above. Using `name`
|
||||
# fails the parse ("at least one of 'url' or 'mime'") and yazi falls
|
||||
# back to its presets.
|
||||
prepend_previewers = [
|
||||
{ name = "*.md"; run = "glow"; }
|
||||
{ url = "*.md"; run = "glow"; }
|
||||
{ mime = "audio/*"; run = "mediainfo"; }
|
||||
{ mime = "application/subrip"; run = "mediainfo"; }
|
||||
];
|
||||
|
||||
@@ -50,6 +50,25 @@ in
|
||||
# `nixpkgs.config = lib.mkForce { allowUnfree = false; }`.
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# ── One keyboard layout everywhere, incl. the LUKS prompt ────────
|
||||
# services.xserver.xkb.layout is the single source of truth for the
|
||||
# layout (the installer writes it; downstream sets it in system.nix).
|
||||
# These bridge that one knob through to the encrypted-disk prompt —
|
||||
# without them, setting only xkb.layout moves the graphical session
|
||||
# but leaves the console keymap unset, so the initrd LUKS passphrase
|
||||
# prompt falls back to US:
|
||||
# useXkbConfig the virtual-console keymap follows xkb (TTYs)
|
||||
# earlySetup bakes that keymap into the initrd
|
||||
# systemd initrd loads it before cryptsetup asks for the passphrase
|
||||
# (the legacy scripted initrd cannot; also what
|
||||
# Plymouth needs — defaulted here so it no longer
|
||||
# hinges on the splash being enabled).
|
||||
# All mkDefault, so an explicit console.keyMap or a scripted initrd
|
||||
# still wins.
|
||||
console.useXkbConfig = lib.mkDefault true;
|
||||
console.earlySetup = lib.mkDefault true;
|
||||
boot.initrd.systemd.enable = lib.mkDefault true;
|
||||
|
||||
# ── Wayland session: Hyprland ────────────────────────────────────
|
||||
# Installs the binary, registers the session, wires up
|
||||
# xdg-desktop-portal-hyprland. Configuration is Home Manager's job.
|
||||
|
||||
@@ -80,11 +80,12 @@ let
|
||||
in
|
||||
{
|
||||
config = lib.mkIf cfg.plymouth.enable {
|
||||
# Plymouth wants the systemd initrd (also what applies the keyboard
|
||||
# layout to the LUKS prompt) and a quiet console around it.
|
||||
boot.initrd.systemd.enable = lib.mkDefault true;
|
||||
# The systemd initrd (boot.initrd.systemd.enable) and console.earlySetup
|
||||
# that Plymouth needs are now distro-wide defaults in ./default.nix
|
||||
# (they also carry the keyboard layout to the LUKS prompt), so the
|
||||
# splash no longer has to turn them on. Just keep the console quiet
|
||||
# around the splash.
|
||||
boot.initrd.verbose = lib.mkDefault false;
|
||||
console.earlySetup = lib.mkDefault true;
|
||||
boot.consoleLogLevel = lib.mkDefault 0;
|
||||
|
||||
boot.plymouth = {
|
||||
|
||||
Reference in New Issue
Block a user