Skip to content
dsh.fish
Bundle

dsh-applauncher

DSH 应用启动器:扫描本机已安装的 Windows 应用,在侧边栏设置图标上方提供一键启动(零依赖、纯原生 JS,宿主侧通过 PowerShell 扫描 + Shell 启动)。

Source
jinwendijv
License
MIT
Updated
Updated 2 days ago

Readme

# dsh-applauncher

![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)
![version](https://img.shields.io/badge/version-0.1.0-lightgrey.svg)

> DSH 桌面端的「应用启动器」插件:自动扫描本机已安装的电脑应用,在侧边栏「设置」图标上方提供一键启动,像 Windows 开始菜单一样方便。

## 功能

- 自动检测本机已安装的应用,扫描开始菜单、卸载列表和 App Paths 注册表,中文名称优先显示
- 从应用 exe 提取真实图标,取不到图标时用应用名首字符代替
- 已添加的快捷方式以图标网格展示,只显示图标和名称,点击即可启动
- 支持搜索、添加、移除
- 启动动作在 DSH 宿主进程执行,浏览器不接触任意命令

## 预览

![dsh-applauncher 面板截图](https://github.com/user-attachments/assets/5669e204-88bd-4746-8039-f8854a427abe)

## 系统要求

- **Windows**(依赖系统自带的 PowerShell 5.1)
- **DSH Desktop**

## 安装

### 方式一:官方 CLI(推荐)

将本仓库克隆或解压到本地后:

```bash
dsh plugin --profile <profile> add link:<本目录绝对路径>
```

### 方式二:手动安装

1. 将本目录 `dsh-applauncher` 复制到 DSH 的 profile 依赖目录:
   - Windows:`C:\Users\<用户名>\.dsh\profiles\<profile>\node_modules\dsh-applauncher`
   - Linux / macOS:`~/.dsh/profiles/<profile>/node_modules/dsh-applauncher`
2. 编辑 `profiles/<profile>/package.json`:
   - 在 `dependencies` 中加入 `"dsh-applauncher": "0.1.0"`
   - 在 `dsh.profile.bundles` 数组中追加 `"dsh-applauncher"`
3. 完全退出并重启 DSH Desktop。

> 提示:`<profile>` 为你的 DSH 配置文件名称,可在 `~/.dsh/profiles/` 目录下查看;DSH Home 目录默认是 `~/.dsh`。

## 使用

1. 打开 DSH,侧边栏底部「设置」图标上方会出现一个「应用」按钮。
2. 点击「应用」→ 在弹出面板点击「扫描本机应用」。
3. 在「本机已安装应用」列表中,点「+」把常用应用添加为快捷方式(已添加的应用会显示绿色 ✓ 角标)。
4. 「已添加的快捷方式」以桌面图标网格展示,点击图标即可启动;鼠标悬停图标时右上角出现「×」可移除。

## 工作原理

插件沿用 DSH 的「宿主 + 客户端」双半边结构,全程零 Node 依赖、零构建:

- **宿主半边**(`lib/index.js`):运行在 DSH 宿主进程
  - 通过 PowerShell(`WScript.Shell` 解析 `.lnk` + 注册表)扫描本机应用
  - 通过 `System.Drawing` 提取应用图标(PNG)
  - 通过 Windows Shell 启动应用
  - 提供 `/dsh-applauncher/*` 路由
- **客户端半边**(`widget.js`):注入到 DSH Web 界面
  - 通过 `tapIndex` 注入脚本 + DOM 注入侧边栏按钮(`MutationObserver` 自愈)

## 安全说明

- 快捷方式列表仅保存在本机 `~/.dsh/dsh-applauncher/config.json`。
- 「启动」只按已保存的快捷方式 id 解析,浏览器无法传入任意命令或路径。
- 写操作要求 POST 且同源,可挡住跨站请求。
- 应用经 Windows Shell(`explorer`)启动,以普通用户权限运行,不会继承 DSH 的管理员权限。

## 许可

[MIT](./LICENSE)

Install

dsh plugin --profile web add github:jinwendijv/dsh-applauncher

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source