前言¶
DSH 默認把對話區放在一個居中、固定寬度的消息列裏,輸入框跟在下面。寬度變化要改樣式,位置想挪一點也沒有把手可用;寬屏下兩側大量空間被空着。下面介紹的插件 dsh-msg-resize(維護者 buddha68)就是處理這件事的:它把消息區和輸入框打包成一個浮窗,可以拖動、可以改大小,位置和尺寸會記住。
插件 id 固定爲 msg-resize,包名 dsh-msg-resize,當前版本 2.6.0,許可證 MIT。源碼在 https://github.com/buddha68/dsh-msg-resize ,目錄頁在 https://www.skillhub.cn/plugins/buddha68/dsh-msg-resize 。屬於客戶端 UI 類插件,只作用於你指定的 profile。
這是什麼¶
一句話定位:把 DSH 的對話區(消息區 + 輸入框)從固定居中列變成一個能隨意擺放、能隨意改大小的浮窗。
它解決的問題是默認佈局對寬屏不友好,以及沒有低成本手段調整對話區尺寸和位置。對比改宿主樣式或自己寫 CSS 的做法,這個插件把改動封裝在插件裏,靠把手操作,位置和尺寸存本地,不需要每次重開都重新調。
核心功能¶
兩個把手,一個搬位置、一個改大小:
1、右下角 ⤡:拖動改寬、改高,最小 460×320。
2、右上角 ⠿:拖動把整塊對話搬到任意位置。
3、雙擊對應把手:各自復位到默認。
4、鍵盤微調:點一下把手聚焦,←→ 改寬、↑↓ 改高;按住 Shift 步長變爲 4 倍。
5、位置和尺寸寫入瀏覽器 localStorage,刷新、重開都還在,卸載時只留下一個鍵 dshMsgResize.v2。
6、活動範圍限在對話內容窗格內(內縮 8px):不會蓋住左側欄,也不會跑出屏幕;收起左側欄後可以繼續往左貼。
7、輸入框寬度跟隨面板寬度、高度不變、始終貼面板下沿。
8、窄屏(< 720px)自動撤下,不動手機端佈局。
安裝與啓用¶
只裝你想用的那個 profile。網頁版一般是 web,桌面版是 desktop,兩邊互不影響。
方式 A:一行命令(需要本機有 git)¶
dsh plugin --profile web add github:buddha68/dsh-msg-resize
裝完重啓一次 DSH,或等宿主重組合。包內自帶 dsh.bundle 清單與 cordis.patch.yml,安裝後會自動掛上「右上移動 / 右下縮放」兩個把手。
方式 B:Release 壓縮包(免 git)¶
沒有 git 環境時走這條路,按四步做:
1、到 https://github.com/buddha68/dsh-msg-resize/releases 下載 dsh-msg-resize-2.6.0.zip 或源碼歸檔,解壓到任意目錄,例如 D:\plugins\dsh-msg-resize。
2、把目錄鏈接進 profile 的 node_modules:Windows 用 junction,macOS / Linux 用 symlink。
mklink /J "%DSH_HOME%\profiles\web\node_modules\dsh-msg-resize" "D:\plugins\dsh-msg-resize"
ln -s /path/to/dsh-msg-resize "$DSH_HOME/profiles/web/node_modules/dsh-msg-resize"
3、在該 profile 的 cordis.patch.yml 末尾追加下面的內容(與倉庫根目錄的 cordis.patch.yml 一致):
- insert:
- id: msg-resize
name: 'dsh-msg-resize'
4、等宿主重組合(約 7–10 秒),或重啓 DSH 一次。打開任意會話,應出現一個浮窗和兩個把手。
DSH_HOME 默認是 dsh 的數據目錄,Windows 常見爲 F:\dsh-home 或 %USERPROFILE%\.dsh。只裝 web profile 就只動 web 的 cordis.patch.yml。
典型用法¶
裝好後不需要額外配置,直接在會話頁操作即可。
| 想做 | 操作 |
|---|---|
| 改大小 | 拖右下角 ⤡,橫向改寬、縱向改高 |
| 搬位置 | 拖右上角 ⠿,整塊對話一起移動 |
| 回到默認 | 雙擊對應的把手 |
| 精確微調 | 點擊把手聚焦後按 ←→↑↓,Shift 加大步長 |
窄屏下把手自動消失,屬於預期 behavior,不需要手動關閉。
適用場景與注意事項¶
誰適合用。 用寬屏跑 DSH、希望對話區佔據自己習慣的位置和尺寸的開發者,尤其是同時開着左側欄、右側資料窗或多個編輯器窗口的人。桌面版和網頁版都行得通,按 profile 分別決定裝不裝即可。
前置條件與權限。 這個插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證(MIT)。手動安裝方式會接觸 profile 目錄下的 node_modules 和 cordis.patch.yml,改動前先備份這兩份配置。
驗證環境。 README 聲明的驗證環境是 DSH web 端 0.2.x(Chromium / Electron),插件 v2.6.0。
已知限制。
1、靶點全部用 CSS Modules 的類名後綴匹配(如 [class$="_scrollBody"]、[class$="_column"]、[class$="_centerCol"]),跨構建比較穩定;宿主如果大改對話區結構,插件會自動失效且不報錯(fail-inert),屆時需要修改這幾處選擇器。
2、面板使用 position: fixed,宿主祖先節點不能有 transform 或 filter。當前版本沒有;如果將來加入,fixed 定位會被劫持,需要改成 portal。
3、如果同時裝了 dsh-chat-drag,那個插件負責橫向挪動消息區,把手位置會衝突。本插件在對話頁接管移動(把對方的位移歸零並隱藏把手),新建會話頁不受影響。若沒裝 dsh-chat-drag,這段邏輯等於空轉。
4、摺疊左側欄、切換「便籤 / 對話」面板後,活動範圍會自動重算;拖到邊界附近不會抖動。
卸載。
dsh plugin --profile web remove dsh-msg-resize
手動安裝的需要刪掉 cordis.patch.yml 裏那段 - insert: … msg-resize,刪掉 node_modules\dsh-msg-resize 鏈接,刷新頁面;localStorage 裏的 dshMsgResize.v2 可以順手清掉。
結束語¶
這個插件的價值不在什麼新能力,而是把 DSH 對話區的佈局從「默認居中固定寬」改成「你說了算,且記得住」。需要細粒度控制時它比改全局樣式乾淨,改動面侷限在對話窗格內。目錄頁:https://www.skillhub.cn/plugins/buddha68/dsh-msg-resize ;源碼:https://github.com/buddha68/dsh-msg-resize 。