代码之家  ›  专栏  ›  技术社区  ›  Nathan Campos

建立窗口管理器[关闭]

  •  44
  • Nathan Campos  · 技术社区  · 15 年前

    我的一个新家庭项目将是一个简单的窗口管理器,但在开始之前,我需要知道一些事情:

    • 哪种语言是最好的?
    • 哪里可以获得一些学习资源?
    5 回复  |  直到 13 年前
        1
  •  61
  •   Josh Lee ZZ Coder    15 年前

    一个重要的决定是如何与X服务器对话。你可以使用 Xlib 为您选择的语言绑定,或者您可以使用更高级别的 XCB 绑定。(如果你是 insane ,您可以直接打开X服务器的套接字。)

    要了解窗口管理器应该如何操作,有两个文档指定了约定和策略: EWMH ICCCM 1个 . 符合这些要求意味着您的窗口管理器将在GNOME、KDE、XFCE和任何其他桌面环境中表现良好,尽管在第一次尝试时简单地忽略它们肯定更容易。

    窗口管理器不必是一个庞大而复杂的C_球。成功的窗口管理器已经用Lisp、Haskell和Python等高级语言编写,甚至一些C语言仍然很小且可读。 XMonad 这是哈斯克尔写的,在1000行以下停留了相当长的一段时间。 StumpWM (共同口齿不清)和 DWM (c)都是极简主义者。您可能能够阅读他们的源代码,以获得一些关于如何设计WM的灵感。


    以利亚·纽伦写道:

    不要去读那些东西。他们真的,真的很无聊。如果你这样做了,你可能最终会赶上你的睡眠,而不是黑客在元城市。;-)

    想想看, Metacity 关于它如何与Windows交互以及它支持哪种扩展属性,文档中有一点要说明。

        2
  •  27
  •   mtvee    15 年前

    这个 tinywm 在C中可能有助于入门。

        3
  •  12
  •   asveikau    15 年前

    虽然从技术上讲,另一种语言和一组库是可能的,但我认为最好的语言选择是C,以及XLIB或XCB库。大多数X的窗口管理器都使用它,而且对于这些特定的库来说,已经有了很大的发展势头和成熟度。

    一些相关文件:

    • Xlib manual -必须读取以进行低级X编程。
    • ICCCM -用于X应用程序和窗口管理器之间通信的约定和接口。
    • XCB -21世纪Xlib的替代品。这是一个有点低的级别,并且比XLIB为您做的决策要少。根据我收集到的信息,由于异步性的可能性更大,结果可能会更好,但我应该警告说,我从未使用过它。
        4
  •  8
  •   Mikael Auno    15 年前
    • 哪种语言是最好的?

      无论你最喜欢哪一种。有很多成功的窗口管理器的例子,有许多不同的语言。 Qtile xmonad 是用python和haskell分别编写的好例子。

    • 哪里可以获得一些学习资源?

      我会去看看现有的一些窗口管理器。它们有很多,所以至少其中一些必须有可读的代码。这里是 Comprehensive List of Window Managers for Unix .

        5
  •  7
  •   Alex Ozer    13 年前

    我知道这个话题有点老套,但我也在想同样的事情。这个窗口管理器调用了 i3 似乎也是一个值得学习的好东西。

    推荐文章