Fresh installs previously started with isolation off until someone noticed and flipped the switch by hand, since the toggle read raw file-existence with no persisted intent behind it. Now a small state file (colocated in Omarchy's toggles dir, which is guaranteed to exist, avoiding an mkdir-p race a plugin-private directory would hit) records the user's actual choice, defaulting to isolated-on the first time the widget ever loads. Every poll reconciles the toggle-flag file against that intent and against the current isolated-workspace setting, so external drift (or a workspace-number change) gets corrected within one poll interval instead of silently sticking. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MLfSWFEMyY85ZDWEYicdaF
91 lines
3.9 KiB
Markdown
91 lines
3.9 KiB
Markdown
# hypr-rdp Control
|
|
|
|
Bar widget for [hypr-rdp](https://github.com/MuNeNICK/hypr-rdp) — start/stop
|
|
it, keep its headless monitor from colliding with your normal workspaces,
|
|
and manage its credentials, all from the Omarchy bar.
|
|
|
|
## Requirements
|
|
|
|
- [Omarchy](https://omarchy.org) on Hyprland
|
|
- [hypr-rdp](https://github.com/MuNeNICK/hypr-rdp) itself — the widget can
|
|
install it for you (see below), or you can install it first via
|
|
`yay -S hypr-rdp-git` / `omarchy pkg aur add hypr-rdp-git`
|
|
|
|
## Install
|
|
|
|
1. Copy (or clone) this repository into
|
|
`~/.config/omarchy/plugins/dotjuice.hypr-rdp/`
|
|
2. `omarchy plugin enable dotjuice.hypr-rdp --section right`
|
|
(or any bar section you prefer)
|
|
|
|
The widget appears immediately; no restart of Hyprland or the shell needed.
|
|
|
|
## Remove
|
|
|
|
```
|
|
omarchy plugin disable dotjuice.hypr-rdp
|
|
omarchy plugin remove dotjuice.hypr-rdp
|
|
```
|
|
|
|
Removing the plugin does **not** touch `hypr-rdp` itself, its
|
|
`systemd --user` service, or its config — it only removes the bar widget.
|
|
If you also want those gone:
|
|
|
|
```
|
|
systemctl --user disable --now hypr-rdp.service
|
|
rm ~/.config/systemd/user/hypr-rdp.service
|
|
rm -f ~/.local/state/omarchy/toggles/hypr/hypr-rdp-isolation.lua
|
|
hyprctl reload
|
|
omarchy pkg drop hypr-rdp-git # or hypr-rdp
|
|
```
|
|
|
|
## What it does
|
|
|
|
- **Install**: if `hypr-rdp` isn't on `PATH`, offers a button that opens a
|
|
terminal running `omarchy pkg aur add hypr-rdp-git` (kept interactive
|
|
since AUR builds need a `sudo`/`makepkg` prompt — this plugin never runs
|
|
privileged commands itself).
|
|
- **Service**: start/stop via a `systemd --user` unit
|
|
(`~/.config/systemd/user/hypr-rdp.service`). Created automatically on
|
|
first start if it doesn't already exist; never overwritten after that.
|
|
- **Monitor isolation**: **on by default**, no setup needed. It works by
|
|
creating `~/.local/state/omarchy/toggles/hypr/hypr-rdp-isolation.lua`
|
|
(Omarchy's standard toggle-flag convention — the same one `omarchy
|
|
toggle window-gaps` uses), which pins an isolated workspace (default 11)
|
|
to the `hypr-rdp` headless output via `hl.workspace_rule`, then runs
|
|
`hyprctl reload` + `hyprctl configerrors`. On: Hyprland's normal
|
|
workspace auto-assignment never reuses that workspace, so starting an
|
|
RDP session can't silently steal one of your visible workspaces. Off:
|
|
the headless output behaves like a normal display. Workspace-to-monitor
|
|
binding is config-file-only in Hyprland (no live `hyprctl keyword` for
|
|
it), so a flip takes effect the next time hypr-rdp (re)starts, not
|
|
mid-session. Your choice is remembered in a small state file next to the
|
|
toggle flag, and every poll cycle re-applies it — so if the toggle file
|
|
is ever deleted or edited by something else, the widget puts it back
|
|
within a few seconds rather than silently losing the setting.
|
|
**If you already have your own `hl.workspace_rule` pinning a workspace to
|
|
the `hypr-rdp` output in `monitors.lua` or elsewhere, remove it first** —
|
|
a leftover static rule will keep isolation on regardless of what the
|
|
widget's toggle shows.
|
|
- **Workspace view**: read-only list of windows on the isolated workspace,
|
|
plus a Peek/Back button that temporarily swaps it onto whichever monitor
|
|
you're on (`hyprctl dispatch workspace <n>`) and back.
|
|
- **Credentials**: reads/writes `bind`, `username`, `password` in
|
|
`~/.config/hypr-rdp/config.toml`, leaving every other key and comment in
|
|
that file untouched. hypr-rdp doesn't hot-reload its config, so a saved
|
|
credential change needs a service restart to take effect.
|
|
|
|
Settings (poll interval, isolated workspace number) are in the plugin's
|
|
bar-widget settings panel, backed by `manifest.json`'s schema.
|
|
|
|
## Permissions / capabilities
|
|
|
|
This plugin never calls `sudo` or `pkexec` itself. The one privileged path
|
|
is the optional Install button, which opens a visible terminal running
|
|
`omarchy pkg aur add hypr-rdp-git` — you see and approve any password
|
|
prompt yourself, the same as running that command by hand.
|
|
|
|
## License
|
|
|
|
MIT — see [LICENSE](LICENSE).
|