dsh-desktop-shell:爲 DSH Web 增加 Electron 桌面窗口

前言

DSH 的理念是“一切皆插件”。在實際使用 DSH Web GUI 時,常見做法是通過 dsh web 啓動本地 HTTP 服務,再手動打開瀏覽器訪問。對長期在本地使用 DSH 的人來說,這個流程會多一步:每次都要記住端口、打開瀏覽器、管理標籤頁。

dsh-desktop-shell 解決的是這個入口問題:dsh web 啓動後自動彈出 Electron 窗口,關閉窗口時不退出 dsh 進程,而是隱藏到系統托盤;需要從托盤退出時,再結束整個 dsh web 進程。

這是什麼

dsh-desktop-shell 是一個 MIT 許可的 DSH 桌面外殼插件。它安裝到 web profile 後,讓 dsh web 具備 Electron 桌面窗口入口,同時保持 DSH 現有 HTTP 服務不變。

已覈實事實列出:dsh 引擎零改動

倉庫地址爲:

https://github.com/Funnyvalentine00/dsh-desktop-shell

已覈實資料未單列維護者字段,僅倉庫地址指向 Funnyvalentine00

核心功能

下面介紹已覈實的功能:

  • dsh web 啓動後自動彈出 Electron 窗口,並加載 DSH 現有 HTTP 服務。
  • 關閉窗口時隱藏到系統托盤,dsh 進程繼續運行。
  • 托盤菜單支持打開主窗口,以及退出 dsh 進程。
  • 重複運行 dsh web 時通過單實例鎖聚焦已有窗口,不彈新窗。
  • 記憶窗口位置和大小,退出後重開保持。
  • Electron 缺失、spawn 失敗或窗口加載失敗時,自動降級爲瀏覽器模式,不阻斷 dsh web
  • 可選桌面快捷方式,雙擊啓動 dsh web 並喚起已有窗口。

安裝與啓用

已覈實資料沒有給出類似 dsh plugin add ... 的單一官方安裝命令,只給出 profile 接入方式。下面按照已覈實步驟說明。

1、接入 web profile

在 profile 的 package.json 中加入 dsh-desktop-shell 依賴,並把 dsh-desktop-shell 寫入 dsh.profile.bundles

dependencies
  dsh-desktop-shell

dsh.profile.bundles
  dsh-desktop-shell

2、在 profile 目錄安裝鏈接

在 profile 目錄執行:

npm install

3、啓動驗證

執行:

dsh web

如果插件生效,dsh web 會啓動 DSH 現有 HTTP 服務,並自動彈出 Electron 窗口。

典型用法

啓動桌面窗口

dsh web

臨時關閉桌面窗口

如果只想使用瀏覽器模式,可以執行:

dsh web --no-desktop

或在 PowerShell 中設置環境變量:

$env:DSH_DESKTOP="0"; dsh web

也可以在 profile 配置中關閉桌面窗口:

enabled: false

使用托盤

啓動後,關閉窗口只會隱藏到系統托盤,dsh 進程繼續運行。托盤菜單支持:

  • 打開主窗口
  • 退出 dsh 進程

已覈實事實指出,托盤「退出」依賴 launcher 提供的接口結束 dsh 進程:

ctx.appExit(0)

使用桌面快捷方式

如果不習慣在終端輸入命令,可以使用插件提供的啓動腳本:

scripts/launch-dsh-web.cmd
scripts/launch-dsh-web.ps1

雙擊對應腳本會啓動 dsh web;如果已有實例在運行,則喚起已有窗口,不重複啓動。

降級與退出行爲

dsh-desktop-shell 的關鍵降級策略如下:

  • Electron 缺失、spawn 失敗或窗口加載失敗時,自動回到瀏覽器模式。
  • 窗口加載失敗時,Electron 會退出,DSH 保持瀏覽器模式。
  • 托盤「退出」會結束整個 dsh web 進程。

已覈實資料強調:任何 Electron 缺失、spawn 失敗或加載失敗都會自動回到瀏覽器模式,不阻斷 dsh web

卸載

要恢復純瀏覽器模式,先做配置移除,再重新安裝 profile 依賴:

1、從 profile package.jsondependenciesdsh.profile.bundles 移除:

dsh-desktop-shell

2、在 profile 目錄執行:

npm install

3、重啓:

dsh web

適用場景與注意

適合本地長期使用 DSH Web GUI,並希望 dsh web 自動彈出桌面窗口的人。它不會改變 DSH 的 Web 服務主體,只是增加一個 Electron 窗口入口和托盤管理。

需要注意:插件會隨當前 dsh web 進程一起運行,並以當前 DSH 進程權限執行本地行爲。安裝前應檢查源碼、依賴和許可證。

另外,如果維護桌面快捷方式腳本,launch-dsh-web.cmd 必須保持純 ASCII 內容。內嵌中文路徑會在 GBK 系統上出現亂碼。

如果 Electron 二進制下載較慢,已覈實資料提到可以設置:

ELECTRON_MIRROR

結尾

dsh-desktop-shell 提供的是桌面入口、托盤管理和降級能力,不改變 DSH 的 Web 服務與進程主體。如果只需要本地 HTTP 訪問,可以繼續使用瀏覽器模式;如果希望 dsh web 自動彈出可管理窗口,它可以作爲一個 profile 插件接入。

已覈實資料未提供社區目錄頁 URL,不能給出可確認鏈接。GitHub 倉庫見:

https://github.com/Funnyvalentine00/dsh-desktop-shell
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜