Zoom doesn’t support screen sharing on Linux unless you’re using GNOME or X11.
Also, Zoom only runs via XWayland (a compatibility layer for older applications). XWayland doesn’t really support desktop scaling, which is why it looks so blurry:
Whomever added this message clearly never used Linux. “please use GNOME or x11 instead” is bullshit advice; changing one of the lower-level operating system components on which everything else runs is a recipe for disaster.
Downgrading to x11 is a non-trivial matter; the window manager needs to be changed too, then all the desktop settings, and finally, all the desktop applications need to be tweaked. Honestly, I wouldn’t even know where to start.
Even if I did go through that huge undertaking, I’d end up with a system that supports Zoom’s screen sharing, but wouldn’t properly support my hardware (e.g.: HiDPI displays) or many modern applications.
Fortunately, there’s a workaround; just pipe the current screen into a virtual webcam, and then share you video using that device instead of your real webcam. It’s hack, but a hack is the best option there is when you have to use shit software like Zoom.
If you’re not using sway, you’ll need to find something to record your desktop
(e.g.: an alternative to
# Install the v4l2 loopback driver sudo pacman -S v4l2loopback-dkms # Load the kernel module sudo modprobe v4l2loopback # Finally, pipe the screen output into the virtual webcam: wf-recorder --muxer=v4l2 --codec=rawvideo --pixel-format=yuv420p --file=/dev/video2
Now jump back to zoom, and change the video output to the “Dummy video device”.
- Remember to turn off video mirroring, or everything will be mirrored, which you generally don’t want when sharing the screen.
- In zoom, if you set the camera to Original Ratio, your full screen will be shared, but the quality will be really crap (it’s unlikely the other party will be able to read anything).
- If you set it to 16:9, the sides of your screen will be cropped, but the quality should be readable. Your pick. 😞
- Remember to kill
wf-recorderonce you’re done or your screen will be shared next time you join a call!
“Enable HD” does not seem to change anything. Probably because the codec is 420p. Sadly, other codecs don’t seem to work, I’ve no idea why better quality codecs won’t work, I think this is a limitation of ffmpeg, but it might be wf-recorder, or v4l2loopback 🤷🏻.