NoSignal-OS/os updates/monitor-control/README.md
28allday 19fd794b6b NoSignal — fully-offline Arch → Hyprland desktop installer
Single-script builder (nosignal.sh) that turns a stock Arch Linux ISO into a
fully-offline installer for a themed Hyprland + caelestia (Quickshell) desktop:
matching SDDM greeter, Btrfs/Limine bootable snapshots, chwd-style GPU
detection, and a curated "os updates" layer (keybind cheatsheet, settings
panels, system polish, on-box management skill). See README.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 11:03:10 +01:00

53 lines
2.4 KiB
Markdown
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NoSignal — monitor control with hyprmoncfg
Adds [hyprmoncfg](https://github.com/crmne/hyprmoncfg) (AUR `hyprmoncfg`,
v1.7.0 at time of writing, MIT) — a terminal-first monitor configurator and
auto-switching daemon for Hyprland.
## What a user gets
- **`Super+Ctrl+H`** (Omarchy's "hardware" slot) → spatial layout editor in a
floating terminal: drag monitors into place, set mode/scale/VRR/mirror/
transform, press `s` to save a named profile (`desk`, `tv`, …).
- **`hyprmoncfg apply <profile>`** from any terminal.
- **`hyprmoncfgd`** (systemd user service) — applies the right profile
automatically on monitor hotplug and laptop lid open/close. Profiles match
on monitor make/model/serial, not unstable connector names.
- Safe apply: reloads Hyprland, verifies, reverts unless confirmed.
## Why it fits NoSignal
hyprmoncfg writes `~/.config/hypr/monitors.conf` and **refuses to write the
file unless Hyprland actually sources it** — and the NoSignal base already
sources exactly that file from `hypr-user.conf` (it's the same file
`nwg-displays` wrote). So the include chain is already in place.
**hyprmoncfg replaces nwg-displays**
it covers layout *and* workspace assignment (nwg-displays' two jobs) and adds
profiles + the daemon; a single writer of `monitors.conf` avoids the two tools
fighting over the file.
## Files
| File | Role |
|------|------|
| `install-monitor-control.sh` | idempotent installer — installs `hyprmoncfg` (bootstraps yay if needed), verifies the `monitors.conf` source line, appends the bind, enables `hyprmoncfgd` |
| `hyprland-monitor-control.conf` | `Super+Ctrl+H` bind → appended to `hypr-user.conf` (reuses the base's `TUI.float` window rule: floating 1100×700) |
```sh
sh ~/Downloads/monitor-control/install-monitor-control.sh
```
Also wired into `nosignal-update` as migration `1781233200-monitor-control.sh`.
## Packaging
- Add `hyprmoncfg` to the package list (AUR).
- Enable the user service in the skeleton:
`systemctl --user enable hyprmoncfgd` (or a presets entry).
- The bind lands via `hypr-user.conf` like the other NoSignal binds.
- **Remove `nwg-displays` from the package list** (superseded — see above),
but keep the empty pre-created `monitors.conf` / `workspaces.conf` and
their `source =` lines.
- Note: the daemon scores **every** profile in
`~/.config/hyprmoncfg/profiles/` — don't pre-seed junk profiles in the image.