Initial commit
This commit is contained in:
commit
c5136331b4
16 changed files with 4556 additions and 0 deletions
103
README.md
Normal file
103
README.md
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
# breadmon
|
||||
|
||||
A terminal UI monitor manager for Hyprland. Lets you position, configure, and mirror displays interactively, then apply changes live via `hyprctl`.
|
||||
|
||||
## Requirements
|
||||
|
||||
- Hyprland compositor (the `hyprctl` binary must be on `PATH`)
|
||||
- Rust toolchain (to build from source)
|
||||
|
||||
## Build
|
||||
|
||||
```
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
The binary is written to `target/release/breadmon`.
|
||||
|
||||
If you use the bread ecosystem, `bakery` can install it instead:
|
||||
|
||||
```
|
||||
bread modules install /path/to/breadmon
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
breadmon
|
||||
```
|
||||
|
||||
The TUI opens with four tabs, switchable by number key or mouse click:
|
||||
|
||||
| Key | Tab |
|
||||
|-----|-----|
|
||||
| `1` / F1 | Layout |
|
||||
| `2` / F2 | Config |
|
||||
| `3` / F3 | Mirror |
|
||||
| `4` / F4 | Profiles |
|
||||
|
||||
### Layout
|
||||
|
||||
A scaled canvas showing all connected monitors. The selected monitor is highlighted.
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `hjkl` / arrow keys | Move selected monitor 1 px |
|
||||
| `Shift+hjkl` | Move selected monitor 10 px |
|
||||
| `Tab` / `n` | Cycle to next monitor |
|
||||
| `Shift+Tab` / `p` | Cycle to previous monitor |
|
||||
| `0` | Auto-arrange monitors left-to-right with no gaps |
|
||||
| `[` / `]` | Zoom canvas out / in |
|
||||
| Mouse drag | Drag monitor to reposition |
|
||||
|
||||
Monitors snap to each other's edges when dragged or nudged within 10 px.
|
||||
|
||||
### Config
|
||||
|
||||
Per-monitor settings for the currently selected display.
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `jk` / `Tab` | Move between fields |
|
||||
| `hl` / scroll | Cycle field value |
|
||||
| `,` / `.` | Scale −0.1 / +0.1 |
|
||||
| `[` / `]` | Switch to previous / next monitor |
|
||||
| `Enter` | Commit scale edit and apply |
|
||||
| `Esc` | Discard pending edits |
|
||||
|
||||
Fields: Resolution, Refresh rate, Scale, Transform (rotation/flip), VRR, DPMS, Mirror of.
|
||||
|
||||
The header shows the monitor's PPI and a suggested fractional scale when physical dimensions are available.
|
||||
|
||||
### Mirror
|
||||
|
||||
Finds the best common mode between two monitors and sets one to mirror the other. Use `Tab` to move focus between source and target, `hl` to cycle the selection, `Enter` to confirm.
|
||||
|
||||
### Profiles
|
||||
|
||||
Named snapshots of the current monitor configuration, stored as TOML files.
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `jk` | Navigate profile list |
|
||||
| `Enter` | Load selected profile |
|
||||
| `d d` | Delete selected profile (double-press within 3 s) |
|
||||
| `Tab` | Move focus to name input / save button |
|
||||
|
||||
Profiles are saved to `~/.config/breadmon/profiles/`.
|
||||
|
||||
### Global keys
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `a` | Apply current configuration via `hyprctl` |
|
||||
| `s` | Save current configuration as a profile |
|
||||
| `r` | Refresh monitor list from Hyprland |
|
||||
| `Ctrl+Z` | Undo last change (up to 20 steps) |
|
||||
| `q` / `Ctrl+C` | Quit (prompts once if there are unsaved changes) |
|
||||
|
||||
breadmon also listens on Hyprland's event socket and reloads the monitor list automatically when a display is connected or disconnected.
|
||||
|
||||
## Config
|
||||
|
||||
Profiles are plain TOML files under `~/.config/breadmon/profiles/`. Each file records the monitor name, mode, position, scale, transform, VRR, DPMS, and mirror source. They are created and managed through the Profiles tab; there is no hand-written config file.
|
||||
Loading…
Add table
Add a link
Reference in a new issue