Skip to content

revaraver/ShellQuicker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShellQuicker

一个基于 Godot 4.6 开发的命令模板管理工具,用可视化方式整理、复用、预览并执行复杂命令行。

文档更新时间:2026-04-12(基于提交 96cca16 及此前改动整理)


项目简介

ShellQuicker 的目标很直接:

把原本散落在笔记、历史记录、脚本片段里的长命令,整理成可以长期维护的「树状模板库」。

它适合这类场景:

  • 经常重复执行 FFmpeg、yt-dlp、curl、adb、git、python、powershell 等命令
  • 同一类命令有很多参数组合,但不想每次都手打
  • 希望给参数写中文说明,降低遗忘成本
  • 希望把命令按项目、用途、工作流分类管理
  • 希望在执行前先看到最终拼装结果,而不是盲打

和单纯的收藏命令不同,ShellQuicker 会把一条命令拆成:

  • 前缀命令
  • 核心命令
  • 多行参数
  • 中文备注
  • 执行方式
  • UTF-8 模式等执行选项

这样命令不再是一整坨字符串,而是可编辑、可预览、可拖拽排序的结构化数据。


核心能力

1. 树状管理命令模板

  • 支持文件夹 / 预设两类节点
  • 支持多级分类整理
  • 支持拖拽调整顺序与层级
  • 支持多选移动
  • 支持克隆副本、重命名、删除

适合把不同工具、不同项目、不同工作流分开管理。

2. 把长命令拆成可维护结构

每个预设都可以拆分为:

  • 前缀命令:例如环境切换、变量设置、前置调用
  • 核心命令:例如 ffmpegyt-dlppythongit
  • 参数列表:每行一个参数值或参数片段
  • 备注说明:方便写中文解释

这样你可以把复杂命令变成可长期维护的参数卡片,而不是一次性字符串。

3. 智能解析现有命令

把一整条已有命令粘贴进去后,ShellQuicker 可以:

  • 自动处理换行续写
  • 识别引号包裹内容
  • 尝试按 -flag value 结构聚合参数
  • 自动把第一段识别为核心命令
  • 把后续内容拆成多行参数

这意味着你可以先从旧命令起步,再逐步整理,而不是从零重建。

4. 执行前可视化预览

右侧会实时展示最终拼装出来的完整命令,并根据当前焦点高亮对应片段,方便你快速检查:

  • 前缀是否正确
  • 核心命令是否遗漏
  • 参数顺序是否正确
  • 当前编辑的行会影响哪一段输出

同时支持一键复制最终命令。

5. 多执行终端支持

当前支持 4 种执行方式:

  • CMD (原始终端)
  • PowerShell (原始终端)
  • WT - CMD (新版终端)
  • WT - PowerShell (新版终端)

并支持:

  • UTF-8 模式
  • 执行时自动复制命令到剪贴板
  • 在终端中回显最终执行的命令,方便核对
  • 启动目录输入统一规范化(有无 \ 结尾行为一致)
  • PowerShell 模式下可对当前目录可执行文件自动补全 .\,并在预览中显性展示

6. 多配置文件工作区

除了单个 presets.json 外,项目还支持同目录下多个 .json 配置文件:

  • 可新建配置文件
  • 可切换不同配置文件
  • 可重命名当前配置
  • 可删除当前配置

这非常适合按项目、机器环境、用途拆分模板库。

7. 搜索与状态持久化

支持按名称、备注搜索,且会保留用户现场状态,包括:

  • 上次选中项
  • 树折叠状态
  • 搜索内容
  • 搜索配置
  • 字体大小
  • 左右分栏宽度
  • 当前配置文件

整体使用过程更接近一个持续维护的工作台,而不是一次性弹窗工具。

8. 树拖拽可视化增强

针对大规模树结构整理,拖拽交互新增了可视化反馈:

  • 落点上/下横线标识
  • 子级落点高亮与占位块
  • 拖拽中的实时预览(含父级与排序覆盖)
  • 树底热区落点优化,支持更稳定地拖到末尾同级

可以显著降低“看不清将要落在哪一层”的误操作成本。

9. 窗口最小化唤出快捷键(支持全局热键)

新增窗口级快捷键控制能力:

  • 默认最小化/唤出快捷键:Ctrl+Shift+D
  • 支持在界面内修改快捷键并保存到 settings.cfg
  • Windows 下可启用全局热键助手(全局热键助手.ps1),最小化后也能唤回窗口
  • 当全局助手不可用时,自动回退为窗口内快捷键

适用场景

ShellQuicker 特别适合这些工作流:

  • 媒体处理:FFmpeg 转码、抽帧、封装、裁剪、字幕烧录
  • 下载抓取:yt-dlp、curl、wget 风格命令整理
  • 开发辅助:git、python、node、adb、docker 等常用命令预设
  • 运维命令:PowerShell、CMD、批处理参数模板化
  • 项目脚手架:固定前缀 + 固定核心命令 + 少量变量参数的重复执行任务

如果你经常遇到“这条命令我上次明明写过,但忘了放哪了”,这个工具就是为这种痛点设计的。


快速上手

基本使用流程

  1. 新建文件夹或模板
  2. 在右侧填写:名称、说明、前缀命令、核心命令
  3. 通过按钮或快捷键添加参数行
  4. 在每一行里填写参数值,并可写中文备注
  5. 观察下方预览,确认最终命令
  6. 复制或直接执行

从旧命令迁移的推荐方式

  1. 新建一个模板
  2. 把完整命令粘贴到核心命令区域
  3. 使用“智能解析”拆分
  4. 检查拆分结果
  5. 必要时手动合并、调整顺序、补充备注
  6. 保存为长期可复用模板

主要功能说明

模板结构

一个预设通常包含这些字段:

  • 名称:模板名
  • 描述:这条命令的用途说明
  • 前缀命令:执行前需要拼接的前置命令
  • 固定命令:核心命令主体
  • 参数列表:动态拼装参数
  • Shell类型:使用哪种终端执行
  • UTF8模式:是否先切换 chcp 65001

参数行编辑

每一行参数都包含:

  • :占位说明或参数名
  • 备注:中文解释
  • 当前值:真正拼装进命令的文本

这使得模板既能用于执行,也能用于阅读和维护。

参数合并能力

对智能解析后的结果,如果拆得不够理想,可以继续:

  • 向下合并单行
  • 合并到焦点行
  • 合并后续所有行
  • 将所有参数并回核心命令

适合修复特殊命令格式、带引号片段、复杂表达式等情况。

树上直接执行

树中的预设节点带有快速执行按钮,可以不切到右侧详情,直接在树上运行。


快捷键

快捷键 功能
Ctrl+N 新建文件夹
Ctrl+A 新建模板
Ctrl+D 克隆当前模板
Ctrl+B 添加新参数行
Ctrl+F 聚焦到搜索框并全选
Ctrl+G 合并预览区选中的参数
Ctrl+Enter 强制执行当前命令
Shift+Enter 智能解析并覆盖参数
F2 / 双击 重命名
Enter 执行当前选中项
Delete 删除

其中部分按键行为会根据当前焦点位置略有不同,但整体围绕“尽量减少鼠标切换”设计。


数据与配置

文件位置

程序会在基础目录下工作:

  • 编辑器运行时:项目目录
  • 导出后运行时:exe 所在目录

主要数据文件

  • settings.cfg:全局设置与各配置文件的界面状态
  • presets.json:默认模板数据
  • 其他 .json:额外工作区 / 配置文件

settings.cfg 中会保存的内容

  • 当前配置文件
  • 字体大小
  • 是否允许多开
  • 左右分栏宽度
  • 上次选中项
  • 搜索内容
  • 搜索选项
  • 执行时复制开关
  • 最小化唤出快捷键
  • 树折叠状态

JSON 中保存的内容

树状结构中的业务数据,例如:

  • 文件夹名称与描述
  • 预设名称与描述
  • 前缀命令
  • 核心命令
  • 参数列表
  • Shell类型
  • UTF8模式
  • 排序与父子关系

单实例机制

默认情况下,ShellQuicker 会通过 TCP 端口 58123 限制单实例运行。

作用:

  • 避免误开多个窗口导致配置混乱
  • 降低同时写入配置文件的风险

如果你确实需要多开,可在右上角设置菜单中勾选“允许多开”。


运行与开发

环境要求

  • Godot 4.6
  • Windows 环境
  • 若要使用 Windows Terminal 方式执行,需要系统安装 wt
  • 若要使用全局最小化唤出热键,需要系统可用 powershell.exe

运行项目

直接用 Godot 打开本项目目录并运行即可。

入口配置:

  • 主场景:主界面.tscn
  • 入口脚本:入口.gd
  • Autoload:配置管理器.gd

导出

项目已包含 Windows 导出配置:

  • export_presets.cfg

项目结构

ShellQuicker/
├── 主界面.tscn           # 主场景入口
├── 入口.gd              # 主界面逻辑,UI 核心编排
├── 配置管理器.gd         # 全局配置、配置文件切换、数据持久化
├── 树辅助.gd            # Tree 拖拽逻辑转发
├── 窗口快捷键控制器.gd    # 窗口最小化/唤出快捷键与设置弹窗
├── 全局热键管理器.gd      # Windows 全局热键助手拉起与生命周期管理
├── 快捷键工具.gd          # 快捷键文本与事件转换工具
├── 配置切换管理器.gd      # 配置文件列表/新建/重命名/删除交互
├── 树渲染搜索管理器.gd    # 树渲染、搜索过滤、折叠状态维护
├── 树拖拽管理器.gd        # 树拖拽规则、可视化标识、实时预览
├── 树项操作管理器.gd      # 树节点重命名/删除/克隆/右键菜单逻辑
├── 参数编辑管理器.gd      # 参数行创建、合并、智能解析后处理
├── 命令执行管理器.gd      # 命令预览、复制、执行与树上快速运行
├── 全局热键助手.ps1       # Windows 全局热键助手脚本模板
├── project.godot        # Godot 项目配置
├── export_presets.cfg   # Windows 导出预设
├── presets.json         # 默认模板数据
├── settings.cfg         # 全局设置(运行后生成或更新)
├── icon.png / icon.ico  # 程序图标
└── README.md            # 项目说明文档

当前实现特点

纯代码构建 UI

项目不是把所有控件逻辑分散到很多独立场景里,而是以 入口.gd 作为主控脚本进行 UI 编排,并在运行期统一处理:

  • 信号连接
  • 样式注入
  • 状态恢复
  • 树与详情面板联动
  • 执行流程组装

中文命名与中文注释

整个项目采用全中文命名风格,包含:

  • 文件名
  • 节点名
  • 变量名
  • 函数名
  • 注释

这样做的目的不是形式统一,而是直接提高可读性和维护速度。

以持久化现场为核心体验

项目很强调“下次打开还能接着上次继续”的体验,所以状态恢复做得比较完整,包括:

  • 当前配置文件恢复
  • 树折叠状态恢复
  • 搜索恢复
  • 上次选中项恢复
  • 分栏位置恢复

已实现的典型交互

  • 树节点拖拽排序与改层级
  • 拖拽落点标注线、子级高亮、占位块与实时预览
  • 多选移动
  • 树节点快速执行
  • 详情区自动保存
  • 搜索时动态过滤树
  • 文件夹命中搜索时连带显示子项
  • 复制最终命令
  • 执行时自动复制命令
  • 最小化/唤出快捷键设置与 Windows 全局热键唤回
  • 不同配置文件之间切换并保留各自状态

界面预览

新建与基础编辑

新建文件夹与模板

文件树拖拽

文件树拖拽功能

搜索与文件夹穿透

文件夹穿透与搜索功能

命令拆分与替换

命令拆分与命令替换演示

指定路径与命令合并

指定路径与命令合并

字体调整

字体更改


后续可继续增强的方向

如果后面继续迭代,这个项目比较自然的增强方向包括:

  • 参数类型化(路径、开关、枚举、数字)
  • 模板导入导出
  • 批量执行队列
  • 参数变量替换
  • 历史执行记录
  • 更细的搜索过滤能力
  • 更强的命令解析策略

License

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors