~/.config/i3/config:

  # emacsclient
  set $em_daemon ~/.local/bin/em

  # make a quick launcher for specific things I do all the time
  bindsym $mod+o mode "spotlight"

  mode "spotlight" {
       ## specific files in a new emacs buffer
       # dired in home
       bindsym d exec $em_daemon ~/; mode "default"
       # ibuffer
       bindsym e exec $em_daemon --eval "(ibuffer)"; mode "default" #
       # guaranteed new scratch buffer
       bindsym s exec $em_daemon --eval '(switch-to-buffer (format-time-string "%d %b %Y %H:%M:%S"))'; mode "default"

       ## common binaries
       bindsym f exec firefox ; mode "default"
       bindsym h exec --no-startup-id zeal ; mode "default"
       bindsym j exec --no-startup-id ~/.local/share/JetBrains/Toolbox/bin/jetbrains-toolbox ; mode "default"
       bindsym m exec --no-startup-id mendeley ; mode "default"
       bindsym k exec --no-startup-id keepassxc ; mode "default"
       ## special launchers
       # ipython
       bindsym i exec zsh -c '$alacritty -e ~/.local/pipx/venvs/ipython/bin/ipython'; mode "default"
       # app switcher
       bindsym a exec "rofi -show window -show-icons -theme gruvbox-dark-hard.rasi"; mode "default"
       ## just in case we did this by mistake
       bindsym Escape mode "default"
  }

I like the mode idea, wonder if I can get an equivalent in KDE.

Maybe checkout https://vickychijwani.me/blazing-fast-application-switching-.... Personally I use jumpapp which does more or less the same thing. https://github.com/mkropat/jumpapp.