READMESource: main@393ef7eb
dsh-tab-order
对话页顶部那排标签(对话 / 轨迹 / 上下文 / 文件 …):拖动着换位置,长按着置顶。纯客户端,不碰宿主。
用法
- 拖动:按住标签横向拖动,标签抬起、其余让位,松手定序。单击仍是切标签,上下滑仍是滚页面。
- 长按(约 0.5 秒不动)→ 弹出小菜单:
置顶到最左:该标签固定排第一,前面带 📌;再点同一个标签的取消置顶解除。关闭:收起菜单。
- 拖动被置顶的那个标签会自动取消置顶(否则它动不了)。
- 顺序与置顶记在
localStorage的dsh-tab-order:v2,刷新页面、换会话都还在。
实现要点
- 顺序只用
flex order落地,置顶项额外强制 order 0;不移动、不插入 DOM 节点,React 重渲染不会冲掉。 - 标签条里非标签的子元素(Android 适配层塞的折叠箭头等)一律
order: 9999+margin-inline-start: auto推到最右。 - 手势协议:横向 > 6px 且大于纵向 → 拖动;纵向 > 10px → 放弃并交给滚动;一动就取消长按计时。
- 标签上
user-select: none/-webkit-touch-callout: none,并在按下、开始拖动时清空选区、拦截标签条内的contextmenu—— 长按和拖动都不会变成「选中文字 / 复制」。 - 标签身份用可见文字而不是 class(构建产物类名带哈希)。
装法
cp -r dsh-tab-order ~/.dsh/plugins/
ln -sfn ~/.dsh/plugins/dsh-tab-order ~/.dsh/profiles/web/node_modules/dsh-tab-order
# package.json dependencies 加 "dsh-tab-order": "file:../../plugins/dsh-tab-order"
# cordis.patch.yml 末尾加:
# - insert:
# - id: tab-order
# name: dsh-tab-order
新增插件条目需要重启一次 DSH;之后改代码按刷新按钮即可热换。
No comments yet. Be the first to write one.