Интересует следующее: как лучше реализовать полное разделения GUI и логики, что-бы интерфейс стал такой же частью программы, как например иконка, который можно быстро заменить на любой другой. Что бы GUI никак не зависел от языка, на котором написано само приложение. Что бы при ошибке в GUI, и последующем его перезапуске, сама программа сохраняла свое состояние. И в итоге за то как выглядит конкретная программа, сможет отвечать DE или сам пользователь.
Как лучше организовать в таком случае «общение» между графическим интерфейсом и логикой программы, d-bus или другие способы независимые от него?