当前位置:  开发笔记 > 编程语言 > 正文

构建一个窗口管理器

如何解决《构建一个窗口管理器》经验,为你挑选了5个好方法。

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

哪个是最好的语言?

哪里可以学到一些资源?

Josh Lee.. 64

一个重要的决定是如何与X服务器通信.您可以将Xlib绑定用于您选择的语言,也可以使用更高级别的XCB绑定.(如果你疯了,你可以直接打开X服务器的套接字.)

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

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


1 Elijah Newren写道:

不要去看看那些东西.他们真的很棒,真的很难过.如果你这样做,你可能最终会睡觉而不是黑客攻击Metacity.;-)

想想看,Metacity的文档有很多关于它如何与windows交互以及它支持哪种扩展属性的说法.



1> Josh Lee..:

一个重要的决定是如何与X服务器通信.您可以将Xlib绑定用于您选择的语言,也可以使用更高级别的XCB绑定.(如果你疯了,你可以直接打开X服务器的套接字.)

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

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


1 Elijah Newren写道:

不要去看看那些东西.他们真的很棒,真的很难过.如果你这样做,你可能最终会睡觉而不是黑客攻击Metacity.;-)

想想看,Metacity的文档有很多关于它如何与windows交互以及它支持哪种扩展属性的说法.


+1用于调查已使用的一些语言.

2> mtvee..:

C中的tinywm可能对入门有所帮助.



3> asveikau..:

虽然另一种语言和一组库在技术上是可行的,但我认为最好的语言选择是C,以及Xlib或XCB库.X的大多数窗口管理器使用它,并且这些特定库已经存在很多动力和成熟度.

一些感兴趣的文件:

Xlib手册 - 必须读取低级X编程.

ICCCM - X应用程序和窗口管理器之间通信的约定和接口.

XCB-- 21世纪替代Xlib.这是一个较低的级别,并且比Xlib做出的决策更少.从我收集到的,结果可能是更好的表现,因为异步性的可能性更大,但我应该警告我从未使用过它.



4> Mikael Auno..:

哪个是最好的语言?

无论你最舒服.有很多成功的窗口管理器的例子,有许多不同的语言.Qtile和xmonad是很好的例子,分别用Python和Haskell编写.

哪里可以学到一些资源?

我会去看一些现有的窗口管理器.它们有很多,所以至少其中一些必须具有可读代码.这是Unix的窗口管理器综合列表.



5> Alex Ozer..:

我知道这个话题有点陈旧,但我想知道同样的事情.这个名为i3的窗口管理器似乎也是一个很好的学习者.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有