Rofi
A window switcher, application launcher and dmenu replacement
... with a textual list of options where one or more can be selected. This can either be running an application, selecting a window, or options provided by an external script. It's not an application that can support every possible use case. It tries to be generic enough to be usable by everybody. Rofi has several built-in modes implementing common use cases and can be extended by scripts (either called from Rofi or calling Rofi) or plugins.