Zoom Problems

I’ve been spending a lot of time on Zoom recently with a group of other developers and came across a slightly annoying issue were every time someone would share their screen the Zoom notification would open as a full screen window, obscuring the window I was working on and stealing the focus.

If you’re experiencing the same issue the fix is to edit your i3 config:

nano ~/.config/i3/config

And add the following lines:

# Set Zoom notification window to floating with no focus
for_window [title="^zoom\s?$"] floating enable
no_focus [title="^zoom\s?$"]

# For meetings that you have joined via a link
for_window [title="^join\?action=join.*$"] floating enable
no_focus [title="^join\?action=join.*$"]

# Alternatively if the popups are annoying you...
# for_window [title="^zoom\s?$"] kill
# for_window [title="^join\?action=join.*$"] kill

I actually fixed this once before but a recent Zoom update changed the tile of the window from “zoom” without a space to “zoom ” with a trailing space, hence the \s? which is a regex matching either a space or no space.

When you’re done don’t forget to restart i3 so the change takes effect, I believe the default keyboard shortcut is super + shift + r but you can search your i3 config for the word “restart” if you want to double check.

How Do You Figure That Out?

So the above works well for Zoom but what if you are having issues with another application and you want to make a specific window a floating window, add or remove a border or just plain kill it?

Well the i3wm docs do a decent job of describing how to do all of these things using for_window, with more examples found in command_criteria and list_of_commands, the one thing that it doesn’t make super clear (although it is in there) is how you actually get the title, class or role of a window to begin with.

For that you can use either xwininfo (for the name / window id) or xprop, both work in a similar manner, you run the command in a terminal and then click the window you want the info for, but I’d suggest going with xprop as it provides better output.


As mentioned above you can also make use of regex‘s in your window selector (<criteria> in the i3wm docs), if you’re not too familiar with regex’s then you might find regex101 handy, it can help you test your expression and will explain in plain English what it means.


Vincent Bernat · 14 July 2022 at 10:12 am

Thanks for this post! I am using this:

# Zoom (😱)
for_window [instance="^zoom(\.|$)" title="^Zoom($|\s)"] floating disable, border pixel $borderpx
for_window [instance="^zoom(\.|$)" title="^zoom"] floating enable, border none no_focus [instance="^zoom(\.|$)" title="^zoom"]
for_window [instance="^join\?action=join" title="^Zoom($|\s)"] floating disable, border pixel $borderpx
for_window [instance="^join\?action=join" title="^join\?action=join"] floating enable, border none no_focus [instance="^join\?action=join" title="^join\?action=join"]
for_window [instance="^start\?action=start" title="^Zoom($|\s)"] floating disable, border pixel $borderpx
for_window [instance="^start\?action=start" title="^start\?action=start"] floating enable, border none no_focus [instance="^start\?action=start" title="^start\?action=start"]

Chris · 24 October 2022 at 11:08 am

Thank you! Works like a charm 🙂

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.