KDE 4 plasmoid 简介

来源:developerWorks 中国 作者:Martyn Honeyford
  
KDE 4 包括许多振奋人心的新技术,其中包括 Plasma,该特性构成了 KDE 4 的桌面 shell。下面让我们看看如何编写简单的 Plasma applet(称为 plasmoid)以显著改善桌面体验,以及如何将一个 plasmoid 变成一个简单的内存监控器。

KDE,即 K Desktop Environment(K 桌面环境),是一个基于桌面环境的免费软件项目,它针对 UNIX® 等系统。它为日常操作提供基本的桌面函数和应用程序,并为开发人员提供工具和文档,帮助他们为系统编写独立应用程序。KDE 软件基于 Qt 工具箱。第四代 KDE 的核心是一个重新设计的桌面环境和面板(统称为 Plasma),它将 Kicker、KDesktop 和 SuperKaramba 的功能整合到一种技术中。

KDE 4 带来了新希望

K 桌面环境(KDE)的第四个主要版本于 2008 年 1 月发布,并且得到了各种的评价。这个版本有以下主要变化:

  • KDE 3 的大部分基本代码完全重新编写。
  • 创建了大量的新技术。
  • 大部分基本代码以某种方式重构。

尽管初始的 4.0 版本显示出极大的潜力,但修改范围意味着这个版本不会与 KDE 3 具有相同的功能。因此,很多用户报告说该版本在某些领域不稳定,一些用户不愿意升级到这个版本。4.1 版本解决了这些问题的大部分,但仍然缺少一些特性。

但是,随着 2009 年 1 月 KDE 4.2 版本的发布,这些问题中的大多数都得到了解决,许多用户决定使用 4.2 版本作为他们的主要桌面环境。

由于如此多的用户已经开始使用这个版本,现在是深入了解这些新功能和新技术的好时机。





KDE 4.2 使桌面焕发生机

本文主要关注一种最激动人心的新技术:Plasma 和 Plasma applet(它们通常称为 plasmoid)。

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 apt-get install kdesdk
install cmake
sudo apt-get install g++
sudo apt-get install libphonon-dev libplasma-dev

上述操作在我的机器上安装了我需要的组件。如果您使用的是另一个发行版,您需要决定如何安装这些包。

KDevelop 4 拥有一个不错的模板,用于自动生成一个基本的 plasmoid。遗憾的是,在编写时,KDevelop 4 仍旧处于 beta 版阶段,没有二进制版本可用于 Intrepid。因此,为了执行以下操作,您需要跟随这些比较直观的 指令,使用源代码构建它。

什么情况不应该使用 KDevelop
如果您不想使用 KDevelop,我向您推荐这篇优秀的 KDE 基础技术文章 Getting Started,它解释了一些基础理论。如果您跟随其中的步骤,您创建的项目将与我们使用 KDevelop 创建的项目非常相似。这样,您可以跳到这个部分 修改示例。

运行 KDevelop 之后(如图 1 所示),打开 Project,选择 New From Template。对话框出现后,扩展 C++,然后 KDE 展开并选择 Plasma Applet Template。下一步填充 Application name(我建议使用 dwPlasmoid)。然后单击 Next 和 Finish。


图 1. 创建项目
创建项目对话框

最终对话框要求您选择一个 Installation Prefix 目录(我推荐使用 $HOME/plasmoids)和一个构建类型(选择 Release 或 Debug)。

这将创建一个项目。花一些时间查看文档编写得很好的 .cpp 和 .h 文件。另外,前面提到过的基础技术文档 进一步解释了这些代码正在进行的操作。

现在您已创建一个项目,准备好构建它了。要构建项目,打开 Project 并选择 build(或者按下 F8 键)。该命令第一次将调用 configure,下次执行时,它将直接构建。

假设构建成功执行,从 Project 菜单选择 Install。这个命令将安装文件复制到此前选择的目录中。如果操作没有出现问题,您就准备好进行测试了。

在运行新的 plasmoid 之前,您需要告知 KDE 它的存在。首先,您需要使 KDE 注意到这个 plasmoid 的安装目录($HOME/plasmoids)。为此,需要打开控制台以便设置 KDEDIRS 环境变量,然后运行 kbuildsyscocoa4 命令。打开一个终端并输入清单 2 中的命令行:


清单 2. 使 KDE 注意到 plasmoid 的位置
				
export KDEDIRS=$KDEDIRS:$HOME/plasmoids
kbuildsyscocoa4

现在 KDE 知道了 plasmoid 的位置,您可以尝试运行它。plasmoidviewer 是一个方便的工具,可以用于进行测试。要获取这个工具,输入 plasmoidviewer dwplasmoid。您将会看到示例 plasmoid 显示在一个窗口中(如图 2 所示)。


图 2. 基础的 plasmoid
基础 plasmoid 的屏幕截图

由于这是一个 plasmoid,您也可以将它嵌入到桌面中。但是,如果您试图现在添加这个 plasmoid(使用桌面上的 Add widgets 菜单,您将在 plasmoid 的清单中看到 dwPlasmoid,但是如果您试图添加它,它将不会有效!尽管您在运行 kbuildsyscocoa4 时正确设置了 KDEDIRS,但是在这个 Plasma 桌面启动时,它没有在环境中正确设置,所以它不能找到需要的所有文件。

要修复这个问题,可以退出当前运行的 Plasma 实例并从命令行重新启动它(使用此前使用的那个命令行以便 KDEDIRS 仍旧正确设置,也可以在运行以下命令前重新设置它)。注意,这将优雅地退出 Plasma 并重新启动它,因此确保您的操作不会被这种退出中断(例如,在其他 plasmoid 中保存任何未保存的工作)。使用清单 3 中的命令退出当前 Plasma 实例。


清单 3. 退出当前 Plasma 实例
				
kquitapp plasma && kstart plasma 

时间:2009-07-21 13:15 来源:developerWorks 中国 作者:Martyn Honeyford 原文链接

好文,顶一下
(4)
100%
文章真差,踩一下
(0)
0%
------分隔线----------------------------


把开源带在你的身边-精美linux小纪念品
无觅相关文章插件,快速提升流量