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
3.9 KiB
hypr-rdp Control
Bar widget for 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 on Hyprland
- 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
- Copy (or clone) this repository into
~/.config/omarchy/plugins/dotjuice.hypr-rdp/ 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-rdpisn't onPATH, offers a button that opens a terminal runningomarchy pkg aur add hypr-rdp-git(kept interactive since AUR builds need asudo/makepkgprompt — this plugin never runs privileged commands itself). - Service: start/stop via a
systemd --userunit (~/.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 oneomarchy toggle window-gapsuses), which pins an isolated workspace (default 11) to thehypr-rdpheadless output viahl.workspace_rule, then runshyprctl 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 livehyprctl keywordfor 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 ownhl.workspace_rulepinning a workspace to thehypr-rdpoutput inmonitors.luaor 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,passwordin~/.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.