自定义Linux GUI:从哪里开始?

我对开发适合我需求和兴趣的操作系统界面有着长期的兴趣。 当我年轻的时候,我疯狂地玩着用于Windows的Stardock皮肤工具。 我喜欢开发自己的窗口风格和布局思路。 从那时起,我有一个不可琢磨的痒。

  • 我并不是特别感兴趣的是在较低级别的内核操作上,只是在表示方面。 我一直在考虑一些Linux的味道。
  • 虽然我很想拥有自己创build的一些基本的集成工具/应用程序,但我主要关注基本窗口,工具栏,桌面和文件pipe理的演示。
  • 如果可能,我不希望被locking使用现有的应用程序。 例如,我没有兴趣编写我自己的网页浏览器,但有能力将现有的工具用于devise将是一个主要的优点。
  • 我的想法有时非常直观,所以能够产生更复杂的透明效果和不寻常的窗口形状将是有用的。 对OS X或Windows重现当前UIdevise的graphics保真度的能力将是理想的。
  • 鼓励一个操作系统的风格和工具,让我开始一个空白的屏幕,从头开始工作或包括基础知识。 传统意义上的“桌面”概念不应该是强制性的。 灵活做不同的事情对我来说很重要。

我在找什么:

我对什么样的Linux / OS风格感兴趣,有什么工具/框架对完成任务是有用的(Qt似乎是一个受欢迎的build议),以及关于如何/在哪里开始开发/testing的基本信息一个UI。 我也有兴趣阅读人们可能已经开发的任何“个人”UI。

这是我的正常发展工作以外的兴趣,所以作为一个免责声明,如果我似乎感到困惑,请原谅我的天真。 纠正的见解表示欢迎。

我意识到这是一个很大的问题,所以感谢那些花时间提出build议的人。

你想build立你自己的DE(桌面环境)。 通常的例子是GNOME和KDE,尽pipe更多的是受欢迎的。 它实际上曾经是非常stream行的build立自己的DE,并且经常创build专用的脚本工具。

您通常需要合并多个工具:窗口pipe理器,工具栏程序,桌面pipe理器(图标),会话pipe理器,可能更多。 除此之外,只有一个窗口pipe理器是必需的部分(通常没有任何意义不运行任何WM内部的X服务器),其他人是可选的。 您通常不会从头开始编写这些工具(这是很多工作),而是使用已经可用的组件。

请注意,GNOME和KDE实际上都包含这些元素(很好地集成在一起)。 例如,GNOME由一个窗口pipe理器( metacity ),工具栏( gnome-panel ),桌面pipe理器( nautilus )等组成。 如果你愿意的话,你可以把一个元素换成另一个元素:过去常常使用sawfish作为窗口pipe理器而不是metacity ,保持所有其他元素不变。 现在使用compiz而不是metacity很受欢迎。

我曾经使用FVWM ,这是一个窗口pipe理器,具有额外的(相当不错的)脚本function,可以用来创build工具栏,菜单和其他东西。 其中一个很好的例子是FVWM-Crystal ,它是一个基于FVWM和其他一些工具的完整DE,用FVWM脚本和Python混合编写。 只要打开FVWM的脚本控制台并键入命令,就可以在运行时改变任何types的行为。 如果你想从已经可用的东西开始,FVWM-Crystal可能是一个很好的起点; 裸FVWM是好的,如果你想从头开始build立您的DE。

[更新:似乎gnome-shell在这方面非常类似于FVWM 。 它的大多数行为是使用JavaScript脚本化的(而不是FVWM中的自定义语言),并且非常容易更改。 它也是非常积极的开发,因为它是GNOME3的一个重要组成部分,对构图有很好的支持。 这是一个黑客的天堂;-)]

[更新2:所以看来我是正确的GNOME壳。 有一个Cinnamon ,它使用与gnome-shell相同的框架( mutter窗口pipe理器),但是构build的桌面与gnome-shell

有一个网站是一个很好的想法来源: lynucs.org 。 现在已经停了两年了,但是已经被归档了 。

警告:许多这些组件不再被维护,特别是因为GNOME / KDE开始变得实际可用。 embedded式设备的特殊要求通常会推动这一领域的发展: 手机或上网本 。

现在,回答你的实际问题:

  • Linux / OS Flaver:任何容易定制的东西:Debian,Arch,Gentoo, LFS …
  • 工具/框架:这取决于你想达到什么目的。 如果你想编写一个自定义工具栏,你可以使用一些脚本语言(比如FVWM),自定义工具(如adesklets) ,或者在Qt中编写你自己的工具(如果你的其他组件是用Qt编写的)或者GTK组件在GTK中)。
  • 个人用户界面:他们有很多,像lynucs.org这样的网站是一个很好的汇编(每个桌面使用lynuc列出的组件)。
  • 复杂的透明度效果:旧的工具通常不会本机处理,或者做一些简单的事情,比如将桌面墙纸的一部分作为自己的背景(所谓的伪透明度)。 很可能你需要编写你自己的代码,作为一个插件compiz

我可能会从Ubuntu安装和OpenBox窗口pipe理器开始,并从那里build立。

OpenBox是非常小的,但你可以添加应用程序(如Docky,Awn等)来提供桌面界面元素或自己写。

如果你快速和酷的UI,我会build议看看启蒙 。 它比Gnome老,我发现它非常快速和低资源消耗的select。

你尝试过Tcl / Tk吗? Tcl是一种脚本语言。 Tk是该语言的GUI部分。 您的应用程序将使用AndroWish在Android上运行。

如此简单,如此之快。

在一个小时之内,我就可以用一个日历来制定议程。