linux - 构建窗口管理器

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

  • 哪种语言最好?
  • 在哪里可以获得一些学习资源?

最佳答案

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

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

窗口管理器不一定是一个庞大而复杂的 C 语言——成功的窗口管理器是用 Lisp、Haskell 和 Python 等高级语言编写的,甚至一些 C 语言仍然很小且可读。 XMonad ,用 Haskell 编写,在相当长的一段时间内都保持在 1000 行以下。 StumpWM (Common Lisp) 和 DWM (C) 都非常简约。您也许可以阅读他们的源代码,以获得有关如何设计 WM 的一些灵感。


1以利亚纽伦写道:

DO NOT GO AND READ THOSE THINGS. THEY ARE REALLY, REALLY BORING. If you do, you'll probably end up catching up on your sleep instead of hacking on Metacity. ;-)

想想看,Metacity的文档很好地说明了它如何与窗口交互以及它支持什么样的扩展属性。

https://stackoverflow.com/questions/1811321/

相关文章:

linux - 单个文件卷挂载为 Docker 中的目录

c++ - 如何以编程方式获取 Linux 中目录的可用磁盘空间

linux - 如何在没有任何用户配置的情况下启动 shell?

linux - Gnome-terminal - 如何自动将选择复制到剪贴板?

linux - 如何找出我在 Amazon EC2 上的存储空间已满的原因?

linux - 如何在 Linux 中使用单行命令获取 Java 版本

MySQL - 错误 1045 - 访问被拒绝

python - 如何使用python2.7 pip而不是默认pip

linux - ./studio.sh 之后的 Android Studio 错误

linux - Ubuntu:使用 curl 下载图像