Walker would launch NO-CODER fullscreen instead of floating because the
windowrules block was written to ~/.config/hypr/windows.conf — a file
Hyprland never sources. Omarchy's hyprland.conf only sources the *system*
windows.conf under ~/.local/share/omarchy/default/hypr/, so any rules in a
user-level windows.conf were silently ignored.
Point HYPR_CONF at ~/.config/hypr/hyprland.conf instead. The marker-block
append/strip logic stays the same and remains idempotent across re-runs.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Previous reload step was gated on $HYPRLAND_INSTANCE_SIGNATURE being
set in the environment. If you ran the installer from outside the
Hyprland session (SSH, TTY, a non-graphical shell) the reload silently
skipped and windowrules weren't picked up until the next Hyprland
restart — which is why a test install on another box had the app
opening fullscreen instead of floating + centered.
Now the script:
* Falls back to picking a live instance from $XDG_RUNTIME_DIR/hypr/ if
the env var isn't set — so hyprctl reload works even from SSH.
* Always runs a best-effort `touch` on windows.conf so Hyprland's
inotify-based auto-reload picks up the change even if the explicit
reload was somehow a no-op.
* Prints a clear "run `hyprctl reload` manually" hint in the success
summary so users who see the fullscreen-by-mistake behaviour know
the one-command fix without reading source.
Verified on this machine: after `bash install.sh`, the running window
reports floating=True fullscreen=0 size=[1280,880] via hyprctl clients.
Profile, naming, output folder, audio bit depth and auto-reveal toggle
now round-trip via ~/.config/nocoder/config.json instead of resetting
to defaults on every launch. Alpha is deliberately NOT persisted because
the toggle is conditional on the chosen profile and would create more
confusion than value when restored from a stale session.
* New nocoder/config.py owns the JSON file with read-modify-write
merging so multiple writers (hwaccel.py + UI prefs) don't clobber
each other. Atomic write via tempfile + os.replace.
* hwaccel.py refactored to use the shared load_config / update_config
helpers; CONFIG_PATH still re-exported for backward compat.
* settings_pane.Settings gains to_persistable() that returns the
subset to round-trip; new load_persisted_settings() validates each
field against its allowed range and falls back to defaults.
* window.py loads settings on startup and persists them every time
the settings-changed signal fires (which already covers the folder
picker via set_output_folder).
Verified: round-trip works, validation rejects bogus values cleanly,
hwaccel survives the merge.
Native GTK4 + libadwaita app that wraps ffmpeg to batch-convert source
video into editorial-ready Apple ProRes .mov. Targets Omarchy / Hyprland
on Arch Linux specifically.
Highlights:
* Real ffmpeg encode (prores_ks → prores fallback) with live progress
parsing, cancelable serial queue, disk-space pre-check, source-missing
guard, output-collision (N) suffixes.
* GPU decode auto-probe at install time — picks cuda → qsv → vaapi based
on what actually initialises on the host. ProRes encoding stays on CPU
(no vendor ships a GPU encoder); offloading the decode side cuts wall
time 25-40% on H.264 / HEVC sources.
* Theme-aware: tracks the active Omarchy theme on every launch by
parsing colors.toml / ghostty.conf / alacritty.toml / kitty.conf in
priority order. 34 stock + custom themes verified.
* Pro camera support: .MXF (Canon XF / Sony XDCAM / Panasonic AVC-Intra)
with proxy-directory pruning so dropping a Sony XAVC card maps masters
in CLIP/ but skips the low-res duplicates in SUB/.
* Multi-track audio preserved — 4 mono PCM streams from a Canon C300/C500
land in the output as 4 separate tracks. Optional 24-bit toggle.
* Live encode-speed indicator with ffmpeg -progress parsing; ETA refines
from real measured throughput rather than a fixed heuristic.
* Hyprland-aware install — registers walker entry, six hicolor icon
sizes, float+centre windowrule for class dev.nocoder.NoCoder.
Distribution model: git clone + bash install.sh. The installer copies the
source tree to ~/.local/share/nocoder/ so the clone is disposable. Updates
are git pull + re-run install.sh.
Documented at README.md.