X Window 系统
X Window 系统 为在 Linux 下运行的图形用户界面 (GUI) 应用程序提供窗口、图形显示和设备管理服务。X 服务器 是 X Window 系统的标准实现,并在 L4T 中受支持。
官方 X Window 系统文档可在 X.Org 基金会的
X.Org 文档 页面上找到。
目前默认情况下未启用 lightdm 或 gdm3 服务。因此,您必须手动启动 X 服务器。这与以前的版本不同,在以前的版本中,您可以手动启动 X 服务器,也可以使其在由 lightdm 或 gdm3 启动的 Ubuntu 根文件系统上默认运行。
手动启动 X 服务器
启动 X 服务器
注意 | 您可以在启动服务器之前在 xorg.conf 中定义显示配置。服务器启动后,使用 xrandr 设置运行时配置。有关更多信息,请参阅 使用 xrandr 进行运行时配置。 |
输入此命令
$ sudo -b X -ac -noreset -nolisten tcp
命令行参数可能因平台而异。
停止 X 服务器
要获取 X 服务器的 PID,请输入此命令
$ ps auX | grep “X”
然后输入此命令
$ sudo kill <pid>
运行时配置
X 服务器提供多种机制来设置配置和运行时参数
• 命令行选项
• 环境变量
• 配置文件 xorg.conf 和 xorg.conf.d
• 自动检测
• 回退默认值
L4T 提供了用于更改配置和运行时参数的实用程序
• xrandr:用于设置显示属性的标准 X 服务器实用程序
• nvidia-xconfig:一个 NVIDIA 工具,用于协助配置 xorg.conf
注意 | 支持 HDMI™ 显示器热插拔的客户必须实现一个 X11 客户端,该客户端在收到 RRScreenChangeNotify X11 事件后重新配置 HDMI 显示器。通常,gnome-settings-daemon 会执行此操作。 此解决方案是解决 X11 对热插拔 HDMI 显示器的响应所必需的。X11 将 HDMI 输出注册为已连接,但不执行自动模式设置。 |
使用 xrandr 进行运行时配置
NVIDIA® Jetson™ X 驱动程序支持 XRandR 1.2(X11 旋转和调整大小)扩展。此扩展允许动态启用、调整大小、定位和定向显示器。使用 xrandr 命令行实用程序,您可以控制 XRandR。该实用程序包含在 x11-xserver-utils 软件包中。drive-setup.sh 安装脚本会安装该软件包。
查询支持的显示器和屏幕分辨率
您可以使用 xrandr 获取有关支持的显示器和屏幕分辨率的信息。
查询连接的显示器并检测可用模式
• 在 X 服务器运行时,输入此命令
$ xrandr
输出类似于以下内容
Screen 0: minimum 8 X 8, current 2560 X 1600, maximum 16384 X 16384
DP-0 connected primary 2560x1600+0+0 (normal left inverted right X axis y axis) 220mm X 140mm
2560x1600 60.0*+
HDMI-0 disconnected (normal left inverted right X axis y axis)
获取更多帮助
xrandr 实用程序提供了一个帮助菜单,其中列出了所有支持的选项,并提供了有关其使用的指南。
获取更多帮助并查看所有可用选项
• 输入此命令
$ xrandr --help
修改静态配置(可选)
最小的 xorg.conf 安装在 target 中的此位置
/etc/X11/xorg.conf
此外,*.conf 片段文件的目录位于以下位置
/etc/X11/xorg.conf.d/
/usr/share/X11/xorg.conf.d/
默认情况下,xorg.conf 不包含屏幕分辨率、虚拟桌面大小、位深和显示器选择的特定设置,而是查询 X 驱动程序以获取基于已启用显示器的最佳设置。Jetson X 驱动程序的默认设置,以及运行时 xrandr 命令和 X 服务器命令行参数,旨在满足大多数需求。如果它们不足以满足需求,您可以配置屏幕分辨率、位深和显示器启用的适当设置以创建自定义默认值。您仍然可以使用 xrandr 进行运行时操作。
注意 | NVIDIA 建议您使用 nvidia-xconfig 工具编辑 xorg.conf 文件,而不是手动编辑。但在某些情况下,您可能必须手动编辑。 |
使用 nvidia-xconfig 配置 xorg.conf
NVIDIA X 服务器配置工具 nvidia-xconfig 简化了修改 xorg.conf 文件的任务。它会解析文件,保存备份,并根据您选择的命令行选项修改配置。
获取 nvidia-xconfig 帮助
nvidia-xconfig 工具提供基本和高级帮助。
获取 nvidia-xconfig 帮助
• 要获取有关该工具的基本信息,请输入命令
$ nvidia-xconfig --help
• 要获取有关修改 xorg.conf 的选项的信息,请输入
$ nvidia-xconfig --advanced-help
为显示器指定自定义 EDID
EDID(扩展显示标识数据)是显示器中数据的集合,其中列出了其操作模式(分辨率、刷新率等)。
如果 X11 无法识别特定型号显示器的模式列表,则可能是因为该显示器具有无效的 EDID。在这种情况下,X 驱动程序无法准确确定显示器的功能。您可以使用 nvidia-xconfig 指定有效的 EDID 来纠正此问题。
为显示器指定自定义 EDID
• 输入此命令
$ nvidia-xconfig --custom-edid=HDMI-<n>:<path>
其中
• <n> 是为其定义自定义 EDID 的 HDMI 显示器的索引。第一个 HDMI 显示器为 0,第二个为 1,依此类推。
• <path> 是包含自定义 EDID 的文件的完整路径。此文件的文件类型通常为 .bin。
设置颜色位深
您可以使用 nvidia-xconfig 在 xorg.conf 文件中设置颜色位深。这使得 X11 以指定的颜色位深启动。
设置颜色位深
• 输入此命令
$ nvidia-xconfig --depth=<depth>
其中 <depth> 是以下支持的颜色位深值之一:8、15、16、24 和 30。
例如
$ nvidia-xconfig --depth=16
指定模式
使用 nvidia-xconfig 在 xorg.conf 中设置显示器的显示模式(分辨率)。
将模式添加到模式列表
• 在终端窗口中,输入
$ nvidia-xconfig -mode=<mode>
其中 <mode> 是以 X 和 Y 像素表示的显示模式。例如
$ nvidia-xconfig -mode="1024x768"
如果系统有多个显示器。您必须指定要更改其模式列表的显示器。输入 nvidia-xconfig ‑‑help 以获取信息。
启用调试模式
您可以使用 nvidia-xconfig 在 xorg.conf 文件中启用调试模式。启用调试模式后,X 驱动程序会在 X 服务器日志文件中记录有关模式验证的详细信息。您可以使用此信息来解决模式数据库问题。
启用调试模式
• 输入此命令
$ nvidia-xconfig -mode-debug
禁用调试模式
• 输入此命令
$ nvidia-xconfig -no-mode-debug
多显示器 X 服务器布局
服务器布局 是指连接到 X 服务器的显示器数量、每个显示器出现在哪个 X 屏幕上以及每个显示器在其 X 屏幕上的位置。例如,服务器布局可能指定有两个显示器,都映射到一个 X 屏幕,并且显示器 1 在 X 屏幕上位于显示器 0 的右侧。
对于单显示器系统,默认服务器布局就足够了。对于多显示器系统,您必须定义自己的服务器布局。NVIDIA X 服务器当前仅支持映射到多个显示器的单个 X 屏幕(单个虚拟桌面)。
默认配置将 X 屏幕的不同部分映射到每个显示器。您还可以配置镜像布局,该布局将桌面或桌面的同一部分映射到多个显示器。X 屏幕的大小是覆盖映射到已启用显示器的所有部分的最小矩形。
启用一个 X 屏幕(跨越的默认设置)
• 输入此命令
$ nvidia-xconfig -only-one-x-screen
这是一个并排布局的单 X 屏幕配置的图示
此 xrandr 命令指定了上面显示的布局
$ xrandr --output HDMI-0 --mode 1920x1080 --output DP-0 --mode 1280x1024 --right-of HDMI-0
启用屏幕镜像
• 输入此命令
$ nvidia-xconfig --metamode-orientation=clone
启用屏幕跨越
• 输入此命令
$ nvidia-xconfig --metamode-orientation=<value>
其中 <value> 指定显示器 n+1 在 X 屏幕上相对于显示器 n 的位置
• RightOf(默认值)
• LeftOf
• Above
• Below
需要编辑 xorg.conf 的配置
本节介绍配置更改,您必须使用文本编辑器修改配置文件才能进行这些更改,例如启用屏幕保护功能、EDID 轮询、混合和视频叠加。
启用屏幕保护功能
默认情况下,用于屏幕消隐以及挂起和禁用显示器的 X11 功能均已禁用。您可以通过编辑以下配置文件来启用这些功能:
/etc/X11/xorg.conf.d/disable_screensaver.conf
配置 EDID 轮询和原生分辨率
X 驱动程序可以轮询 EDID 模式并使用每个显示器的原生分辨率(通常是其最高分辨率),而不是静态设置配置文件中使用的分辨率。
EDID 轮询在 Jetson X 驱动程序中始终启用。默认情况下,它仅检测 EDID 模式(显示器本身报告的模式)。您可以按照
指定模式。 中所述定义其他模式。删除添加的模式以仅使用 EDID 报告的模式。
启用混合和视频叠加
TegraOverlayPriority 是一个 .conf 文件设置,用于控制叠加堆叠顺序。其范围为 0 到 255(含),默认值为 255。较大的数字表示更大的深度;因此,优先级为 0 的叠加层位于所有其他叠加层的前面,而 255 则位于所有其他叠加层的后面。当显示器上仅存在一个叠加层时,该值没有意义。
TegraOverlayBlendmode 确定在扫描输出期间如何将 X 叠加层与其后面的另一个叠加层组合。可能的模式有
• Opaque(默认)
• SourceAlphaBlend
• PremultSourceAlphaBlend
仅当外部进程创建了位于 X 服务器后面的显示器时,此值才有意义。
设置混合和视频叠加属性
• 在 xorg.conf 的 Device 部分中,添加以下形式的设置
Option "MetaModes" "<mode_name> { <property> = <value>,... <setting> = <value> }"
其中
• <mode_name> 指定要设置其叠加属性的模式的名称。如果未指定 <mode_name>,则默认为 nvidia-auto-select。
• <property> 是模式属性的名称,<value> 是其新值。
这是一个完整设置的示例
Option "MetaModes" "nvidia-auto-select { TegraOverlayBlendmode = PremultSourceAlphaBlend, TegraOverlayPriority = 0 }"
这些属性是按输出定义的,也可以在运行时通过 xrandr 查询和修改。要在多显示器系统中指定特定显示器,请使用 ‑‑output 选项。有关更多信息,请输入命令 xrandr ‑q。
查询混合和视频叠加值
• 输入此命令
$ xrandr --prop
修改混合和视频叠加属性
• 输入以下命令
$ xrandr --output HDMI-0 --set TegraOverlayPriority 0
$ xrandr --output HDMI-0 --set TegraOverlayBlendmode PremultSourceAlphaBlend
注意 | X 窗口系统不支持 alpha 混合,因此在启用的显示器上的所有 alpha 混合都必须通过 OpenGL ES 渲染完成。对于原生渲染像素的 Alpha 混合是未定义的。 |