Docking various applications comes in handy especially when you want to have applications you’d like to run continuously without taking up taskbar space, but the application in question has no such option. Below are a few ways of accomplishing this; the tools provided here will dock any window into the system tray, and they have several useful command-line options to control the behavior of docked windows.
Under GNOME there is AllTray, which really does all that I want in terms of putting my apps in the system tray. AllTray will skip showing the application’s window at all, can be invoked so that it changes the system tray icon to its own icon, and has options to dock or undock the application as well.
Here is an example:
And another example, for putting into the system tray a terminal program like, say, the CMus music player:
This will embed gnome-terminal in the systray, which in turn will execute cmus inside it.
For KDE, we have KDocker and the ksystraycmd command.
KDocker uses the same style as AllTray, you can run it as kdocker appname or just as kdocker and then select the desired window with your mouse. KDocker also offers options to dock/undock your applications, change the systray icon, skip taskbar and pager, make the window sticky, or do not automatically hide the application window when docking it.
KSysTrayCmd is another tool included by default in KDE with no graphical interface, but it also gets its job done. You can run it as ksystraycmd –hidden appname to embed an application in the system tray and automatically hide the window.