跳转至内容

X11/Print 指南

来自维基教科书,开放书籍,开放世界
Om..a.r al_Bash.ir


作者 · 历史 · 打印 · 许可证

简介 · 配置 · 构建 · 启动会话 · 启动程序 · 字体 · 窗口管理器 · Xt 客户端 · 政治历史 · 参考文献和链接

补充: 命令

编辑此模板

这是 X 窗口系统的标志。xlogo 程序绘制它。

本书,即维基教科书 X11 指南,是关于X 窗口系统的。本书的目标读者是 X11 用户。

X11 是大多数Unix 或类 Unix 系统的图形环境,包括*BSDGNU/Linux;它提供对屏幕、键盘和鼠标的访问。X11 是 Unix 和 Linux 的图形驱动程序。你是否在这些系统上使用FirefoxOpenOffice.orgGNOMEGIMPKDE?如果是,那么你就是 X11 用户。

本书是关于X 窗口系统的。有些用户将其描述为 Unix 和 Linux 的图形驱动程序。

本章将解释 X11 的基础知识,包括

  • 为什么会有如此多的窗口管理器和桌面环境?
  • 什么是控制台,X 如何提供对它的访问?
  • X 服务器和 X 客户端的目的是什么?
  • 不同的 X 客户端是否可以互操作?

X11 拥有多样化的桌面环境

[编辑 | 编辑源代码]
有许多可用于 X11 的桌面环境,包括GNOMEKDE。这里显示的是Xfce,“无胆固醇桌面环境”。

大多数 Unix 和 Linux 发行版都提供命令行和 X 窗口系统。在Mac OS X 中,“X”是版本号“十”;但是,苹果和其他方为 Mac OS X 提供了 X11,这使你能够同时使用 X11 和原生 Macintosh 窗口系统。

然而,仅仅因为许多系统都提供 X 窗口系统,并不意味着它看起来总是相同。一些 X 用户使用 GNOME 桌面环境,一些使用 KDE 桌面环境。有些用户在使用 GNOME 和 KDE 程序时使用 Xfce 桌面环境。这并不意味着所有 *BSD 用户都使用 GNOME,所有 Linux 用户都使用 KDE;相反,*BSD 和 Linux 用户都分为使用 GNOME 的用户、使用 KDE 的用户、使用其他环境的用户以及不运行 X 的用户。

有其他维基教科书,使用 GNOME使用 KDE,它们记录了这两个环境。

X11 为用户提供窗口管理器选择

[编辑 | 编辑源代码]

有许多不同的窗口管理器 可用于 X。大多数窗口周围都有装饰,这些装饰提供了一些功能,例如移动、关闭、调整大小以及其他组织窗口的方式。但是,这些装饰在每台运行 X 的计算机上并不相同。

窗口管理器是那些绘制这些装饰的程序。大多数窗口管理器都绘制标题栏,但有些则不绘制。有些窗口管理器不制作任何装饰,而是提供菜单或按键来管理窗口。有些窗口管理器允许你重叠窗口、在窗口之间切换以及暂时隐藏窗口。

有些窗口管理器比 GNOME 和 KDE 都要古老,一些用户继续喜欢轻量级的窗口管理器,而不是那些占用更多内存和计算资源的重量级桌面环境。许多 X11 用户正在运行Metacity,即 GNOME 窗口管理器,或KWin,即 KDE 窗口管理器。

X 的与众不同之处在于它提供了许多可供选择的窗口管理器。(本书列出了至少 20 个窗口管理器。)作为用户,*您*可以选择要安装、配置和使用的窗口管理器。您可以拥有自己的自定义环境,除非您无法安装或配置您想要的窗口管理器。

但是,虽然 X 只允许一个窗口管理器,但它允许多个窗口。与 Mac 或 Windows 不同,X11 没有提供标准界面或配色方案,因此每个窗口可能会以不同的方式绘制其菜单、滚动条和按钮。至少窗口装饰在每个窗口上将是相同的。例如,可以在一个 X 服务器上同时运行 Firefox 和 OpenOffice.org,以及来自 GNOME 和 KDE 的程序,因为每个程序都有自己的窗口或多个窗口。但如果您正在运行 Metacity,那么您就不能同时运行 KWin,因为这两个都是窗口管理器,而不是桌面环境。

X 提供对控制台的访问

[编辑 | 编辑源代码]
X 窗口系统由一个X 服务器组成,它控制屏幕、鼠标和键盘,以及各种连接到服务器的X 客户端

在内部,X 窗口系统有一个特殊的协议 - X 协议的版本 11。这个协议的作用是为像 Firefox、OpenOffice.org、Nautilus 和 Konqueror 这样的程序提供控制台访问。

每台家用电脑或工作站都有一台控制台,它包括一个屏幕、鼠标和键盘。事实上,一些控制台有多个屏幕和多个输入设备,比如两个鼠标或一个鼠标和一个触控板。通常,Unix 内核只提供一个控制台终端。内核加载一个纯文本视频驱动程序和一个键盘驱动程序,并创建一个纯文本终端,适合运行命令行,例如Bourne shell 和一些纯文本程序,比如viNetHack

如果我们想要绘制图形或使用鼠标,我们必须运行一个知道如何做到这一点的程序。我们启动一个名为X 服务器的 X11 程序。它加载一个图形视频驱动程序、一个键盘驱动程序和一个鼠标驱动程序。然后,X 服务器允许程序创建一个窗口。窗口是一个矩形区域,程序出现在其中;人们可以在窗口中输入和点击。X11 允许程序共享控制台,因为它允许屏幕上有多个窗口。(例如,一个人可能有两个 Firefox 窗口和一个 OpenOffice.org 窗口打开。)这与 Mac 和 Windows 的功能相同。

X 客户端连接到 X 服务器

[编辑 | 编辑源代码]

当您启动 X 服务器时,它会将屏幕更改为灰色并创建一个鼠标光标。然后它等待。就像一个 web 服务器等待 web 浏览器连接,或者一个 ssh 服务器等待远程登录,X 服务器等待 X 客户端连接。X 客户端是一个程序,比如 Firefox 和 OpenOffice.org,它想要在屏幕上创建一到多个窗口。

与 Mac 或 Windows 不同的是,X 服务器可以接受网络连接。当您在一台计算机上使用 X 服务器时,您可以远程登录到另一台计算机,然后要求它连接到您的 X 服务器。这样您就可以看到和使用其他计算机上的程序,即使这些计算机在不同的操作系统上使用 X。

当一个 X 客户端连接到 X 服务器(在同一台或不同的计算机上)时,它会使用X 协议的版本 11。这就是客户端告诉服务器绘制什么的方式,而服务器告诉客户端键盘和鼠标输入是什么。许多 X 客户端永远不需要了解 X 服务器的硬件或操作系统,因为 X 服务器控制着控制台。像 Firefox 和 OpenOffice.org 这样的客户端只需要了解 X 协议。

X 有时允许程序互操作

[编辑 | 编辑源代码]

X11 程序共享剪贴板和字体,但有时它们没有太多其他共同之处。这导致了不仅在外观上,而且在功能上也存在不兼容性:应用程序之间的拖放有时是不可能的,并且剪贴板的使用不一致。

现在,随着freedesktop.org 等机构的努力,一些不同桌面环境的程序可以进行合作。桌面环境,如 GNOME 和 KDE,以及不太常用的环境,如 Xfce,提供了可以很好地相互协作的应用程序。这些努力的结果包括

  • 使用剪贴板的标准规则
  • 窗口管理器和应用程序之间的合作
  • GNOME、KDE 和其他窗口之间的拖放
  • 对 X 服务器的改进

作者 · 历史 · 打印 · 许可证

简介 · 配置 · 构建 · 启动会话 · 启动程序 · 字体 · 窗口管理器 · Xt 客户端 · 政治历史 · 参考文献和链接

补充: 命令

编辑此模板

您会做

$ XFree86 -configure
$ Xorg -configure

$ xf86cfg
$ xorgcfg

特别是对于 XFree86 4.0 或 Xorg,"xf86config" 和 "xorgconfig" 脚本已经过时(除非您有旧硬件)。

这将创建您的 XF86Config 或 xorg.conf 文件。

Debian 和 Ubuntu

[编辑 | 编辑源代码]

如果您使用Debian,您可以在重新配置 xserver-xorg 包时创建一个新的配置文件。运行它将覆盖您当前的配置,因此请创建备份副本,例如

cp /etc/X11/xorg.conf /etc/X11/xorg.conf.new.backup

使用以下命令重新配置:

dpkg-reconfigure xserver-xorg 

更简单的替代方案 / 故障排除

[编辑 | 编辑源代码]
  • 通常,如果您想让 X 正常运行,您首先要做的就是关闭它。通常可以使用 ctrl-alt-backspace 来完成此操作,但有时 KDM/GDM 会重新启动(登录管理器)。按下 ctrl-n 或其他键进行控制台登录。
  • 以 root 用户身份登录并输入 "init 3" 以进入运行级别 3。这将允许您安装图形驱动程序。
  • 如果您使用的是 opensuse,您应该运行 sax2,或者如果 sax2 不起作用,则使用非加速 x 的选项,即 sax2-vesa。
  • 如果您有 nvidia 显卡,它们有一个 x 配置脚本。命令是 nvidia-xconfig,开始输入 "nvidia" 并两次按下 tab 键。如果您没有得到任何结果,则需要安装图形驱动程序。

如果您有 Opensuse,您可能会从 Novell 的 Bugzilla 团队获得帮助。他们可能无法立即解决问题,但您会发现,无论是由于您的努力还是其他人,这些问题在以后的版本中都得到了修复。

手动配置

[编辑 | 编辑源代码]

要手动配置几乎任何东西,请搜索 gentoo 或 gentoo wiki。对于这个主题,https://gentoolinux.cn/doc/en/xorg-config.xml 应该很有用。

作者 · 历史 · 打印 · 许可证

简介 · 配置 · 构建 · 启动会话 · 启动程序 · 字体 · 窗口管理器 · Xt 客户端 · 政治历史 · 参考文献和链接

补充: 命令

编辑此模板

从参考实现到 Xorg 6.9,X11 使用自己的 "imake" 构建系统。客户端、服务器和库在一个构建树中。(只构建树的一部分非常困难;必须构建整个树。)一些东西,比如 Mesa 和 Freetype,被修改为可以选择成为树的一部分。

Xorg 7.0 用一组基于 GNU autoconf 构建系统的模块取代了它。这创建了一个复杂的包和依赖关系系统。同时实现 Xorg 6.9rc1 和 Xorg 7.0rc1 的两个系统的困难导致了第一个候选版本发布的延迟。

Imake 系统

[编辑 | 编辑源代码]

为了使用 imake 构建 Xorg,您首先需要下载并解压缩源代码包。Xorg 6.9rc1 的代码包名为xorg-x11-6.8.99.901.tar.bz2可以从这里获得。现在 Xorg 6.9 和 7.0 的最终版本已经可用,您可以使用镜像列表这里找到它们。

构建系统的粗略概述

  1. 创建一个 "host.def" 文件(可选)。
  2. 执行 "make World" 以配置和构建树。
  3. 执行 "make install" 和 "make install.man" 以安装所有内容。

您可以使用 "host.def" 文件自定义构建。如果您不创建它,那么您将使用默认设置,这些设置应该已经针对您的操作系统进行了调整。

文件xc/BUILD更详细地描述了构建过程。

是的,您必须构建整个树才能构建其中的一部分。唯一的例外是,有时您可以执行仅服务器或无服务器构建。请参阅我们关于#构建静态服务器的部分,以及xc/config/cf/xorgsite.def.

构建示例

[编辑 | 编辑源代码]

在以下示例中,root 已授予我们对/usr/local/src的写入权限。我们下载了 Xorg 6.9 版本候选 1(/usr/local/src/xorg-x11-6.8.99.901.tar.bz2).

)。我们已经安装了 Xorg 6.8.2。我们正在构建期间运行它,因此我们有多个 xterm 用于在其中输入 shell 命令。

使用“xterm”,将源代码解压缩到/usr/local/src,创建/usr/local/src/xc:

$ cd /usr/local/src
$ bzcat xorg-x11-6.8.99.901.tar.bz2 | pax -rv

。正如xc/BUILD解释的那样,我们可以使用lndir创建指向源代码的符号链接的影子树。(这可以防止对象出现在源代码树中。)由于“lndir”是 X 的一部分,并且我们已经安装了 Xorg 6.8.2,因此我们可以运行“lndir”。

$ mkdir xcbuild
$ cd xcbuild
$ lndir ../xc

请注意,当前目录是/usr/local/src/xcbuild。现在我们将跳过创建config/cf/host.def并使用默认配置。现在是调用 Makefile 的时候了。我们必须运行make World,因为没有其他正确的方法来配置和启动构建。如果我们运行 Bourne shell

$ make World > World.log 2>&1

运行“make”的“xterm”现在很忙。为了查看日志,我们在第二个 xterm 中运行“tail”。

$ cd /usr/local/src/xcbuild
$ tail -f World.log

最终,日志会宣布 Xorg 的构建已完成。

我们安装(到默认的/usr/X11R6,因此覆盖了大多数 Xorg 6.8.2)。

$ sudo make install
$ sudo make install.man

注意

  1. 如果我们的系统上没有“sudo”工作,那么我们将使用“su”。
  2. 可以在执行安装之前退出 X11。另一种选择是在 X11 运行时覆盖大部分 X11。这可以工作,但稍微不安全一点。

如果需要,退出 X 并运行xorgcfg创建配置文件。

构建静态服务器

[编辑 | 编辑源代码]

可以修改树以仅构建静态 X 服务器。如果您需要从树的较新版本中获得更好的硬件支持,这将很有用。此外,这跳过了构建库、客户端和单独的服务器模块。(X11 协议非常稳定,因此较新的服务器可以与较旧的库和客户端一起使用。)

OpenBSD 提供了一个示例host.def。他们的示例host.def是下一个场景的基础。如果您有静态构建 X 服务器的理由,那么您将执行类似于下一个场景的操作。

场景:我们已经安装了 Xorg 6.8.2。我们需要 Xorg 6.9rc0(版本候选 0)中更好的“ati”驱动程序,但我们需要跳过大部分 6.9rc0 树以避免错误。

解决方案:我们将静态构建一个 6.9rc0 服务器。

config/cf/host.def处的树中创建此文件。如果您有一个影子树,请将其放在影子树中。该文件是

#define InstallEmptyHostDef

#define BuildServersOnly        YES

/*
 * you may also restrict the drivers that are built by editing and
 * uncommenting the line below
 */
#define XF86CardDrivers              wsfb ati

#define UsbMouseSupport                 NO
#define DoLoadableServer                NO
#define XnestServer                     NO
#define XVirtualFramebufferServer       NO
#define XprtServer                      NO
#define BuildGlxExt                     NO
#define BuildGLXLibrary                 NO
#define BuildGLULibrary                 NO
#define BuildRenderLibrary              NO
#define BuildLBX                        NO
#define BuildType1                      NO
#define BuildFreeType                   NO
#define BuildXTrueType                  NO
#define BuildSpeedo                     NO
#define BuildFonts                      NO
#define BuildXFree86ConfigTools         NO

“XF86CardDrivers”行已更改为仅指定“wsfb”和“ati”。我们的驱动程序是“ati”。我们有一个用于避免高级硬件功能的第二个驱动程序,以防“ati”让我们失望。“wsfb”驱动程序在 OpenBSD 上使用内核帧缓冲区而不是重新配置硬件。在 Linux 上,帧缓冲区驱动程序是“fbdev”。在 i386 硬件上,“vga”和“vesa”可能是不错的选择。使用以下行之一

#define XF86CardDrivers              wsfb ati
#define XF86CardDrivers              fbdev ati
#define XF86CardDrivers              vga ati
#define XF86CardDrivers              vesa ati

现在启动构建

$ make World > World.log 2>&1

构建最终会因某些“XlibConf.h”丢失而停止,因为我们的 host.def 正在跳过该步骤。(这是一个错误;Xorg 6.8.2 不需要“XlibConf.h”文件。)该文件可能是在构建 libX11 时生成的,而我们跳过了它。对于服务器,我们实际上不需要它。在xc/lib/X11/XlibConf.h:

$ touch lib/X11/XlibConf.h

处创建一个空文件。现在继续构建

$ make Everything >> World.log 2>&1

最终,构建会完成。服务器将出现在xc/programs/Xserver/Xorg处。由于此文件是静态链接的,因此它是唯一要安装的文件。我们安装在/usr/X11R6/bin/Xorg69处,以补充我们安装在/usr/X11R6:

$ cp -p programs/Xserver/Xorg /usr/X11R6/bin/Xorg69

处的 Xorg 6.8.2 安装。

$ cd /usr/X11R6/bin
$ chown root:wheel Xorg69
$ chmod a+xs Xorg69

现在我们需要测试服务器。首先,如果我们现在正在运行 X,请退出 X 到控制台。然后使我们的新服务器设置为 root,以便它可以使用视频硬件使用Xorg69 -configure生成新的配置文件,然后使用xinit -- /usr/X11R6/bin/Xorg69对其进行测试。如果它有效,请通过更改/usr/X11R6/bin/X

$ cd /usr/X11R6/bin
$ rm X
$ ln -s Xorg69 X

符号链接将 Xorg69 设置为默认服务器。

作者 · 历史 · 打印 · 许可证

简介 · 配置 · 构建 · 启动会话 · 启动程序 · 字体 · 窗口管理器 · Xt 客户端 · 政治历史 · 参考文献和链接

补充: 命令

编辑此模板

我们可能希望chmod a-x /usr/X11R6/bin/Xorg来防止任何人使用旧的“Xorg”以及依赖于“Xorg69”驱动程序的新配置文件。

启动会话

[编辑 | 编辑源代码]

本章介绍如何启动 X11 会话

  • 本章将回答以下问题
  • 启动 X11 的方法有哪些?
  • 如何启动 X11 和窗口管理器?
  • 如何控制将启动哪些窗口管理器和程序?

有没有办法使字体看起来更漂亮?

启动 X11 的方法

[编辑 | 编辑源代码]

回想一下,X11 由一个X 服务器和多个客户端组成。如果只启动 X 服务器,您将获得一个空白屏幕。需要的是一种方法来启动 X 服务器以及一些默认客户端,例如窗口管理器。

首先,一些 Unix 控制台提供纯文本登录提示。在这种情况下,首先以普通方式登录以获取您的 Unix shell,然后使用xinitstartx命令在您的 shell 中启动 X 服务器和默认客户端。

其次,一些 Unix 控制台具有图形登录提示!在这种情况下,系统启动脚本已经启动了一个 X 服务器;一个名为显示管理器的程序绘制了一个图形用户界面,让您输入用户名和密码。在这种情况下,当您登录时,您将立即开始使用 X11。

第三,某些系统正在使用非 X11 的图形环境。例如,Mac OS X 具有其本地的Quartz系统。在 Mac OS X 中,您启动X11.app程序,它是一个 X 服务器,允许 X 客户端出现在与其他 Mac 程序相同的桌面上。类似的程序存在于 Microsoft Windows(它不是 Unix 平台)中。

xinit 和 startx

[编辑 | 编辑源代码]

$ startx

有一个名为startx的程序,它可以启动 X11。它使用起来很简单这将为您提供一些默认环境。但是,如果您想自定义默认环境,使用xinit可能会更容易。startx脚本会查找几个文件(, ~/.Xresources~/.Xmodmap

,…)并加载它们;它使用的文件在每个系统上都不同,因此您可能需要阅读系统上的startx脚本以了解它做了什么。相比之下,xinit程序只启动一个 X 服务器并运行一个~/.xinitrc

脚本。不需要记住您的系统是否将其称为“.Xresources”或“.xresources”或“.xrdb”;您只需在您的“~/.xinitrc”中指定您想要的确切行为即可。

在没有 .xinitrc 的情况下使用 xinit

[编辑 | 编辑源代码]

these will work
$ xinit /usr/X11R6/bin/xterm
$ xinit $(which xterm)
this will NOT work
$ xinit xterm

如果您破坏了您的“.xinitrc”,或者还没有,那么您可以启动一个。例如

这将启动一个 X 服务器和一个名为“xterm”的程序,您可以使用它启动更多 X 客户端。最后一行失败(即使“xterm”在您的 PATH 中),因为 xinit 假设它是一个参数,而不是一个程序。您必须在程序名称中包含斜杠 /。

$ which startkde
/usr/local/bin/startkde

如果您有 KDE,则可以找到您的startkde脚本

$ xinit /usr/local/bin/startkde

然后您可以启动 KDE

这将允许您使用 Konqueror 查找您的“.xinitrc”并使用 Kate 编辑它。(浏览您的主目录时,请在“查看”菜单中选中“显示隐藏文件”。)

$ xinit
/bin/ksh: xinit: not found

如果您看到类似... 这样的消息,那么您需要将/usr/X11R6/bin

添加到您的 PATH 环境变量中。

如何编写 .xinitrc

[编辑 | 编辑源代码]如果您没有用斜杠指定程序,那么“xinit”将使用您的.xinitrc

$ xinit            # starts .xinitrc
$ xinit xterm      # passes "xterm" as argument to .xinitrc

脚本,该脚本位于您的主目录中。如果您没有用斜杠指定程序,那么“xinit”将使用您的在使用“xinit”之前,需要一个名为

$ cd               # changes current directory to home directory
$ ls -a            # list all files, including dotfiles
$ ls .xinitrc      # list the .xinitrc file
$ vi .xinitrc      # edit .xinitrc using vi
$ emacs .xinitrc   # edit it using Emacs

“.xinitrc” 只是一个 Bourne shell 脚本。您可以尝试使用 sh .xinitrc 运行它,但如果尚未启动 X 服务器,则会失败。您可以输入命令,就像在 Unix shell 中输入一样。如果您不理解,请尝试从以下示例开始。

这是一个简单的单行“.xinitrc”示例

exec startkde

“startkde” 命令启动 KDE 桌面环境。此命令不会在您退出 KDE 之前结束。通常情况下,shell 会等待 KDE 结束,然后运行下一个命令。此命令前面的 “exec” 前缀告诉 shell 这是最后一个命令,因此 shell 不需要等待运行下一个命令。“exec” 在这种情况下是可选的。

这是一个更复杂的“.xinitrc”示例

ulimit -Sn 512
/usr/bin/mixerctl monitor.master=5,5
/usr/X11R6/bin/xmodmap -e 'keycode 107 = BackSpace'
case "$#" in
0)
  exec sh /etc/X11/xinit/xinitrc
  ;;
*)
  session="$1"
  shift
  exec "$session" "$@"
 ;;
esac

# NOTREACHED
exec /usr/X11R6/bin/xterm

第一行,“ulimit -Sn 512”,是一个 Bourne shell 命令,用于将打开文件“-n”的软限制“-S”增加到 512。(使用 ulimit -a,或者如果您的 shell 不是 Bourne shell,请使用 sh -c 'ulimit -a' ,查看您的默认限制。)下一个命令,/usr/bin/mixerctl monitor.master=5,5,将 OpenBSD 或 NetBSD 系统上的声音音量设置为左右声道均为 5。在其他 Unix 系统上,命令将有所不同。还可以添加许多其他命令。

第三行,“/usr/X11R6/bin/xmodmap -e 'keycode 107 = BackSpace'”(或只是“xmodmap -e 'keycode 107 = BackSpace'”),调整键映射。对于只做少量调整的用户来说,这可能比加载 .Xmodmap 文件更容易。(您可以使用 xmodmap ~/.Xmodmap 加载这样的文件。)

其余行构成一个 Bourne Shell “case” 语句。这些处理命令行参数以启用以下内容

$ xinit gnome-session # start GNOME
$ xinit startkde,GNOME # start KDE
$ xinit fvwm,KDE# start window manager fvwm
$ xinit xtermfvwm       # start an xterm without a window manager

请注意,由于没有任何程序包含斜杠,因此它们由“.xinitrc”脚本处理,而不是直接由“xinit”处理。

示例~/.xsession:

. ~/.profile

managers=startkde,fvwm,wmaker
prompt="Welcome, $USER@$(hostname), select window manager:"

# miscellaneous setup
xmodmap -e 'keycode 107 = BackSpace'
test -f /usr/local/GNUstep/System/Makefiles/GNUstep.sh &&
        . /usr/local/GNUstep/System/Makefiles/GNUstep.sh

manager="$(xmessage -buttons "$managers" -print -center "$prompt")"
test -z "$manager" && exec fvwm
exec "$manager"

制作屏幕截图

[edit | edit source]

用于转储 X 窗口图像的标准实用程序是xwd(1),xwd 生成一个 XWD 图像。它可以通过以下方式调用

xwd -root -out root.xwd

xwd 也可以用来转储使用鼠标选择或使用-id选项后跟相应的窗口 ID 选择的单个窗口;有关更多信息,请参见man 1 xwd [1]。当远程运行时,xwd 非常有用,可以拍摄处于活动状态的模态菜单的屏幕截图。GIMP 可用于将 XWD 文件转换为其他更常见的格式,例如 PNG;或者,命令行实用程序 xwdtopnmNetpbm 实用程序套件的一部分)可用于将 XWD 文件转换为 PNM 格式,然后可以将其转换为任何常见的格式,例如使用以下 管道

xwd | xwdtopnm | pnmtopng > screendump.png

也可以使用convert实用程序(此处提供)将 XWD 图像转换为许多其他格式:convert root.xwd root.XYZ,其中 XYZ 是所需格式的典型文件名扩展名。



作者 · 历史 · 打印 · 许可证

简介 · 配置 · 构建 · 启动会话 · 启动程序 · 字体 · 窗口管理器 · Xt 客户端 · 政治历史 · 参考文献和链接

补充: 命令

编辑此模板

启动程序

[edit | edit source]

传统的 Unix 启动程序的方法是通过在命令行上输入其名称从 shell 中调用它。例如

$ emacs

在 X 窗口系统开始时,启动 X11 客户端的方法基本上相同。您始终需要打开一个 XTerm,这样您就可以输入命令打开 Emacs、Netscape 和其他 XTerm。当然,这意味着如果您关闭(或 xkill)一个 XTerm,您将“挂起”从它启动的所有程序,从而导致它们突然退出并消失。因此,您必须记住保留启动客户端的 XTerm 开启。

这种行为是前台启动程序的功能,这使得它依赖于 shell/终端窗口(xterm、rxvt 或其他)处于打开和工作状态。

要启动多个独立于 shell 窗口的窗口程序(即,在后台),在每个命令的末尾添加一个和号

$ xclock &

在 shell 之外

[edit | edit source]

一些窗口管理器添加了一个名为 minicli 的功能,用于 MINIature Command LIne。您从某些菜单中选择“运行命令”,然后键入程序的名称,例如“emacs”。这解决了仅为了启动某些程序而打开额外的 XTerm(或 Konsole 等)的问题。但是,它引入了另一个问题:某些程序将错误消息打印到终端,如果您想知道为什么程序崩溃或没有启动,则可能需要检索错误消息。解决方案是记录到某个文件,例如~/.xsession-errors,当启动您的会话时。大多数 X 的实现会自动执行此操作。

许多窗口管理器还允许从菜单启动程序。但是,不同的窗口管理器具有不同的配置方法。有些人试图找到一个解决方案,这样您就可以在不同的窗口管理器中使用相同的菜单。GNOMEKDE 桌面环境当前使用一个通用的*.desktop文件格式来表示菜单项。

KDE 通常在屏幕左下角提供一个 K 菜单。GNOME 通常在左上角提供“应用程序”之类的菜单。这两个环境都可以自定义。一些窗口管理器,如 twm 和 IceWM,允许您单击桌面背景以召唤菜单。

指定窗口几何形状

[edit | edit source]

在 X 中,通常可以通过使用 -geometry 参数指定以下值语法来轻松设置程序窗口的大小和位置——

[{WIDTH}][x{HEIGHT}][{+-}{XOFF}[{+-}{YOFF}]]
XOFF 或水平轴处理自上而下和反向方向;YOFF 或垂直轴用于从左到右和反向方向。XOFF/YOFF 前面的加号 (+) 和减号 (-) 与原点的边缘相关:+ 是距离左/上边缘的像素数;- 是距离右/下边缘的像素数。

xeyes 的示例

$ xeyes -geometry 100x100-37+50 &

—— 其中 xeyes 以 100x100 像素的大小打开,距离屏幕右侧 37 像素,距离屏幕顶部 50 像素。和号 (&) 将进程置于后台(将 xeyes 从终端中释放)。

-geometry 参数既可以在 shell 中使用,也可以在 X 菜单系统和其他窗口环境的菜单系统中使用。

注意事项

[edit | edit source]

设置窗口几何形状可能无法或不会对不识别规范的程序起作用,例如 Mozilla Firefox 和 Wine;Firefox 使用其自己的命令行设置,而 Wine 启动多个窗口,其中至少有一个窗口不是 X 的本机窗口。

虽然大多数窗口管理器和桌面环境都支持该规范,但有些可能不支持。


{{TODO|todonote=描述如何使用网络。描述 Xlib}}

作者 · 历史 · 打印 · 许可证

简介 · 配置 · 构建 · 启动会话 · 启动程序 · 字体 · 窗口管理器 · Xt 客户端 · 政治历史 · 参考文献和链接

补充: 命令

编辑此模板

字体

[edit | edit source]

当您的 X11 客户端绘制文本时,它们使用 字体,这些字体是标准字符的图画,例如字母、数字和标点符号。最起码,字体是一个 字形(也称为 ),例如 Bitstream Vera SansLuxi MonoNimbus Roman No9 Lfixed。更具体地说,字体包括大小或样式,例如 Bitstream Vera Sans Bold Italic 10 point。字体还分为三类,称为 衬线(如 Nimbus Roman No9 L)、无衬线(如 Bitstream Vera Sans)和 等宽(如 Luxi Mono 或“fixed”)。

字体有多种格式,例如位图、TrueType 和 PostScript。TrueType 字体是.ttf文件。如果 X11 服务器和客户端位于不同的计算机上,那么您可能在每台计算机上安装了不同的字体。

核心字体与 Xft 字体

[编辑 | 编辑源代码]

X11 客户端可以用多种方式绘制文本

  1. 使用原始核心 X11 协议绘制文本。使用这种方法,X11 服务器将加载并存储字体的每个字符。因此,如果 X11 服务器(带有屏幕和键盘)和 X11 客户端(带有您的 Web 浏览器或其他窗口)位于不同的计算机上,那么您必须在服务器上安装字体。服务器将字符转换为位图并直立绘制它们,这意味着您无法旋转它们。此外,服务器从不为字体提供抗锯齿功能。
  2. 使用 Xft 库和 RENDER 扩展来绘制文本。使用这种方法,X11 客户端将加载并存储字体的每个字符。您必须在客户端计算机上安装字体。客户端将字符转换为几何形状。它将形状分解为基本形状,例如三角形和梯形,然后将它们发送到服务器。服务器绘制形状并可选地提供抗锯齿功能,这将使字体的外观更平滑。您也可以旋转这些形状。
  3. 使用客户端库(例如 libart_lgpl 或 SDL_ttf)绘制文本。虽然 libart_lgpl 是一个矢量图形库,但 SDL_ttf 是一个库,用于绘制使用跨平台 Simple DirectMedia Layer 的程序的文本。通常,这些库会加载几何形状,然后将它们绘制到位图中,可能具有抗锯齿和旋转功能,然后再将它们发送到 X11 服务器,就好像 X11 服务器对文本一无所知一样。这些库也可以像 Xft 一样使用 RENDER。

第一个 X11 客户端使用核心 X11 协议来绘制文本,因为这是唯一的选择。但是,现在有几个客户端使用 Xft。由于 GTK+ 和 Qt(几个应用程序背后的工具包,包括所有 GNOME 和 KDE 应用程序)切换到 Xft,因此大多数桌面(包括 Konqueror)上的许多程序现在使用 Xft。

使用 fontconfig 配置 Xft

[编辑 | 编辑源代码]

旧版本的 Xft 1 有自己的配置方案。这里描述的版本 2 使用fontconfig 进行配置。由于 fontconfig 独立于 X11,因此存在像fc-list 这样的程序,它们列出可供 X11 程序(如 Konqueror)使用的字体,但它们本身不使用 X11。一个简单的终端命令来列出可用字体是

$ fc-list | sort | less

默认情况下/etc/fonts/fonts.conf允许您选择性地创建一个自定义文件~/.fonts.conf用于您的自定义字体设置。

一些自定义包括

  1. 您可以添加包含字体的其他目录。Fontconfig 会递归搜索目录。如果您有一个包含.ttf文件的文件夹,那么您只需将其添加到~/.fonts.conf;您不需要编写fonts.scale或任何其他此类文件用于 fontconfig。
  2. 您可以指定其他字体来搜索晦涩字符。如果您在这些引号“→”之间看不到右箭头,那么在搜索用于绘制此句子的字符时没有找到右箭头字符。实际上,与 Xorg 一起提供的 Bitstream 和 Luxi 字体以及来自 ghostscript 的 Nimbus 字体没有该字符,但来自 ghostscript 的“Standard Symbols L”字体包含一个右箭头。

但是,~/.fonts.conf使用严格的 XML 语法。您必须声明<?xml version="1.0"?>在文件开头,并且您必须将文件中的所有其他内容放在<fontconfig></fontconfig>标签之间,否则它将无法工作。

这是一个示例文件,展示了如何执行这两个自定义

<?xml version="1.0"?><fontconfig>
 <dir>/usr/local/share/ghostscript/fonts</dir>
 <alias>
  <family>sans-serif</family>
  <prefer><family>Standard Symbols L</family></prefer>
 </alias>
 <alias>
  <family>serif</family>
  <prefer>
   <family>Standard Symbols L</family>
  </prefer>
 </alias>
 <alias>
  <family>monospace</family>
  <prefer>
   <family>Standard Symbols L</family>
  </prefer>
 </alias>
</fontconfig>

添加字体目录很简单:使用<dir>/full/path</dir>。上面的示例添加了/usr/local/share/ghostscript/fonts,它在某些计算机上是 Ghostscript 字体(包括 Standard Symbols L)的位置。

将 Standard Symbols L 添加到首选字体列表中,以便我们始终能够绘制右箭头“→”,这更加困难。假设您已将 Konqueror Web 浏览器设置为使用 Luxi Serif 显示网页。然后,您加载了一些包含一些右箭头的文本。当 fontconfig 无法在 Luxi Serif 字体中找到右箭头时,它转向通用字体名称“serif”,它实际上是首选衬线字体列表的别名。

作为参考,以下是来自/etc/fonts/fonts.conf与 Xorg 6.9rc1 一起提供的。

<!--
  Provide required aliases for standard names
-->
	<alias>
		<family>serif</family>
		<prefer>
			<family>Bitstream Vera Serif</family>
			<family>Times New Roman</family>
			<family>Thorndale AMT</family>
			<family>Luxi Serif</family>
			<family>Nimbus Roman No9 L</family>
			<family>Times</family>
			<family>Frank Ruehl</family>
			<family>Kochi Mincho</family>
			<family>AR PL SungtiL GB</family>
			<family>AR PL Mingti2L Big5</family>
			<family>MS 明朝</family>
			<family>Baekmuk Batang</family>
			<family>FreeSerif</family>
		</prefer>
	</alias>
	<alias>
		<family>sans-serif</family>
		<prefer>
			<family>Bitstream Vera Sans</family>
			<family>Verdana</family>
			<family>Arial</family>
			<family>Albany AMT</family>
			<family>Luxi Sans</family>
			<family>Nimbus Sans L</family>
			<family>Helvetica</family>
			<family>Nachlieli</family>
			<family>Kochi Gothic</family>
			<family>AR PL KaitiM GB</family>
			<family>AR PL KaitiM Big5</family>
			<family>MS ゴシック</family>
			<family>Baekmuk Dotum</family>
			<family>SimSun</family>
			<family>FreeSans</family>
		</prefer>
	</alias>
	<alias>
		<family>monospace</family>
		<prefer>
			<family>Bitstream Vera Sans Mono</family>
			<family>Andale Mono</family>
			<family>Courier New</family>
			<family>Cumberland AMT</family>
			<family>Luxi Mono</family>
			<family>Nimbus Mono L</family>
			<family>Courier</family>
			<family>Miriam Mono</family>
			<family>Kochi Gothic</family>
			<family>AR PL KaitiM GB</family>
			<family>Baekmuk Dotum</family>
			<family>FreeMono</family>
		</prefer>
	</alias>

安装新字体

[编辑 | 编辑源代码]

根据您的发行版,可能存在一个万无一失的字体安装程序 - 也可能不存在。无论如何,使用简单的命令总是有效的。

要安装新字体,只需下载字体文件(例如“.ttf”文件)并将它们放到正确的目录中。对于带有 fontconfig 的 Xft,您可以安装哪些类型的字体以及在何处安装,由默认配置文件/etc/fonts/fonts.conf/etc/fonts/local.conf~/.fonts.conf中的额外配置决定。大多数发行版在/etc/fonts/fonts.conf中都有以下行

	<dir>~/.fonts</dir>

这意味着您可以在您的主目录中使用简单的用户权限安装新字体。要更新 fontconfig,您可以使用命令fc-cache

举个例子:假设您已将字体anicefont.ttf下载到您的桌面。打开您最喜欢的终端或一个简单的xterm,然后键入

cd 
mkdir .fonts
cd .fonts
cp ~/Desktop/anicefont.ttf .
fc-cache

完成。您可以使用命令fc-list检查字体是否已成功安装(例如,使用sortmore对其进行分页)并检查您的字体的名称:fc-list | sort | more

作者 · 历史 · 打印 · 许可证

简介 · 配置 · 构建 · 启动会话 · 启动程序 · 字体 · 窗口管理器 · Xt 客户端 · 政治历史 · 参考文献和链接

补充: 命令

编辑此模板

窗口管理器

[编辑 | 编辑源代码]

窗口管理器是一个程序,它绘制窗口周围的框架,并允许用户移动、调整大小、最小化以及以其他方式管理窗口。与其他一些窗口环境不同,您可以为 X11 找到许多窗口管理器。

窗口管理器的功能和设施

在没有窗口管理器的情况下使用 X11

[编辑 | 编辑源代码]

您也可以在没有窗口管理器的情况下使用 X11。通常,您会编写一个会话脚本,该脚本在“xterm”上以“-geometry”位置启动。基于键盘的用户可以启动一个键盘快捷键守护程序,例如 xbindkeys,并通过 Xresources 几何提示或使用 xdotool 之类的工具来管理窗口。

请参阅http://github.com/patrickhaller/no-wm上的资源

0-9、a、b、c

[编辑 | 编辑源代码]
  • 2wm Anselm Garbe 编写的立体窗口管理器的初始版本。
  • 3dwm 3D 工作空间管理器是 Niklas Elmqvist 和 Robert Karlsson 开发的一个合成窗口管理器。
  • 4dwm 通常在运行 IRIX 的硅图形工作站上使用的窗口管理器
  • 9wm Plan 9 窗口管理器的模拟
  • aegis 一个用 C++ 编写的可脚本化的窗口管理器(正在开发中)
  • aewm 一个用 C 编写的最小的 X 窗口管理器
  • aewm++ 基于aewm,但用 C++ 重写
  • afterstep 一个堆叠窗口管理器是 BowMan 窗口管理器的延续... 基于fvwm
  • ahwm Alex Hioureanu 开发的一个小型堆叠窗口管理器
  • alloywm 基于 aewm 的堆叠式窗口管理器
  • alptwm 基于 dwm 的一个小而快的窗口管理器
  • amaterus 一个基于 GTK+堆叠式 窗口管理器
  • amiwm 一个试图让您的显示看起来和感觉像 Amiga Workbench 的 X11 窗口管理器
  • anarchy 一个用 Scheme 写的轻量级窗口管理器
  • antico 一个基于 Qt 库的快速简单窗口管理器
  • antiwm 一个最小的全屏键盘驱动窗口管理器
  • asclassic 一个基于 afterstep 的经典窗口管理器
  • awesome 一个高度可配置的下一代 动态 窗口管理器,主要面向高级用户和开发人员
  • awm Ardent 窗口管理器是 X 窗口系统的早期窗口管理器。
  • azalea 一个基于 gnustep 的窗口管理器,基于 openbox3
  • badwm 一个基于 evilwm 的窗口管理器
  • beryl 一个 Xgl 加速的遗留合成窗口管理器,后来与 compiz 合并
  • blackbox 一个小型快速高效的堆叠式窗口管理器,具有易于使用的菜单。
  • bluetile 一个动态窗口管理器
  • blwm FreeBSD: "qvwm 的葡萄牙语衍生物,简化以节省资源"
  • braintop
  • bspwm 一个使用树状间距的替代窗口管理器,更改由 bspc shell 命令触发。
  • calmwm
  • clementine FreeBSD: "有标题栏、图标化和样式(不稳定)"
  • clfswm
  • compiz Xgl 加速的令人惊叹的模块化窗口管理器,它匹配 Apple 的 Expose,使用立方体作为四个桌面,并添加了像窗口淡出、透明 alt-tab 窗口选择和在高速拖动时窗口扭曲这样的整洁效果。安装后,查找快捷键。
  • ctwm - Claude 的标签式窗口管理器是 twm 的扩展,它提供了多个桌面支持和其他功能
  • cwm 包含在 OpenBSD 中。优秀的代码库,非常小的系统需求。OpenBSD: "cwm 具有几个新颖的功能,包括搜索窗口的能力。它具有非常简单和有吸引力的美观。”

d、e、f、g

[编辑 | 编辑源代码]
  • dtwm - CDE 窗口管理器
  • dwemo
  • dwm - 动态窗口管理器
  • dxwm - DECwindows 工作站上使用的窗口管理器
  • e16
  • e17
  • echinus
  • eclipse
  • ecomorph
  • ede 包含一个窗口管理器,FreeBSD: "Equinox 桌面环境"
  • efsane
  • enlightenment 图形效果比较多,OpenBSD: "Enlightenment 不仅仅是管理窗口,它提供了一个有用的、好看的图形外壳来工作。”
  • epiwm FreeBSD: "另一个快速、小巧、可配置的窗口管理器"
  • euclidwm 一个极简主义的平铺式窗口管理器
  • evilpoison
  • evilwm X 窗口系统的一个轻量级极简主义窗口管理器
  • expocity FreeBSD: "一个具有 Expose(tm) 类似功能的 metacity 分支"
  • exwm Emacs 的一个功能齐全的平铺式 X 窗口管理器
  • failsafewm
  • firebox
  • fluxbox — "看起来像 blackbox 并且处理样式、颜色、窗口放置和类似的东西与 blackbox 完全相同(100% 主题/样式兼容)" http://fluxbox.org/ (包大小:681 KiB,加上它的依赖项 (OpenBSD 4.1))
  • flwm 一个利用 FLTK 工具包的轻量级窗口管理器。
  • framer
  • fvwm F 虚拟窗口管理器 (F 的含义不确定),twm 的衍生物,外观漂亮,虚拟桌面,但文本配置文件晦涩难懂
  • fvwm2 fvwm 的一个更新版本,OpenBSD: "Fvwm... 提供了一个虚拟/多个不重叠的桌面,窗口装饰的 3D 外观,形状/彩色图标.... 一个漂亮的按钮栏可用于提供对常用功能或程序的便捷访问。”
  • fvwm95 感觉像 Windows 95 (类似于 fvwm2 的 AnotherLevel),OpenBSD: "它试图模拟知名产品的好功能,而不会使常规 fvwm 代码膨胀。”
  • fxwm
  • golem OpenBSD: "设计目标是它快速轻便,以及可以以任何不会阻止第一个目标实现的方式进行自定义。”
  • gwm 一个具有内置 Lisp 解释器 (来自 Bull) 的通用窗口管理器
  • gwml

h、i、j、k、l、m、n、o

[编辑 | 编辑源代码]
  • HackedBox FreeBSD: "Hackedbox 是一个基于 Blackbox 的小型快速窗口管理器"
  • haze
  • heliwm 一款内存占用极小的紧凑型窗口管理器
  • hpwm 惠普的这款窗口管理器提供3D外观
  • i3
  • icewm 一款小型窗口管理器,可以通过编辑文本文件或使用第三方工具进行配置,OpenBSD:“为“感觉”和速度而优化,而不是外观。具有多个工作区、不透明的移动/调整大小、任务栏、窗口列表、时钟、邮箱、CPU、网络、APM 状态。”
  • integrity
  • interfacewm
  • ion OpenBSD:“Ion 是一种新型的窗口管理器,它为窗口管理带来了类似文本编辑器、键盘友好的用户界面。Ion 只将屏幕划分为占用整个屏幕的框架。”
  • ion2
  • ion3
  • jwm Linux:“Joe 的窗口管理器”。http://joewing.net/programs/jwm/ 用在 Puppy Linux 中。
  • kahakai 一款支持脚本语言的窗口管理器(基于"waimea"
  • karmen 一款简单轻量级的窗口管理器,除了xlib之外没有其他依赖项
  • kwin KDE 的窗口管理器(以前称为 kwm
  • larswm FreeBSD:“X 的平铺式窗口管理器”
  • lucca
  • luminosity
  • /lunchbox
  • lwm FreeBSD:“一个轻量级的窗口管理器”
  • maewm
  • matchbox FreeBSD:“适用于低分辨率屏幕的窗口管理器”
  • mavosxwm 一款处于早期开发阶段的最小化堆叠 窗口管理器
  • MaXX Interactive Desktop;以前称为“5dwm”。
  • metacity 一个常用的 GNOME 窗口管理器
  • miwm 用 C++ 编写的微型窗口管理器
  • mlvwm FreeBSD:“X11 的类似 Macintosh 的窗口管理器”
  • monkeywm
  • mosquito
  • mpwm
  • mswm
  • multicursorwm
  • musca
  • mutter
  • mvwm
  • mwm Motif Window Manager 与 Motif 或 OpenMotif 一起提供,也与商业 Common Desktop Environment (CDE) 一起提供
  • ncdwm
  • novawm FreeBSD:“为 X 开发的窗口管理器,在速度、大小和风格方面都经过精心设计”
  • olvwm - OPEN LOOK 虚拟窗口管理器为 olwm 添加了虚拟窗口
  • olwm - Sun Microsystems 为 OpenWindows 提供的 OPEN LOOK 窗口管理器
  • omegawm
  • openbox OpenBSD:“Openbox 是一款符合标准、快速、轻量级、可扩展的窗口管理器。”
  • orion FreeBSD:“用 Scheme 编写的 X11 窗口管理器”
  • oroborox
  • oroborus OpenBSD:“Oroborus 是一款非常简化的 X11 窗口管理器。它提供良好的默认键绑定、全键盘控制(除了鼠标之外!),...”
  • oswm

p, q, r, s, t

[edit | edit source]
  • parti
  • pawm FreeBSD:“Puto Amo 窗口管理器”
  • pekwm OpenBSD:“Pekwm 是 aewm++ 的一个分支,它包含了新功能,例如窗口分组(类似于 fluxbox/pwm)可配置的按键捕获器、Xinerama 支持、像素图主题和可配置的按钮。”
  • perlwm
  • phluid
  • piewm OpenBSD:“这是 piewm,一个带有“饼图”(即圆形)菜单的 tvtwm。”
  • plwm
  • plpwm
  • pmwm
  • pswm Sun Microsystems 的 PostScript 窗口管理器
  • puppet 一款键盘驱动的窗口管理器,没有窗口装饰。用Java 编写
  • pwm OpenBSD:“PWM 是一款轻量级的 X11 窗口管理器,重点在于易用性。它是第一个实现“选项卡式框架”的窗口管理器。”
  • pwm2
  • pycawm
  • pywm PyWM 小巧、快速且可扩展,使用 Python。它基于flwmhttp://www.freenet.org.nz/python/pywm/
  • qlwm
  • qtile
  • qlwm OpenBSD:“一款利用 qt 保持小巧且易于维护的窗口管理器。”
  • quarkwm
  • qvwm OpenBSD:“Qvwm 是一款类似 Windows 95/98/NT 的窗口管理器...”
  • ratpoison 类似于 GNU screen,一款不喜欢鼠标的平铺式窗口管理器(参见 Wikibook Using Ratpoison
  • rox
  • rtl 西门子使用的平铺式 窗口管理器
  • sapphire FreeBSD:“小型窗口管理器”
  • sawfish 一款高效且可配置的窗口管理器,曾经是 GNOME 的默认管理器,OpenBSD:“Sawfish 是一款可扩展的窗口管理器,使用基于 Lisp 的脚本语言。”
  • scrotwm
  • scwm Scheme 约束窗口管理器
  • sigmawm Sigma 窗口管理器
  • sithwm 一款基于evilwm 的极简主义窗口管理器,带有菜单和多个桌面
  • skatoswm
  • smallwm FreeBSD:“适用于低内存系统的窗口管理器,带有标题栏和阴影” http://www.small-window-manager.de/
  • spookwm
  • stumpwm 旨在成为 ratpoison 的继任者。用 Common Lisp 编写,从头开始设计,以便能够定制。
  • subtle 是一款另一个平铺式窗口管理器,具有非常灵活和动态的布局,支持窗口标记、鼠标和键盘控制以及可扩展的状态栏。 http://subforge.org/projects/subtle
  • sugar
  • swm Solbourne 窗口管理器
  • talwm
  • tecwm
  • tinywm FreeBSD:“荒谬的小型窗口管理器”
  • toyd
  • treewm OpenBSD:“从 README 中摘录:... 除了用户可以创建的客户端窗口之外,还可以创建桌面,这些桌面本身可以包含窗口和桌面。”
  • tritium
  • trswm
  • tsubasa
  • tvtwm OpenBSD:“tvtwm 是 twm 的一个版本,它结合了虚拟桌面,类似于 vtwm 和 swm。”
  • twindy
  • twm 与 X11 一起提供的 Tab Window Manager

u, v, w, x, y, z

[edit | edit source]
  • UDE 是一款具有独特设计(习惯它)的窗口管理器,由“Unix 桌面环境”项目开发 http://udeproject.sourceforge.net/
  • ultimate 窗口管理器
  • universalwm 是一款过时的窗口管理器,但由于其速度快,因此仍然很流行。
  • unwimp
  • uwm Ultrix 窗口管理器
  • vtwm FreeBSD: “带有虚拟桌面的 Twm,并提供可选的 Motif 风格功能”
  • vuewm
  • w9wm FreeBSD: “对 9wm 进行了一些修改,使其能够提供虚拟屏幕”
  • waimea OpenBSD: “它使用 Blackbox 图像渲染引擎(支持 Blackbox 样式)并且可以使用 Xft 库进行字体渲染(支持抗锯齿字体)。”
  • weewm FreeBSD: “速度快且超轻量级的窗口管理器,可以完全通过键盘控制”
  • whim 是一款用 tcl 编写的 多桌面 窗口管理器
  • whimsy
  • wimpwm
  • windowlab FreeBSD: “一款用于 X11 的小型窗口管理器”
  • windowmaker 是一款类似 NextStep 的窗口管理器,它与 GNUstep 配合得很好,并且拥有可配置的主题。
  • wm 是一款简单的标题栏窗口管理器
  • wm2 是一款非常简化的、小型、快速的窗口管理器
  • wmaker
  • wmfs 是一款 平铺式 窗口管理器
  • wmg FreeBSD: “一款基于 GTK 的小型 GNOME 兼容窗口管理器”
  • wmi OpenBSD: “WMI……试图将 LarsWM、Ion、evilwm 和 ratpoison 的最佳功能整合到一个窗口管理器中……。WMI 是窗口管理器中的 vim……”
  • wmii FreeBSD: “下一代 WMI 窗口管理器”
  • wmx OpenBSD: “它基于 wm2……但取代了 wm2 的最小功能,它以最简单的实现方式提供了许多传统管理器的功能。”
  • wwm 奇怪的窗口管理器
  • xcompmgr
  • xd640 是一款 堆叠式 窗口管理器
  • xdswm
  • xfce-wm 是名为 XFCE(无胆固醇桌面环境,它还包含一个工具栏和文件管理器,并且使用的系统资源比 GNOME 或 KDE 少)的桌面环境的一部分,FreeBSD: “XFce 4 窗口管理器”
  • xige xilicius 桌面环境
  • xfwm 是一款 合成 窗口管理器
  • xmonad 是一款用于 X 的平铺式窗口管理器。 窗口会自动排列成平铺式布局,没有间隙或重叠,最大限度地利用屏幕空间。 http://xmonad.org
  • xpwm
  • xswm
  • xwem
  • xwm
  • yawm FreeBSD: “具有标题栏、图标化、最大化、任务栏、放置、时钟”
  • yeahwm 是一款 堆叠式 窗口管理器
  • zwm 用 C++ 编写,并根据 GNU 通用公共许可证提供

作者 · 历史 · 打印 · 许可证

简介 · 配置 · 构建 · 启动会话 · 启动程序 · 字体 · 窗口管理器 · Xt 客户端 · 政治历史 · 参考文献和链接

补充: 命令

编辑此模板

Xt 客户端

[edit | edit source]
来自 “xman” 的窗口包含三个矩形按钮。 每个按钮都是使用 X Toolkit Intrinsics 的一个部件。

一些 X 客户端是 Xt 客户端,也就是说它们使用 X Toolkit Intrinsics。 这是一个将窗口划分为称为 部件 的较小窗口的机制,例如按钮和菜单。 可以使用 X 资源来配置这些部件。

例如,典型的 “xterm” 窗口包含一个滚动条和终端的模拟屏幕。 用于查看手册页的 “xman” 程序在它的小型主屏幕上包含三个部件的按钮。 通过使用 “手册页” 按钮,你会获得一个更大的窗口,其中包含几个部件:菜单按钮、一个滚动条和一个包含手册页的文本框。

但是,GTK+ 和 Qt 等库的开发人员已决定不使用这些内在机制。 因此,GTK+ 和 Qt 程序不可用 X 资源。

Clipboard

待办事项
他们为什么这样做? 替代机制?


X 资源 是以特定语法写入文本文件中的设置,然后使用 xrdb 加载。

要设置 X 资源,你需要将它们放在一些文本文件中,例如这将为您提供一些默认环境。但是,如果您想自定义默认环境,使用xinit可能会更容易。startx脚本会查找几个文件(然后使用以下命令加载它:

$ xrdb -merge ~/.Xresources

“XTerm.resource” 和 “xterm.resource” 之间存在区别。

如果你想让一个 xterm 使用 “GameTerm.resource” 资源而不是 “XTerm.resource” 资源,你应该使用以下命令启动它:

$ xterm -class GameTerm

使用标准输入的 xrdb

[edit | edit source]

你也可以使用标准输入来输入资源。

xterm

[edit | edit source]
Clipboard

待办事项


xterm 具有菜单。 你必须按住 Control 键并使用鼠标按钮 1、2 或 3 点击。


作者 · 历史 · 打印 · 许可证

简介 · 配置 · 构建 · 启动会话 · 启动程序 · 字体 · 窗口管理器 · Xt 客户端 · 政治历史 · 参考文献和链接

补充: 命令

编辑此模板

政治历史

[edit | edit source]
本节需要检查其准确性和细节。

X 共有 10 个版本,对应于客户端和服务器之间 10 个版本的协议。 然后出现了第 11 个版本,即 X11。 该版本保持了大量的添加内容,并一直使用到今天。

X11 规范和参考实现的控制权在多个组织之间传递:MIT X Consortium、X Consortium、Open Group 和 X.org。 操作系统供应商(主要是 Unix 和 VMS)会获取参考实现,对其进行修改,添加适用于其操作系统的 X 服务器,然后授予修改后的版本非自由许可证。 这些非自由版本会部署到服务器和工作站上。

XFree86

[edit | edit source]

随着带有廉价 Intel 386 处理器的家用电脑(在 Microsoft DOS 和 Windows 的帮助下)的普及,用于它们的廉价或免费的 Unix 实现(Minix、Xenix、Linux、FreeBSD、NetBSD)也开始普及。 因此,Thomas Roell 和 Snitily Graphics Consulting Service 创建了 X386 服务器并将其捐赠给了 X11R5,即参考实现的 X 版本 11 第 5 版。 从那时起,XFree86 推出了带有自由许可证的 X11 实现,因此名称中包含 “Free”。 最终,XFree86 将端口添加到了 Alpha、PowerPC 和 SPARC 上。 XFree86 扩展到了多个免费和商业 Unix 变体,包括 Mac OS X 和 Cygwin。

窗口管理器和部件

[编辑 | 编辑源代码]

与此同时,随着 X11 的普及,一些人为此编写了软件,包括窗口管理器。参考实现包含“twm”,一个简单的窗口管理器。一些人通过修改 twm 或从头开始编写了窗口管理器。其中许多窗口管理器,例如 fvwm、afterstep 和 windowmaker,都拥有免费许可证。这些许可证与 X11 或 XFree86 分开分发和维护。一些 Linux 发行版提供了其中一些许可证。

参考实现还包含 Xt(X 工具包)框架和使用该工具包的 Xaw(雅典娜)部件。Xaw 使用的原始黑白按钮、滚动条和菜单让 Macintosh 和 Windows 用户感到不满意。因此,一些人制作了 Xaw3d 等变体,并将其作为 X11 的补丁分发。另一些人则拒绝 Xt 并制作了自己的部件,创建了 FOX、FLTK、GTK+ 和 Qt 等工具包。OpenOffice.org 仍然使用自己的部件。

Motif 和 CDE

[编辑 | 编辑源代码]

开放组的 OS 供应商共同努力创建了 Motif 窗口管理器和部件工具包。在此基础上,供应商们又创建了通用桌面环境。虽然 Motif 和 CDE 出现在一些商业 OS 发行版中,但它们拥有非自由许可证,因此许多 Linux 和 *BSD 用户都避开了它们。随着 Linux 和 XFree86 的发展,Motif 和 CDE 逐渐衰落。

GNOME 和 KDE

[编辑 | 编辑源代码]

基于 Qt 部件工具包的 K 桌面环境和基于 GTK+ 部件工具包的 GNU 网络对象模型环境成为 Motif 和 CDE 的免费替代方案。GNOME 和 KDE 开发人员鼓励改进 XFree86,并通过 http://www.freedesktop.org 进行了合作。最终,XFree86 和 freedesktop.org 取代了 x.org,成为 X11 开发的主体。

其他工具包和窗口管理器也注意到了 freedesktop.org,并继续与 GNOME 和 KDE 竞争。

许可证危机和分叉

[编辑 | 编辑源代码]

开放组停止了 X11 参考实现的免费许可。他们后来重新引入了免费许可,但大多数 X11 开发已经转移到 XFree86,而 XFree86 在很长一段时间内一直保持免费。

在 2004 年 2 月,XFree86 项目在 XFree86 4.4.0 中采用了从 MIT 许可证到 XFree86 许可证 1.1 的许可证变更,该许可证包含与原始 BSD 许可证类似的版权声明,自由软件基金会认为该声明与 GPLv2 不兼容。

这种许可证变更在 XFree86 核心开发者之间引起了争议,并促使大多数 Linux 发行版和 OpenBSD 抛弃 XFree86,转而使用一个分叉版本。最终,**X.Org 服务器**成为了 X11 的官方参考实现。**X.Org** 的第一个版本,X11R6.7.0,从 XFree86 4.4 RC2 版本分叉出来,以避免 XFree86 许可证变更,同时合并了 X11R6.6 的变更。

大多数开源类 Unix 操作系统都采用了 X.Org 服务器,取代了 XFree86,而且大多数 XFree86 开发者都迁移到了 X.Org。

虽然有多种桌面环境和窗口管理器导致了碎片化,但来自不同开发者和用户社区的 X 服务器和客户端能够很好地协同工作。X.Org 内部的开发工作稳定,并且桌面发行版之间对 X.Org 的使用依然牢固。

桌面和窗口环境之间的碎片化并非一定是坏事,因为它可以让用户拥有更多选择,并根据不同的使用场景和不同的需求进行调整。

在某些用例中,X 已经被 Wayland 取代,Wayland 被用于 Sailfish 和 Tizen 移动操作系统以及 Hawaii 桌面环境。Wayland 在 GNOME、KWin(KDE)、Enlightenment 和 Mate 桌面环境以及 Fedora 发行版中也获得了初步支持。

参考资料

[编辑 | 编辑源代码]

作者 · 历史 · 打印 · 许可证

简介 · 配置 · 构建 · 启动会话 · 启动程序 · 字体 · 窗口管理器 · Xt 客户端 · 政治历史 · 参考文献和链接

补充: 命令

编辑此模板

[编辑 | 编辑源代码]

其他维基教科书

[编辑 | 编辑源代码]
[编辑 | 编辑源代码]
华夏公益教科书