Linux命令-xlsatoms(列出 X11 内部原子)

发布时间:2026/8/24 19:55:21
Linux命令-xlsatoms(列出 X11 内部原子) Linux命令-xlsatoms列出 X11 内部原子 简介 语法⚙️ 选项 示例示例 1列出 Atom 并理解其分类示例 2按名称搜索特定 Atom示例 3按 ID 范围查询 Atom示例 4X11 剪贴板调试实战示例 5Atom 在 X11 编程中的应用⚠️ 注意 相关命令 总结快速参考xlsatoms是列出 X11 服务器内部原子Atom的工具。Atom 是 X11 协议中的命名整数常量用于高效地在客户端和服务器之间传递属性名、协议类型和选择标识。xlsatoms是 X11 调试和开发的重要辅助命令。Atom 是 X11 协议的性能优化机制——用整数 ID 替代字符串比较。理解 Atom 对于X11 应用开发、剪贴板调试、窗口管理器配置非常有用。 简介在 X11 系统中客户端频繁需要引用字符串标识符如属性名_NET_WM_NAME、剪贴板类型CLIPBOARD、拖放协议XdndSelection。如果每次都用字符串比较效率极低。X 服务器内部将每个首次出现的字符串注册为一个唯一的整数 ID——这就是Atom。xlsatoms让你查看当前 X 服务器中注册了哪些 Atom。这对以下场景特别有用调试 X11 应用检查某个属性名是否已注册理解剪贴板机制查看PRIMARY、CLIPBOARD、TARGETS等选择 Atom窗口管理器开发了解_NET_WM_*系列扩展窗口属性X11 安全审计检查异常的 Atom 注册安装方式# Debian/Ubuntu$sudoapt-getinstallx11-utils# RHEL/CentOS/Fedora$sudoyuminstallxorg-x11-utils# RHEL 7$sudodnfinstallxorg-x11-utils# Fedora / RHEL 8# 验证安装$whichxlsatoms /usr/bin/xlsatoms 语法xlsatoms[选项][模式]⚙️ 选项选项说明-display 显示器指定 X 显示器默认$DISPLAY如:0-format 格式输出格式%d十进制 Atom ID%x十六进制%sAtom 名称-name 名称列出指定名称的 Atom-range 起始[-结束]列出指定 ID 范围的 Atom如-range 1-100 示例示例 1列出 Atom 并理解其分类# 列出所有 Atom数量可能很多通常数百个$ xlsatoms|head-201PRIMARY2SECONDARY3ARC4ATOM5BITMAP6CARDINAL7COLORMAP8CURSOR9CUT_BUFFER010CUT_BUFFER111CUT_BUFFER212CUT_BUFFER313CUT_BUFFER414CUT_BUFFER515CUT_BUFFER616CUT_BUFFER717DRAWABLE18FONT19INTEGER20PIXMAP# Atom 按来源分类# ID 1-68: 预定义标准 Atom每个 X 服务器都有# ID 69: 动态注册 Atom由客户端应用程序创建# 列出所有 Atom 并统计总数$ xlsatoms|wc-l324# 预期输出当前 X 服务器注册了 324 个 Atom数量因桌面环境而异示例 2按名称搜索特定 Atom# 查看剪贴板相关的 Atom$ xlsatoms|grep-iclip255CLIPBOARD447CLIPBOARD_MANAGER628CLIPBOARD_TEMPORARY# 查看窗口管理器属性_NET_WM 系列$ xlsatoms|grep_NET_WM173_NET_WM_CM_S0256_NET_WM_NAME257_NET_WM_ICON_NAME258_NET_WM_VISIBLE_NAME259_NET_WM_ICON_VISIBLE_NAME260_NET_WM_DESKTOP261_NET_WM_WINDOW_TYPE262_NET_WM_STATE263_NET_WM_ALLOWED_ACTIONS264_NET_WM_STRUT265_NET_WM_STRUT_PARTIAL266_NET_WM_ICON_GEOMETRY267_NET_WM_ICON268_NET_WM_PID269_NET_WM_HANDLED_ICONS# 按名称精确查找$ xlsatoms-nameCLIPBOARD255CLIPBOARD# 查看拖放协议 AtomXdnd 系列$ xlsatoms|grep-idnd458XdndSelection459XdndAware460XdndEnter461XdndLeave462XdndPosition463XdndStatus464XdndActionCopy465XdndActionMove466XdndActionLink467XdndActionAsk468XdndActionPrivate469XdndTypeList470XdndDrop471XdndFinished472XdndProxy# 预期输出快速定位特定 Atom 的名称和 ID示例 3按 ID 范围查询 Atom# 查看标准预定义 AtomID 1-68$ xlsatoms-range1-681PRIMARY2SECONDARY3ARC...67TEXT68COMPOUND_TEXT# 查看自定义 Atom 范围通常从更高 ID 开始$ xlsatoms-range100-150100_XSETTINGS_SETTINGS...150_NET_SUPPORTED# 使用不同输出格式$ xlsatoms-format%x\t%s-range1-5 0x1 PRIMARY 0x2 SECONDARY 0x3 ARC 0x4 ATOM 0x5 BITMAP# %d 十进制 ID%x 十六进制 ID%s Atom 名称$ xlsatoms-format%x %s-nameCLIPBOARD 0xffCLIPBOARD# 预期输出灵活的格式化输出适合脚本解析示例 4X11 剪贴板调试实战#!/bin/bash# X11 剪贴板原子诊断脚本echo X11 剪贴板相关 Atom echo# 列出所有选择/剪贴板 Atomecho--- 选择 Atom ---xlsatoms|grep-E^(PRIMARY|SECONDARY|CLIPBOARD)\bechoecho--- 目标 AtomTARGETS---xlsatoms-nameTARGETS xlsatoms-nameMULTIPLE xlsatoms-nameTIMESTAMPecho# 检查剪贴板管理器echo--- 剪贴板管理器状态 ---CLIP_MGR$(xlsatoms-nameCLIPBOARD_MANAGER2/dev/null)if[-n$CLIP_MGR];thenecho剪贴板管理器 Atom 已注册:$CLIP_MGRelseecho剪贴板管理器 Atom 未注册fiecho# 检查拖放协议echo--- 拖放协议 Atom ---xlsatoms|grep^Xdnd|head-5echo# 检查窗口管理器echo--- 窗口管理器检查 ---ifxlsatoms-name_NET_WM_CM_S0/dev/null21;thenecho合成窗口管理器compositor: ✅ 已检测elseecho合成窗口管理器: ❌ 未检测fi# 列出自定义/扩展 Atom 数量TOTAL$(xlsatoms|wc-l)STD68CUSTOM$((TOTAL-STD))echoecho Atom 统计 echo标准预定义 Atom:$STDecho动态注册 Atom:$CUSTOMechoAtom 总数:$TOTAL# 预期输出# X11 剪贴板相关 Atom # --- 选择 Atom ---# 1 PRIMARY# 2 SECONDARY# 255 CLIPBOARD# --- 目标 AtomTARGETS---# 48 TARGETS# 49 MULTIPLE# 50 TIMESTAMP# --- 窗口管理器检查 ---# 合成窗口管理器: ✅ 已检测# Atom 统计 # 标准预定义 Atom: 68# 动态注册 Atom: 256# Atom 总数: 324示例 5Atom 在 X11 编程中的应用# Atom 用于属性操作的实际场景# 使用 xprop 查看窗口属性属性名就是 Atom# 查看根窗口属性$ xprop-root|head-20_NET_SUPPORTING_WM_CHECK(WINDOW): windowid# 0x600001_NET_SUPPORTED(ATOM)_NET_WM_NAME, _NET_WM_ICON_NAME,... _NET_CLIENT_LIST(WINDOW): windowid# 0x4000001, 0x4000002_NET_ACTIVE_WINDOW(WINDOW): windowid# 0x4000001_NET_WORKAREA(CARDINAL)0,0,1920,1040# 验证属性名对应的 Atom ID$echo_NET_WM_NAME|whilereadprop;doxlsatoms-name$propdone256_NET_WM_NAME# 剪贴板数据格式 Atom$ xlsatoms|grep-E^(UTF8_STRING|STRING|text/plain|text/uri-list)31STRING69UTF8_STRING# 这些 Atom 代表剪贴板中数据的 MIME 类型⚠️ 注意Atom 的持久性和生命周期Atom 是 X 服务器级别的资源一旦注册就持续到 X 服务器关闭。即使创建 Atom 的客户端退出Atom 仍然存在。不同 X 显示器的 Atom 空间独立:0和:1的 Atom 表不共享。使用-display :1查看其他显示。Atom ID 是可回收的X 服务器实现可能重用已释放的 Atom ID不要假设特定 ID 永远对应同一名称。Atom 名称的长度限制为255 字节这是 X11 协议硬限制。xlsatoms的输出可能在桌面环境中非常大例如 GNOME 注册超过 500 Atom输出通常不需要全部阅读配合grep按需查询即可。 相关命令命令说明xprop查看和设置 X 窗口属性属性名即 Atomxlsclients列出当前 X 显示器上的客户端应用xdpyinfo显示 X 服务器综合信息xclip命令行操作 X 剪贴板xselX 选择操作工具xclip 的替代方案xev监视 X 事件调试窗口事件xwininfo获取窗口详细信息 总结xlsatoms是一个看似简单但内涵丰富的 X11 工具它展示了 X 协议的内部工作机制Atom 是 X11 的全局命名空间将字符串映射为整数 ID实现高效属性通信剪贴板机制依赖 AtomPRIMARY、CLIPBOARD、TARGETS、UTF8_STRING等 Atom 定义了剪贴板协议窗口管理器通过 Atom 通信_NET_WM_*系列 Atom 是现代窗口管理器的标准协议调试利器排查剪贴板问题、拖放失效、窗口属性异常时xlsatoms | grep是第一步虽然日常用户很少直接使用 xlsatoms但对于 X11 开发者、桌面环境定制者和问题排查者来说它是理解 X Window 系统底层协议的重要窗口。