# 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/jandieman.hypr-rdp/` 2. `omarchy plugin enable jandieman.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 jandieman.hypr-rdp omarchy plugin remove jandieman.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**: toggling this creates or removes `~/.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. **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 `) 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).