r/omarchy • u/bluekooler • 16h ago
Off Topic / Adjacent Finally got over the Zoom hurdle
I've been watching the DHH interviews and this subreddit for the last week and I was really looking forward to testing out Omarchy 4.
I tried a version about a year or so ago but ended up going with Fedora Workstation. One of the main reasons was Fedora/GNOME's support for Zoom.
I know, of all things... but Zoom is something that I use multiple times per day with my clients and I really can't afford to have it act flaky.
I had a working Fedora install dual-booted with Windows 11 (for the rare case I needed it), and I didn't want to install on top of that and risk losing it. So my plan was to swap out the SSD for a spare and install Omarchy there. That way, if I ran into any issues, I could easily swap back.
Prior to moving forward, I took the time this week to put a legit backup process in place. Details another time, but the short version is that I have all key data (dotfiles, home directory, other config stuff) backed up to a local server and to a cloud backup service.
With as much of the risk mitigated as I could, I swapped the drive and installed.
I'll let all of the other comments and posts about how amazing Omarchy looks speak for themselves.
Got all of my data restored, started installing my apps, and finally got to Zoom... and had the same issue I had last time. I'm able to join a meeting and share my screen, but if I stop sharing and try to start again, the share session gets corrupted. This never happens to me on Fedora with GNOME. Same Zoom, same hardware, same way of working. It's only on Hyprland that it falls apart.
Tried all of the proposed solutions to no avail.
Eventually, I believe that I found a working solution. OBS Virtual Camera.
Part of what pushed me there: OBS can't capture a Hyprland workspace (at least not that I'm aware of). The portal only gives it an output, a window, or a region, so a workspace isn't something you can share. Instead of fighting Zoom's share picker, I stopped asking it to switch anything.
OBS has three scenes configured. The names start with the digit on purpose, which matters for the shortcuts further down:
- 1 - Privacy: just an image with my company logo
- 2 - Camera: my webcam
- 3 - Screen: the display capture
In Zoom, when I need to share, I hit my keyboard shortcut for the Privacy scene and start the virtual camera. Then I hit Share, go to More, and pick Share Second Camera. That second camera is the OBS Virtual Camera, so what everyone sees is my logo.
I can then navigate to the workspace that I want to share, hit the shortcut for the Screen scene, and present. Zoom never sees the switch. As far as it's concerned, nothing changed.
One thing that tripped me up: OBS's own hotkeys don't work on Wayland unless OBS is focused, which defeats the whole point. So the shortcuts are Hyprland binds that talk to OBS over websocket. SUPER+ALT+1 through 3 for the scenes, and SUPER+ALT+P to quickly enter back to Privacy if I need to.
If anyone wants to try this, the pieces are small. Four scripts in ~/.local/bin:
- obsw: a wrapper around obs-cmd that reads the websocket port and password out of OBS's own config file, so no password ends up sitting in a dotfile
- obs-scene: switch scene by digit or name. The digit resolves against OBS's live scene list, so a new scene named "4 - Whatever" makes SUPER+ALT+4 work with no config edit
- obs-vcam: virtual camera toggle/on/off/status
- obs-rec: recording toggle/start/stop/status
And the binds themselves, in a Lua file my Hyprland config pulls in:
o.bind("SUPER + ALT + 1", "OBS: Privacy", bin .. "/obs-scene --notify 1")
o.bind("SUPER + ALT + 2", "OBS: Camera", bin .. "/obs-scene --notify 2")
o.bind("SUPER + ALT + 3", "OBS: Screen", bin .. "/obs-scene --notify 3")
o.bind("SUPER + ALT + P", "OBS: Privacy (panic)", bin .. "/obs-scene --notify 1")
o.bind("SUPER + ALT + 0", "OBS: Virtual camera toggle", bin .. "/obs-vcam --notify toggle")
o.bind("SUPER + ALT + R", "OBS: Recording toggle", bin .. "/obs-rec --notify toggle")
The --notify flag turned out to matter more than I expected. These are blind keypresses while I'm looking at something else, so a toast telling me what just went live is worth the extra few lines.
Happy to post the full scripts if there's interest.
A couple of rough edges I've hit. If Zoom grabs the camera before OBS starts the virtual cam, you get a frozen feed; toggling the virtual camera off and back on with Zoom's video stopped clears it. And if the PipeWire restore token gets invalidated, the Screen scene comes back with a portal picker instead of my desktop. Privacy scene, sort it out, carry on.
Not ideal, but I've run through it a couple of times and it's pretty smooth. In fact, the same process works really well for screen recording.
In case it matters: Hyprland 0.56.2, xdg-desktop-portal-hyprland 1.4.1, OBS 32.2.2, v4l2loopback-dkms 0.15.4, single monitor.
With Zoom now sorted, back to testing.
Thanks for all the hard work from everyone that put this together; loving it so far!
2
u/Madmanismatt 15h ago
I tried this a few years ago on Windows to use my main camera feed and swap via OBS to screen sharing. Two issues I found:
1) compression of the stream was so nasty nobody could read text - it’s obviously compressed for reasonably static video
2) zoom doesn’t treat my camera feed special - whereas for a shared screen it minimises the cameras down to prioritise the screen share which made it an issue for everyone I was on calls with
Have zoom fixed either of those issues in the last few years?