最简单的Ubuntu GUI应用程序

时间:2011-01-15 12:10:30

标签: c linux user-interface ubuntu

在Windows上,无论您使用哪个框架,最终所有框架都需要调用用户模式user32 :: CreateWindowEx API来实际在桌面上创建窗口。

在Ubuntu,或者一般的Linux系统中,似乎选择使用像Wx或Qt或GTK +这样的小部件框架来创建GUI应用程序,但所有这些框架都觉得它们包含了更基本的东西。这些都是直接与Linux上的X对话吗?我以为Ubuntu正在转向非X窗口管理器,那么他们将要使用什么呢?

我将使用哪个库来访问所有这些框架使用的窗口管理器?

3 个答案:

答案 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”上重新实现。