Creating a plugin allows you to completely change everything about the gui. So basically you get the gui object at initialization and you can do with it whatever you want. You can patch classes and functions and therefore create the interface that you like. It has the advantage, that the gui class itself still handles the interfacing to the concurrent python thread in which it is running the code and it also handles shared contextes between multiple rendering windows. But you can of course build your own application and take some guidance from the source code of the ngsgui