Add more window manager support to UI detection code.
This adds support for window managers (i.e. i3) and also distinguishing between the different variations using pgrep which checks if the process is running.
WMs/DEs supported:
- GNOME Shell
- KDE Plasma
- XFCE
- i3, i3-gaps
- Bspwm
- Openbox
- Blackbox
Should be easily expandable in the future.