У вас существует недопонимание конвеера отрисовки/композитинга/серверов графических элементов. "opengl/vulkan" и "xlib" это совершенно разные уровни абстракции интерфейса. Они часто работают вместе и дополняют друг друга. Можно работать с контроллами через xlib и при этом рисовать это всё через OpenGL.
Вообще, с системами отрисовки графических элементов, различными уровнями абстракций сейчас такой дичайший зоопарк творится, даже сами разработчики порой уже путают эти уровни, впихивают невпихуемое туда, где его быть не должно, потом переписывают всё с нуля, старые костыли оставляют для совместимости, и т. д. Поэтому, крайне не советую начинать это неблагодарное дело, ибо не закончите никогда. Возьмитесь лучше за что-то попроще, напишите биндинги для GTK или Qt, например, если уж так нравятся гуи.