READMESource: main@8e659f00
dsh-sidebar-fold-zxp
把 DSH 左侧那排插件入口折成一行,把高度还给工作区与会话列表。
装上之后,左栏顶部只剩一行「插件 ▾」;点一下展开全部入口,再点一下收起。状态会记住。
为什么需要它
DSH 的 sidebar.panellist 是一个列表槽:每装一个带入口的插件就多一行,每行约 46px。装七八个之后,光这排入口就吃掉三分之一的高度,下面的工作区/会话列表被压到只剩一点。外壳对这批入口没有任何折叠或溢出逻辑——panels.map() 有几个排几个,也没有隐藏他人的接口。
它怎么做到的
不顶替外壳、不猜 CSS 类名:
- 它自己往
sidebar.panellist注册一个入口,所以外壳会为它渲染一行按钮——天然和原生行长得一样。 - 从这个自己的节点
closest('nav')往上找到列表容器,再按:scope > button数兄弟行。 - 折叠时把兄弟行的
style.display设为none(不用hidden属性:行上的类已经设了display: flex,会盖掉浏览器对[hidden]的默认样式,属性写了也没用)。 - 点击在捕获阶段拦下并
stopPropagation(),否则外壳会拿我们的 id 去selectPanel,而它没有对应的面板。 - 当前正打开的那个面板始终保留可见——折叠不该把你正在看的东西藏起来。
边界与风险
- 纯客户端插件:没有宿主接口、没有路由、没有设置页,状态只存在页面 localStorage(
dsh-sidebar-fold:folded)。 - 结构依赖:如果 DSH 将来改了
nav > button这层结构,折叠会失效。失效方式是「不折叠」,不会弄坏界面;找不到nav时它什么都不做。 - 卸载即还原:插件卸载或停用时,它只把自己藏过的那几行恢复,不会误伤别人的行。
- 它只能收起自己之外的兄弟行,没有改动任何插件的注册、图标或顺序。
安装
dsh plugin --profile desktop add github:zengxiangpeng/dsh-sidebar-fold-zxp
或本地开发时把目录链接进 profile 即可。
许可
MIT
No comments yet. Be the first to write one.