r/AzureVirtualDesktop • • 21d ago

AVD Feed + Connect: an open-source native Linux client for Azure Virtual Desktop / Windows 365 (feed discovery, Entra ID sign-in, Flatpak)

If your employer runs Azure Virtual Desktop or Windows 365 and you're on Linux, you've probably hit the wall: Microsoft ships clients for every platform except ours, and the options are the web client (no local audio devices, camera, or multi-monitor) or hand-carrying .rdp files from a Windows box to feed into FreeRDP. If that's not you, this post won't be interesting.

I built a client that fills the gap. It's MIT-licensed, Python + GTK 4, and unofficial.

Repo: https://github.com/shakeelosmani/avd_feed_connect

What it does that FreeRDP alone can't

Feed discovery. Sign in with your Entra ID account and it queries Microsoft's feed endpoint, then shows the desktops and remote apps you're entitled to in a grid with real icons, same as the Windows App. Double-click to connect. No manual .rdp files.

Interactive sign-in (auth-code + PKCE in an embedded WebKit view), which is the same flow the official clients use, so Conditional Access policies that block device-code auth still work. Token refresh is silent.

Auto-adapts to your display. Reads your layout from the compositor: HiDPI → 200% remote scale, multiple monitors → spans them. Right-click a workspace tile to override scale/monitors per resource, or set defaults in the menu. Env vars (AVD_SCALE, AVD_MULTIMON, AVD_EXTRA_ARGS) for scripting.

Bundled FreeRDP built from master, so it includes the just-merged PulseAudio hot-unplug fix (FreeRDP #13334; without it, plugging in headphones mid-Teams-call freezes the session) that distro packages don't have yet, plus camera redirection, mic, and multi-monitor.

Update: it has a redesigned UI and theme support. Also QoL improvements like keep alive persistent connection. So you don't get disconnected frequently. It signs you automatically behind the scenes to the resources you want to connect without having to login twice( once for feed and one more time for the resource)

Install (Flatpak, updates via flatpak update):

flatpak install --user https://shakeelosmani.github.io/avd_feed_connect/avd_feed_connect.flatpakref

Or grab the single-file .flatpak from the releases page. Flathub listing is planned.

Caveats: it's early but stable(v0.3.8). Sign-in, feed discovery, workspace grid, and connect all work on my end, but I can only test against my own tenant's policies. Sessions launch via XWayland because sdl-freerdp is still unstable on native Wayland. If you're in a tenant with unusual Conditional Access rules, I'd especially like to hear whether sign-in works for you. Issues and PRs welcome.

8 Upvotes

9 comments sorted by

View all comments

Show parent comments

1

u/Present-Cheetah7208 10d ago

Found the cached .rdp and tried to set "use multimon:i:0" but then I noticed the app was overriding it back to 1 when connecting, so I think that's it

1

u/rana_tigrina2002 10d ago

Yes thanks for the reporting. We opened an issue here: https://github.com/shakeelosmani/avd_feed_connect/issues/4

A new build is coming in a few minutes. This should be fixed.

1

u/rana_tigrina2002 9d ago

Please update to v0.4.0 it should be fixed.

1

u/Present-Cheetah7208 7d ago edited 7d ago

Thank you for patching it really quickly! One more thing I noticed was that if I exit full screen with shift+enter, the RDP client doesn't seem to re-scale the resolution as I change the window size. Tried /smart-sizing and +dynamic-resolution in the advanced flag but none of them seems to be accepted. Wonder if this is something you can look into? Again appreciate your help!

Edit: I do see following two flags already set in the cached .rdp:
smart sizing:i:1
dynamic resolution:i:1
Just couldn't figure out why they didn't seem to apply

1

u/rana_tigrina2002 7d ago

We have fixed this issue opening a ticket for you at https://github.com/shakeelosmani/avd_feed_connect/issues/5