在Windows上,无论您使用哪个框架,最终所有框架都需要调用用户模式user32 :: CreateWindowEx API来实际在桌面上创建窗口。
在Ubuntu,或者一般的Linux系统中,似乎选择使用像Wx或Qt或GTK +这样的小部件框架来创建GUI应用程序,但所有这些框架都觉得它们包含了更基本的东西。这些都是直接与Linux上的X对话吗?我以为Ubuntu正在转向非X窗口管理器,那么他们将要使用什么呢?
我将使用哪个库来访问所有这些框架使用的窗口管理器?
答案 0 :(得分:5)
它们都包装Xlib
,如果您切换到非X服务器,则需要Xlib
替换它(或Xlib包装器)。
答案 1 :(得分:1)
原则上,您可以通过学习X11协议和所有相关扩展(ICCCM,桌面约定......)来编写自己的X库,但这是一项艰巨的任务。如果你这样做,你会使用最低级别的系统调用(send,recv,...)。
某些语言的某些实现(SML,Common Lisp,Ocaml)选择在不使用Xlib或XCB C库的情况下实现X11协议。但这是一项如此重大的任务,我不会推荐它。
Ubuntu谈到的Wayland尚未成熟,但工具包库(如GTK和Qt)正在慢慢支持它(除了支持X11)。
今天,您还可以选择开发基于Web的应用程序而不是基于X11的应用程序。有时,HTTP + XHTML + AJAX更容易从头开始重新编码X11。
但是不要单独开始编写图形堆栈......这太重要了......
答案 2 :(得分:0)
X通过精心指定的网络协议运行,因此如果您愿意,可以直接将此协议发送给服务器。在实践中,GUI工具包包装Xlib(可能还有Xt)。传统上Xlib的速度和它一样低,但现在Xlib已经在一个更清晰的低级X协议库“xcb”上重新实现。