KDE 4 包括许多振奋人心的新技术,其中包括 Plasma,该特性构成了 KDE 4 的桌面 shell。下面让我们看看如何编写简单的 Plasma applet(称为 plasmoid)以显著改善桌面体验,以及如何将一个 plasmoid 变成一个简单的内存监控器。
KDE,即 K ">Desktop Environment(K 桌面环境),是一个基于桌面环境的免费软件项目,它针对 UNIX® 等系统。它为日常操作提供基本的桌面函数和应用程序,并为开发人员提供工具和文档,帮助他们为系统编写独立应用程序。KDE 软件基于 Qt 工具箱。第四代 KDE 的核心是一个重新设计的桌面环境和面板(统称为 Plasma),它将 Kicker、KDesktop 和 SuperKaramba 的功能整合到一种技术中。
K 桌面环境(KDE)的第四个主要版本于 2008 年 1 月发布,并且得到了各种的评价。这个版本有以下主要变化:
KDE 3 的大部分基本代码完全重新编写。 创建了
大量的新技术。 大部分基本代码以某种方式重构。
尽管初始的 4.0 版本显示出极大的潜力,但修改范围意味着这个版本不会与 KDE 3 具有相同的功能。因此,很多用户报告说该版本在某些领域不稳定,一些用户不愿意升级到这个版本。4.1 版本解决了这些问题的大部分,但仍然缺少一些特性。
但是,随着 2009 年 1 月 KDE 4.2 版本的发布,这些问题中的大多数都得到了解决,许多用户决定使用 4.2 版本作为他们的主要桌面环境。
由于如此多的用户已经开始使用这个版本,现在是深入了解这些新功能和新技术的好时机。
Plasma 后面的理念很简单:您拥有一个或多个 Plasma 容器,这些容器是一些可显示的元素,能够包含一些单独的项目,比如 widgets/plasmoids 和/或其他 Plasma 容器。
这个理念听起来并不是特别具有突破性,除非您意识到这个事实:在 KDE 4 之下,整个桌面 shell(向用户显示的主桌面)实际上就是一个 Plasma 容器,并且所有常用控件(比如任务栏、任务清单、时钟、任务, 任务切换器、K 菜单、快速启动图标等)都是通过 Plasma applet(比如时钟)或 Plasma 容器(比如任务栏)实现的。
这一点非常令人振奋。它为 KDE 4 用户提供许多的自定义机会,允许开发人员和/或个人用户更改桌面体验的几乎每个方面,在需要的地方完全更改其行为。例如,如果您想要一个比默认应用程序启动器功能更强大的应用程序启动器,您可以使用一个诸如 Lancelot(正在开发过程中)这样的启动器。如果空间有限,自己编写一个在轻量级的 DE(比如 XFCE)中常见的应用程序启动器(在轻量级的 DE 中右键单击将显示一个简单的弹出菜单),删除常规启动器以提供更多的屏幕空间。
这个简单的理念允许 KDE 4 转变成自适应桌面,因为发行版和用户能够使 KDE 适应不同的配置。例如,高配置的机器能够受益于复杂的大型 applet 和所有附件,而低配置的机器则可以依靠所需组件的简单/轻量级版本并删除 不需要的组件。 这样,您不再需要替换 KDE 4 以支持一个更专业的、轻量级的 DE。
尽管这些 Plasma applet 可能有些复杂,它们原本是您希望总是处于打开状态的工具风格的小型应用程序,而不是完整的应用程序。它们通常嵌入到桌面和/或任务栏中,典型的例子有系统监控器、即时消息器、社交网络工具等。
另一个公共的设计功能是它们占用较小的屏幕空间。您不希望看到许多 plasmoid 总是在桌面上打开而没有重叠。它们不在窗口管理器中显示为独立的窗口,因此您不能在它们之间快速移动或将其最小化。
除了提供基本的 Plasma 容器技术,KDE 开发人员已经着手编写强大的 Plasma applet,并尽量使其简便灵活。这些 applet 包括以下功能:
对所有 GUI 元素的可缩放矢量图形(Scalar Vector Graphics,SVG)的一流支持。 这样,所有的应用程序/applet 的分辨率将独立于平滑缩放。在 30 英寸高分辨率监控器和 8 英寸上网本屏幕上,同一个应用程序的外观和行为将表现正常 — 而无需开发人员进行其他处理。 对主题的出色支持。我们积极支持开发人员引用所有资源(如图标和背景等)。引用时要使用相对路径,这样 KDE 能够根据当前选择的主题在运行时定位这些资源。这将允许所有 KDE 4 应用程序在不同的主题之间利用统一的外观,这同样不需要开发人员进行额外处理。 多语言支持。KDE 4 plasmoid(比如常用 KDE 应用程序)能够使用几种不同的编程语言编写。本文关注 C++,但其他语言(比如 Ruby、Python 和 Javascript)正在开发过程中。 组件重用。KDE 很好地支持组件重用各组件相互提供的服务。
现在您对 Plasma 的背景有了一些了解,让我实际编写一个简单的 plasmoid 并添加到我们的 KDE 4.2 桌面中。
KDevelop 4 IDE
这些指令假定您正在运行一个 KDE 4.2 桌面。这些指令的一部分或全部可能可以应用于 KDE 4.1,但我没有验证这一点。
首先,您需要安装所有的 KDE 开发库、标题等。
我使用的是 Kubuntu 8.10 (Intrepid Ibex)的 Stable 版本,该版本默认提供 KDE 4.1,所以我必须启用 PPA 库以获取 KDE 4.2 和标题。 (参见 http://www.kubuntu.org/news/kde-4.2 以了解详细信息)。(Kubuntu 9.04 不需要这个步骤,但安装 g++ 和 kdesdk 等一定需要该步骤)。注意,Canonical 当前不支持这个版本的 KDE,所以最好使用开发环境而不是您的主机。
添加 PPA 库之后,我安装了 kdesdk、g++、cmake 和一些 kde-dev 包。操作如下:
清单 1. 构建 KDE 开发环境
sudo apt-get update &&sudo aptitude upgrade &&sudo apt-get install kdesdk cmake g++ libphonon-dev libplasma-dev kde-devel
上述操作在我的机器上安装了我需要的组件。如果您使用的是另一个发行版,您需要决定如何安装这些包。
KDevelop 4 拥有一个不错的模板,用于自动生成一个基本的 plasmoid。遗憾的是,在编写时,KDevelop 4 仍旧处于 beta 版阶段,没有二进制版本可用于 Intrepid。因此,为了执行以下操作,您需要跟随这些比较直观的 指令,使用源代码构建它。
什么情况不应该使用 KDevelop 如果您不想使用 KDevelop,我向您推荐这篇优秀的 KDE 基础技术文章 Getting Started,它解释了一些基础理论。如果您跟随其中的步骤,您创建的项目将与我们使用 KDevelop 创建的项目非常相似。这样,您可以跳到这个部分修改示例。