Ubuntu 22.04中xtitle获取bspwm节点标题显示为窗口ID求助
解决Ubuntu 22.04+bspwm下xtitle无法获取窗口标题的问题
可能的原因与对应解决方案
1. 混淆了bspwm节点ID与窗口ID
bspwm中,bspc query -N -n .window返回的是节点ID,而xtitle需要的是窗口ID。部分发行版中节点ID和窗口ID可能重合,但Ubuntu 22.04下二者存在差异,导致xtitle无法识别有效窗口属性。
解决方法:
使用bspc query -W -n .window获取窗口ID,再传给xtitle:
# 获取当前窗口的窗口ID WIN_ID=$(bspc query -W -n .window) # 用xtitle获取标题 xtitle $WIN_ID
2. Ubuntu仓库的xtitle版本存在兼容性问题
Ubuntu 22.04默认提供的xtitle版本较旧,对_NET_WM_NAME(UTF-8格式标题)的解析支持不完善,而xprop能正确识别该属性。
解决方法:手动编译最新版xtitle:
# 克隆源码 git clone https://git.suckless.org/xtitle cd xtitle # 编译并安装 make sudo make install
安装完成后重新测试xtitle是否正常返回标题。
3. 用xprop自定义脚本替代xtitle
如果上述方法无效,可以编写一个基于xprop的脚本,直接提取窗口标题,完全替代xtitle的功能:
#!/bin/sh # 脚本名称:myxtitle if [ -z "$1" ]; then # 无参数时获取当前活动窗口标题 ACTIVE_WIN=$(xprop -root _NET_ACTIVE_WINDOW | awk '{print $5}') xprop -id "$ACTIVE_WIN" _NET_WM_NAME | awk -F'"' '{print $2}' else # 传入窗口ID时获取对应窗口标题 xprop -id "$1" _NET_WM_NAME | awk -F'"' '{print $2}' fi
保存脚本后赋予执行权限:
chmod +x myxtitle sudo mv myxtitle /usr/local/bin/
之后直接用myxtitle 窗口ID调用即可。
内容的提问来源于stack exchange,提问作者Chris Brown
相关产品推荐
相关产品推荐

