You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过XTerm控制序列切换窗口的Shaded属性?

X窗口的Shaded功能

这是我一直使用的实用X功能,它可将窗口缩小至标题栏,而非最小化(iconify)。

我可利用标题栏展示信息,示例如下:

printf '\e];Long process running...\a'
sleep 2 # doLongProcessLike apt full-upgrade
rc=$?; printf '\e];Long process ended with %d.\a' $rc

通过以下命令可将窗口设为Shaded状态:

wmctrl -ir "$WINDOWID" -b add,shaded

注:我已修改Mate设置,双击标题栏可切换Shaded状态(toggle shade)。

现有流程运行正常:

printf '\e];Long process running...\a'
wmctrl -ir "$WINDOWID" -b add,shaded
sleep 2 # doLongProcessLike apt full-upgrade
rc=$?; printf '\e];Long process ended with %d.\a' $rc
wmctrl -ir "$WINDOWID" -b remove,shaded
XTerm控制序列

使用XTerm可通过Xterm控制序列修改几乎所有设置。

用*CSI 2 t和CSI 1 t*可最小化、恢复窗口:

printf '\e[2t'; sleep 1 ;  printf '\e[1t'

用*OSC 0 ; Window Title BEL*可修改窗口标题,进度条示例如下:

wmctrl -ir "$WINDOWID" -b add,shaded
for progress in {0..100};do
    printf '\e];Job progress: %.2f%% \U2595%b\U258F\a' \
        "$progress" \\U2$(( progress ? 581 + progress * 100 /1428 : 800))
    sleep .03
done

效果如下:
进度条效果演示

我的问题:如何通过控制序列(ctlseqs)切换Shaded属性?

尝试以下命令未成功:

printf '\e]3;WM_STATE=WM_STATE_SHADED\a' ;sleep 1

还基于以下命令尝试多种变体:

xprop -id "$WINDOWID" > /tmp/xpropfile.txt
sleep 2
xprop -id "$WINDOWID" | diff /tmp/xpropfile.txt -

并在2秒内用鼠标切换Shaded状态对比,但始终未找到通过XTerm控制序列切换Shaded属性的方法。


内容的提问来源于stack exchange,提问作者F. Hauri - Give Up GitHub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 23:52:11