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

时间:2010-09-05 13:51:55

标签: linux user-interface

我长期以来一直致力于开发适合我的需求和兴趣的操作系统UI。当我年轻的时候,我疯狂地玩Windows的Stardock皮肤工具。我喜欢开发自己的窗口样式和布局思路。从那以后,我有一个不易察觉的痒。

  • 我对摆弄较低级别的内核操作,仅仅是表达方面并不是特别感兴趣。我一直在考虑Linux的一些风格。
  • 虽然我很想拥有自己创建的一些基本集成工具/应用程序,但我主要对基本窗口,工具栏,桌面和文件管理的演示感兴趣。
  • 如果可能的话,我不想被锁定使用现有的应用程序。例如,我对编写自己的网络浏览器没兴趣,但能够将现有工具应用到设计中将是一个重要的优势。
  • 我的想法有时是非常直观的,因此产生更复杂的透明效果和不寻常的窗口形状的能力将是有用的。或多或少能够为OS X或Windows重现当前UI设计的图形保真度是理想的。
  • 鼓励使用OS风格和工具,让我从空白屏幕开始,从头开始工作或包含基础知识。传统意义上的“桌面”概念不应该是强制性的。灵活地做不同的事情对我来说很重要。

我在寻找:

我对Linux / OS风格可能有意义,哪些工具/框架对完成任务有用(Qt似乎是一个受欢迎的建议)以及关于如何/在何处开始开发的基本信息感兴趣/测试这样的UI。我也有兴趣阅读人们可能已经开发的任何“个人”用户界面。

这远远超出了我的正常开发工作,所以作为免责声明,如果我看起来很困惑,请原谅我的天真。欢迎纠正见解。

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

4 个答案:

答案 0 :(得分:46)

您想构建自己的DE(桌面环境)。常见的例子是GNOME和KDE,尽管它们中更受欢迎。它实际上曾经非常流行来构建自己的DE,并且经常创建专用的脚本工具。

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

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

我曾经使用FVWM,这是一个窗口管理器,具有额外的(非常好的)脚本功能,可用于创建工具栏,菜单和其他东西。其中一个很好的例子是FVWM-Crystal,这是一个基于FVWM构建的完整DE和很少的其他工具,用FVWM脚本和Python混合编写。实际上,只需打开FVWM的脚本控制台并输入命令,就可以在运行时更改任何类型的行为。如果你想从已经可用的东西开始,FVWM-Crystal可以是一个很好的起点;如果你想从头开始构建你的DE,那么裸FVWM是好的。

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

[更新2:所以看来我在gnome-shell上是对的。有Cinnamon,它使用与mutter相同的框架(gnome-shell窗口管理器),但构建的桌面工作方式与gnome-shell不同。]

有一个网站是实施的好主意:lynucs.org。现在已经停了两年了,但它得到了archived

警告:许多这些组件不再维护,特别是因为GNOME / KDE开始变得实际可用。此领域的开发通常更多地受嵌入式设备的特定要求驱动:phonesnetbooks

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

  • Linux / OS flaver:易于定制的任何东西:Debian,Arch,Gentoo,LFS ......
  • 工具/框架:这取决于您想要实现的目标。如果你想编写一个自定义工具栏,你可能只使用一些脚本语言(如FVWM),自定义工具如adesklets,或者在Qt中编写自己的工具(如果你的大多数其他组件都在Qt中)或GTK(如果大多数其他组件都在GTK中。
  • 个人用户界面:有很多这样的网站,像lynucs.org这样的网站是一个很好的汇编(lynucs列出了每个桌面使用的组件)。
  • 复杂的透明效果:较旧的工具通常不会本地处理它,或者做一些简单的事情,比如重复使用部分桌面壁纸作为自己的背景(所谓的假透明度)。很可能你需要编写自己的代码,例如。作为compiz的插件。

答案 1 :(得分:3)

我可能会从Ubuntu安装和OpenBox窗口管理器开始,然后从那里开始构建。

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

答案 2 :(得分:1)

如果您使用快速和酷炫的UI,我建议您查看Enlightenment。它比Gnome和我更老,发现它极其快速且资源消耗低。

答案 3 :(得分:0)

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

如此简单,如此之快。

仅在一小时内,我就可以用日历制作议程。