firestart:一行命令启动你的日常应用和网页

为什么做这个

发现自己每天每次使用电脑时都要一系列固定的操作:

码代码时要打开 VSCode,查资料要打开浏览器,记笔记会打开Typora,遇到难题问 AI 要启动 Deepseek Harness、Chatbox,喜欢边听歌边工作,摸鱼时偶尔还会刷会知乎、 bilibili...... 于是想着能不能把这些高频操作"打包"起来,做个 CLI 工具,一行命令启动我常用的软件和网页。

安装

已发布到PyPi,可通过以下命令安装

bash 复制代码
pip install firestart

如果显示报错,可能是您所用的PyPI 镜像并未同步更新,请临时使用PyPI官方源

bash 复制代码
pip install --index-url https://pypi.org/simple firestart

安装完成后,终端里直接用 fire 命令。


核心概念

firestart 里存的东西,分两类:

类型 存的是什么 能直接启动吗 例子
"单发弹药" 实际内容(网站 URL 或 exe 路径 + 启动参数) 能 bilibili、vscode
"组合弹药" 一组"单发弹药名" 一行命令逐个启动 dev(启动 vscode + terminal + typora)

命令详解

🔹add --- 添加单发弹药

bash 复制代码
fire add <名称> <目标> [--args "参数1,参数2"] [--cwd "工作目录"]

最常见的三个场景:

1. 添加网站

bash 复制代码
fire add bilibili https://www.bilibili.com
fire add zhihu https://www.zhihu.com

2. 添加本地应用

bash 复制代码
fire add typora "C:\Program Files\Typora\Typora.exe"

3. 带启动参数和工作目录

bash 复制代码
# VSCode 启动后直接打开指定项目
fire add code "C:\Users\你\AppData\Local\Programs\Microsoft VS Code\Code.exe" --args "C:\project\myapp"

--args 多个参数用逗号分隔:例如--args "-p,8080,-v" → ['-p', '8080', '-v']


🔹workspace --- 管理组合弹药

bash 复制代码
fire workspace add <名称> <弹药1> <弹药2> ...    # 创建组合弹药
fire workspace list                               # 列出所有组合弹药
fire workspace remove <名称>                      # 删除组合弹药

创建组合弹药前必须先有单发弹药------组合弹药存的是单发弹药的引用名,不是拷贝。

bash 复制代码
# 先储备弹药
fire add vscode "C:\...\vscode.exe" --args "C:\project"
fire add terminal "wt.exe"
fire add typora "C:\Program Files\Typora\Typora.exe"

# 再组合成组合弹药
fire workspace add dev vscode terminal typora

# 以后一条命令同时启动全部
fire dev

🔹点火

bash 复制代码
fire <弹药名>

直接敲名字就点燃------不需要写 open、不需要写 start。如果是组合弹药,会同时启动里面所有弹药。

bash 复制代码
fire bilibili       # 打开 B 站
fire dev            # 点燃组合弹药:VSCode + 终端 + Notion 一起开
fire morning        # 摸鱼组合弹药:知乎 + B 站 + 网易云

remove --- 删除单发弹药

bash 复制代码
fire remove <名称>

⚠️ 组合弹药请用 fire workspace remove <名称>,不用 fire remove。


🔹list --- 列出弹药库

bash 复制代码
fire list        # 简洁模式
fire list -v     # 详细模式(显示完整路径和参数)

输出示例:

复制代码
单发弹药:
  bilibili
  zhihu
  code
组合弹药:
  dev (3 发)
  morning (3 发)

🔹browser --- 管理默认浏览器

打开网站时,默认用系统浏览器。如果你常用的是其他浏览器,可以全局设置一次:

bash 复制代码
fire browser set "C:\Program Files\Mozilla Firefox\firefox.exe"   # 设置
fire browser show                                                  # 查看当前设置
fire browser clear                                                 # 清除,恢复系统默认

设置后,用FireStart启动所有网站都会用这个浏览器打开。如果浏览器被卸载了、启动失败,会自动更改到系统默认浏览器,不会卡死。


🔹config --- 打开配置文件

bash 复制代码
fire config

用系统默认编辑器(Windows 是记事本)打开配置文件。配置文件是纯 JSON,你可以直接手写或手动编辑。

配置文件位置:~/.firestart.json(用户主目录下,比如C:\Users\Administrator\.firestart.json)


🔹export / import --- 导入导出(换电脑必备)

bash 复制代码
fire export                        # 输出到终端
fire export my-config.json         # 导出到文件
fire import my-config.json         # 导入(默认合并到现有配置)
fire import my-config.json --overwrite   # 覆盖现有配置

示例配置文件格式

~/.firestart.json 的完整格式:

json 复制代码
{
  "_settings": {
    "browser": "C:\\Program Files\\Mozilla Firefox\\firefox.exe"
  },

  "bilibili": "https://www.bilibili.com",
  "zhihu": "https://www.zhihu.com",

  "code": {
    "target": "C:\\Users\\你\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe",
    "args": ["C:\\project\\myapp"]
  },

  "dev": {
    "items": ["bilibili", "zhihu", "code"]
  }
}
key 含义
_settings 全局设置默认浏览器
字符串值 网站 URL 或 本地程序路径
{target, args} {本地程序路径,启动参数}
{items: [...]} 组合弹药格式

项目结构

复制代码
firestart/
├── __init__.py    # 版本号
├── cli.py         # 核心
└── config.py      # 配置文件读写 + 常量

setup.py           # 打包配置
requirements.txt   # 依赖(click>=8.0.0)

核心技术点速览

技术 说明
click 框架 作为 CLI 入口框架,定义 add/workspace 等核心命令组
继承 click.Group 重写 resolve_command,将非子命令参数识别为「弹药」触发启动
subprocess.Popen 非阻塞,启动后立即返回,CLI不卡壳
webbrowser 标准库 没配自定义浏览器时的 fallback使用默认浏览器
JSON + pathlib 跨平台,配置文件在用户主目录

创作声明

灵感源于日常使用电脑的高频痛点。技术栈选择及项目整体设计由本人完成,代码编写有采用 AI 辅助实现。二次开发请注明出处。

遵循Unix设计哲学:"只做并做好一件事"。对我而言,能用技术解决自身一个微小而真切的需求,便是最大的欣慰。

相关推荐
外收内放6 小时前
面向对象高级(实战案例)
开发语言·python·学习
专业程序开发源6 小时前
springboot欧缇蔓月子中心管理系统82697-计算机课程设计、毕业设计
java·spring boot·后端·python·spring·django·课程设计
FPGA小迷弟6 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
c++·python·ai·plotly·django·ai编程·claude
卷无止境6 小时前
面向arm64桌面客户端开发全景:语言、框架与生态
后端·python
fanruitian7 小时前
python else用法
开发语言·python
Thinker QAQ7 小时前
并发编程(十一):Shared Memory 与 Message Passing——关系与组合使用
java·python·go·并发编程·shared memory·message passing
用户8356290780517 小时前
如何使用 Python 对 Excel 数据进行分组和分级显示
后端·python
vx_Biye_Design7 小时前
django房屋租赁推荐系统78455-计算机课程设计、毕业设计
vue.js·spring boot·后端·python·django·课程设计·express
学Linux的语莫9 小时前
python中类的常见写法
开发语言·python·状态模式
垆边人似月.10 小时前
Python中如何使用get函数实现频次查询
服务器·前端·python