fix(ui): #139 sheets size themselves; #141 waybar clicks stop reading the env
Some checks failed
Check / eval (push) Has been cancelled
Some checks failed
Check / eval (push) Has been cancelled
#139 — calcurse/doctor floated full-screen. Two faults stacked, which is why it looked like the float rules were dead: 1. Hyprland 0.55.4 silently ignores percentage `size` rules. Matrix on hardware (both orders, kitty memory off): `size 60% 65%` never applies, `size 1536 936` applies either way, configerrors empty both times. Rule order was a red herring. 2. Kitty defaults to remember_window_size=yes and replays the last OS window's size into every float — so after a tiled terminal, a sheet opens maximized. This is the Ghostty regression: Ghostty had no such memory, so fault 1 stayed invisible until #95. Fix: remember_window_size=no (floats must be deterministic) and the sheets ask for their own size — term-sheet.nix reads the focused monitor and hands kitty the px, because px in a rule cannot mean "a fraction of *this* screen" and one pair cannot serve 2560x1440 and the 1366x768 Acer (#131). Those windows keep float/center and deliberately carry no size rule. #141 — the updates click did nothing: whole-swaps hand-wrote `sh -c '$TERMINAL …'` and Waybar has no TERMINAL (home.sessionVariables → login shells only; the bar is spawned by Hyprland). Fixed at the root: `nomarchy-updates upgrade-window` opens its own window, so all five call sites name one env-free command and a theme file stops having an opinion about terminals. checks.waybar-swap-env guards the class. Bernardo asked mid-task for the update window to float — it is now the third caller of the sheet helper (com.nomarchy.updates, 45%x50%). V3 on the dev box: calendar 1536x936, doctor 1408x1008, updates 1152x720 — exactly the intended fractions, floating and centred; #141 driven under `env -i` with no TERMINAL, matching Waybar's real environment; the guard proven by reintroducing the bug. Acer V3 queued. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
|
||||
let
|
||||
cfg = config.nomarchy.updates;
|
||||
termSheet = import ./term-sheet.nix { inherit pkgs; };
|
||||
|
||||
nomarchy-updates = pkgs.writeShellScriptBin "nomarchy-updates" ''
|
||||
set -u
|
||||
@@ -113,7 +114,23 @@ let
|
||||
fi
|
||||
"$0" check
|
||||
echo "Done — press enter."; read -r _ || true ;;
|
||||
*) echo "usage: nomarchy-updates [check|status|upgrade]" >&2; exit 64 ;;
|
||||
upgrade-window)
|
||||
# The Waybar click target. `upgrade` prompts, so it needs a terminal —
|
||||
# and the bar has none: it is spawned by Hyprland, whose environment has
|
||||
# no $TERMINAL (that is a home.sessionVariables entry, so only login
|
||||
# shells see it). A whole-swap's hand-written on-click that reached for
|
||||
# $TERMINAL expanded to nothing and the click silently did nothing
|
||||
# (#141). Opening our own window is the fix that cannot rot: every
|
||||
# caller — generated module and whole-swap alike — names one env-free
|
||||
# command, and a theme file stops having an opinion about terminals.
|
||||
#
|
||||
# A classed sheet like the calendar and doctor: a short y/N flow has no
|
||||
# business taking the whole screen, and the class is what hyprland.nix
|
||||
# floats it by. Smaller than either (45%x50%) — this is a prompt, not a
|
||||
# document.
|
||||
exec ${termSheet}/bin/nomarchy-term-sheet com.nomarchy.updates 45 50 \
|
||||
"$0" upgrade ;;
|
||||
*) echo "usage: nomarchy-updates [check|status|upgrade|upgrade-window]" >&2; exit 64 ;;
|
||||
esac
|
||||
'';
|
||||
in
|
||||
|
||||
Reference in New Issue
Block a user