6.9.使用 X11

6.9.1. X.Org组件

The Ports 中提供的 X11 实现是 X.Org。如果应用程序依赖于 X 组件, 则应添加 USES= xorg 并在所需组件列表中设置 USE_XORG。完整的列表可以在 xorg 中找到。

Mesa 项目是一项提供免费 OpenGL 实现的努力。要指定对这个项目的各种组件的依赖性, 请使用 USES= glUSE_GL。请参阅 gl 以获取可用组件的完整列表。为了向后兼容,yes 的值映射为 glu

例子 72. USE_XORG 例子

USES=		gl xorg
USE_GL=		glu
USE_XORG=	xrender xft xkbfile xt xaw

表15. 使用 X 的 Port 的变量

USES= imake

该 Port 使用 imake

XMKMF

如果不在 PATH 中,则设置为 xmkmf 的路径。默认为 xmkmf -a

例73. 使用与 X11 相关的变量

# Use some X11 libraries
USES=		xorg
USE_XORG=	x11 xpm

6.9.2. 需要Motif的 Port

如果 port 需要一个 Motif 库, 应在 Makefile 中定义 USES= motif。默认的 Motif 实现是 x11-toolkits/open-motif。用户可以通过在 make.conf 中设置 WANT_LESSTIF 来代替 x11-toolkits/lesstif。同样,也可以通过在 make.conf 中设置 WANT_OPEN_MOTIF_DEVEL 来选择 x11-toolkits/open-motif-devel

MOTIFLIB 会被 motif.mk 设置为引用适当的 Motif 库。请对 port 的源代码打上补丁, 以便在原始 MakefileImakefile 中引用 Motif 库时使用 ${MOTIFLIB}

有两种常见的情况:

  • 如果 port 在其 MakefileImakefile 中将 Motif 库称为 -lXm, 则应将其替换为 ${MOTIFLIB}

  • 如果 port 在其 Imakefile 中使用了 XmClientLibs, 应将其改为 ${MOTIFLIB} ${XTOOLLIB} ${XLIB}

注意,MOTIFLIB(通常)会扩展为 -L/usr/local/lib -lXm -lXp/usr/local/lib/libXm.a,所以没有必要在前面加上 -L-l

6.9.3. X11字体

如果 port 安装了 X 窗口系统的字体, 应把它们放在 LOCALBASE/lib/X11/fonts/local 中。

6.9.4. 用 Xvfb 获得一个假的 DISPLAY

一些应用程序需要一个可以工作的 X11 显示器才能编译成功。这给无头操作的机器带来了问题。当使用这个变量时,构建基础设施将启动虚拟帧缓冲区的X服务器。然后,工作的 DISPLAY 会被传递给编译。参见 USES=display 的可能参数。

USES=	display

6.9.5. 桌面条目

桌面条目(Freedesktop 的一个标准)提供了一种在安装新程序时自动调整桌面功能的方法,不需要用户干预。例如,新安装的程序会自动出现在兼容桌面环境的应用程序菜单中。桌面条目起源于 GNOME 桌面环境,但现在是一种标准,也适用于 KDE 和 Xfce。这一点自动化为用户提供了真正的好处,对于可以在桌面环境中使用的应用程序,我们鼓励使用桌面条目。

6.9.5.1. 使用预定义的 .desktop 文件

包含预定义 *.desktop 的 port 必须在 pkg-plist 中加入这些文件, 并将其安装到 $LOCALBASE/share/applications 目录中。INSTALL_DATA 宏对于安装这些文件非常有用。

6.9.5.2.更新桌面数据库

如果一个 port 在其 portname.desktop 中有一个 MimeType 项, 在安装和卸载之后必须更新桌面数据库。要做到这一点, 请定义 USES= desktop-file-utils。

6.9.5.3. 用 DESKTOP_ENTRIES 创建桌面条目

通过使用 DESKTOP_ENTRIES 可以很容易地为应用程序创建桌面条目。一个名为 name.desktop 的文件将被创建、安装,并自动添加到 pkg-plist。语法是:

DESKTOP_ENTRIES=	"NAME" "COMMENT" "ICON" "COMMAND" "CATEGORY" StartupNotify

可能的类别列表可以在 Freedesktop 网站上找到。StartupNotify 表示应用程序是否与启动通知兼容。这些通常是一个像时钟一样的图形指示器,出现在鼠标指针、菜单或面板上,给用户一个程序启动的指示。一个与启动通知兼容的程序在启动后会清除该指示器。与启动通知不兼容的程序永远不会清除指示器(有可能使用户感到困惑和愤怒),必须将 StartupNotify 设置为假,这样指示器就根本不会显示。

例子:

DESKTOP_ENTRIES=	"ToME" "Roguelike game based on JRR Tolkien's work" \
			"${DATADIR}/xtra/graf/tome-128.png" \
			"tome -v -g" "Application;Game;RolePlaying;" \
			false

最后更新于

FreeBSD 中文社区