You really don't have to write your own equivalent of X-Windows.

There was a time when you could choose between X-Windows implementations...