Okay, I got rofi to work. It works very nicely to switch windows.
bindsym $mod+Tab exec --no-startup-id rofi -show window -font "snap 11" -fg "#DDDDDD" -bg "#222222" -hlfg "#DDDDDD" -hlbg "#7DA555" -fg-active "#DDDDDD" -bg-active "#003D99" -o 85
It has the great advantage that when you are in the windows list, you can switch to "run" and "ssh" modes with Shift+left/right.
A disadvantage is that in "run" mode you cannot complete the command and add parameters to it - when you select the command, it's launched immediately. For this reason, dmenu may be additionally needed to do commands with parameters. Rofi is supposed to have a dmenu mode too, but I didn't get this to work at all.
Earlier I recommended quickswitch.py fo i3 to switch windows, but quickswitch.py is as slow as dmenu and based off of dmenu.