Skip to content

About

A software for managing tools and shortcuts

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

147 Commits

Folders and files

Repository files navigation

工具箱 · Toolbox

一个 手机桌面风格 的 Windows 启动器,使用 PyQt6 构建。
拖入文件/文件夹/快捷方式即可生成图标,支持自定义 URL 和命令行图标。

A phone‑home‑screen‑style launcher for Windows, built with PyQt6.
Drag files, folders, or shortcuts onto the grid to create icons. Supports custom URL and command icons.


预览 · Preview

┌──────────────────────────────────────────────┐
│  文件  帮助                                   │  ← 菜单栏
├──────────────────────────────────────────────┤
│  [主页]  [工作]  [工具]                      │  ← 多行标签栏(缩小时自动换行)
│                                              │
├──────────────────────────────────────────────┤
│   ┌──────┐   ┌──────┐   ┌──────┐           │
│   │  📁  │   │  📄  │   │  🌐  │           │  ← 48×48 图标网格
│   │ 项目  │   │ 报表  │   │ GitHub│           │
│   └──────┘   └──────┘   └──────┘           │
│                                              │
├──────────────────────────────────────────────┤
│  就绪 — 拖入文件或右键空白区域创建图标       │  ← 状态栏
└──────────────────────────────────────────────┘

功能 · Features

🖱️ 拖放添加 从资源管理器拖入文件/文件夹/.lnk 快捷方式即可创建图标
🔗 自定义图标 右键空白区域 → 新建文件/文件夹/快捷方式/网址/命令图标
✅ 批量管理 文件 → 批量管理,勾选图标后批量删除
✏️ 编辑属性 右键 → 编辑属性…,快捷方式支持描述与自定义图标
✏️ 双击改名 双击标签页标题或图标标题就地改名(Enter / 点别处提交,Esc 取消,留空不改)
🖥️ 打开方式 右键 → 用其他应用打开…(Windows 打开方式对话框)
🔍 图标搜索 Ctrl+F 按名称过滤,Esc 关闭
📋 文本页(粘贴板) 一种标签页类型:左列备注 + 右列文本,点一行即复制,可增删改、可拖动排序与搜索
🔄 刷新图标 右键 → 刷新图标:图标源文件换过内容时重新提取缓存(不改任何属性)
📏 图标大小 视图 → 图标大小(小/中/大),偏好持久化
📱 手机网格布局 图标自动排列,窗口缩放时自动调整列数
↔️ 拖动排序 图标可在标签页内拖动排序,也可跨标签页移动
🏷️ 多行标签栏 窗口缩小时标签页自动换行,双击/F2 重命名,←→ 切换
🌐 中英双语 文件 → 语言 切换,偏好自动保存
📦 导入导出 ZIP 压缩包备份/恢复,含版本信息和进度条
⌨️ 快捷键 15+ 快捷键覆盖所有功能,Ctrl+B/Ctrl+F/Shift+Del 等
💾 自动保存 所有操作即时写入 data/tabs.json,支持启动恢复
🎨 Win11 风格 圆角设计、Fluent 风格,浅色/深色主题即时切换
🖱️ Drag & drop Drop files, folders, or .lnk shortcuts from Explorer to create icons
🔗 Custom icons Right-click empty area → New File/Folder/Shortcut/URL/Command icon
✅ Batch manage File → Batch Manage, check icons to bulk delete
✏️ Edit properties Right-click → Edit…; shortcuts support description & custom icon
✏️ Double-click rename Double-click a tab title or icon label to rename in place (Enter / click-away commits, Esc cancels, blank = no change)
🖥️ Open With Right-click → Open With… (Windows dialog)
🔍 Search icons Ctrl+F filters by name, Esc closes
📋 Text tab (clipboard) A tab type with note + text columns; click a row to copy, plus add/edit/delete and search
📏 Icon size View → Icon Size (small/medium/large), preference saved
📱 Phone‑grid layout Auto‑flow grid, columns adjust on window resize
↔️ Drag to reorder Rearrange icons within a tab; drag to another tab to move
🏷️ Multi-row tabs Tabs wrap on narrow windows; double-click/F2 to rename; arrows to switch
🌐 Bilingual File → Language, preference auto‑saved
📦 Backup ZIP export/import with metadata and progress bar
⌨️ Shortcuts 15+ keyboard shortcuts: Ctrl+B, Ctrl+F, Shift+Del, and more
💾 Auto‑save Instant persistence to data/tabs.json; survives restart
🎨 Win11 themed Rounded corners, Fluent Design aesthetic, light/dark themes

安装 · Install

# 克隆项目
git clone <repo-url>
cd ToolboxPanel

# 安装依赖 (仅两个)
pip install -r requirements.txt

依赖 · Dependencies

  • Python ≥ 3.10
  • PyQt6 ≥ 6.5 — GUI 框架
  • pywin32 ≥ 305 — Windows .lnk 快捷方式解析

运行 · Run

python run.py

首次运行会自动创建 data/ 文件夹并初始化配置。


编译 · Build

将工具箱打包为独立文件夹,无需安装 Python 即可运行。

# 安装 PyInstaller(一次性)
pip install pyinstaller

# 编译
python build.py

# 清理编译产物
python build.py clean

编译完成后,dist/Toolbox/ 文件夹可复制到任意 Windows 电脑直接运行:

dist/Toolbox/
├── Toolbox.exe        ← 双击启动
└── _internal/         ← 运行时依赖(勿手动修改)

目录打包(--onedir)比单文件(--onefile)更可靠,启动更快,也是 PyInstaller 推荐的分发方式。


项目结构 · Project Structure

ToolboxPanel/
├── run.py                         # 开发入口 · Dev entry point
├── launcher.py                    # 打包入口 · Build entry point
├── build.py                       # 编译脚本 · Build script
├── requirements.txt               # 依赖 · Dependencies
├── README.md                      # 本文件 · This file
├── data/                          # 运行时数据 (自动创建 · auto‑created)
│   ├── tabs.json                  # 标签页 & 图标状态
│   ├── config.json                # 用户配置(语言偏好等)
│   └── icons/                     # 图标 PNG 缓存
└── src/toolbox/
    ├── main.py                    # QApplication + Win11 样式
    ├── app_window.py              # QMainWindow 主窗口
    ├── tab_widget.py              # QStackedWidget + WrapTabBar — 标签页管理
    ├── wrap_tab_bar.py            # 自定义多行标签栏
    ├── i18n.py                    # 中英双语翻译模块
    ├── shortcut_dialog.py         # 快捷键参考对话框
    ├── progress_dialog.py         # 进度条 + 日志对话框
    ├── icon_grid.py               # QScrollArea + DropContainer — 图标网格
    ├── icon_widget.py             # 单个图标组件 (图标 + 标签 + 复选框)
    ├── icon_label.py              # 可编辑标签 (双击改名/连字符/省略号)
    ├── flow_layout.py             # 自定义 QLayout — 手机网格 + 可变宽度
    ├── models/
    │   ├── data_store.py          # JSON 持久化
    │   ├── tab_model.py           # 标签页数据模型
    │   └── icon_model.py          # 图标数据模型 + IconType 枚举
    ├── services/
    │   ├── backup_manager.py      # ZIP 导入/导出 + 后台线程 + 元数据
    │   ├── icon_resolver.py       # 系统图标提取 & 缓存 & .lnk 解析
    │   └── launcher.py            # 打开文件/URL/运行命令/快捷方式
    └── utils/
        └── windows_shortcut.py    # pywin32 WScript.Shell .lnk 解析

数据格式 · Data Format

data/tabs.json 使用 sort_order 而非像素坐标存储图标位置,窗口缩放不会影响布局。

Icons use sort_order (not pixel coordinates) so resizing the window never breaks the layout.

{
  "version": 1,
  "tabs": [
    {
      "id": "uuid",
      "name": "主页",
      "order": 0,
      "icons": [
        {
          "id": "uuid",
          "type": "file | folder | shortcut | url | command",
          "display_name": "我的文件",
          "source_path": "C:\\Users\\...\\file.docx",
          "target_path": "C:\\Users\\...\\file.docx",
          "arguments": "",
          "working_dir": "",
          "icon_cache_file": "uuid.png",
          "sort_order": 0
        }
      ]
    }
  ]
}

更新日志 · Changelog

v2.0.9 (开发中)

v2.0.8 定版发布后的下一轮开发,范围待与用户逐项确认。 目前候选:批次 4 · 好用度(批量导入开始菜单/桌面快捷方式、频次排序、备份轮转); 另有几项小尾巴(拖到标签栏空白处没有落点、标签栏拖动自动滚动)。

v2.0.8 (2026-10-06) — 标签页拖动重排 + 图标跨页面拖动(含 4 处实测修复)

v2.0.7 定版发布后的下一轮开发。本版两件事:① 新增标签页拖动重排(把标签拖到新位置); ② 把图标跨页面拖动从"代码里有、实际用不了"修到真能用(三处根因 + 两处体验问题)。 没有破坏性变更:data/tabs.json 与 data/config.json 格式一字未改,旧数据与旧备份包照旧可用。

🔀 标签页拖动重排(新功能)

  • 按住标签横向拖 ⇒ 标签之间出现插入竖条,松手即换位置;拖到标签栏右侧空白处 = 放到最后;
  • 拖回原位(小幅拖动后松手)与拖动中按 Esc 都不改顺序;
  • 拖动期间内容区不跟着翻页;松手后被拖的那个标签仍是当前页;
  • 与"把图标拖到标签上做跨页移动"互不干扰 —— 一次拖动只会是其中一种。

📦 图标跨页面拖动(把图标从一个标签页搬到另一个)

  • 把图标拖到另一个标签上松手 ⇒ 追加到那一页末尾;源页那一个会消失(不会两边都有);
  • 鼠标移到哪个标签,就立刻切到哪一页(本版由"停半秒才切"改成立刻), 切过去后可以在该页里选位置放下(精确落位那条路);
  • 拖动经过标签时,那个标签会有一圈强调色描边(提示"松手就落进这一页");
  • 搬过去的图标当场就显示图案(不必再右键「刷新图标」);
  • 不同类的内容仍然互斥:图标丢到列表页 / 文本页的标签上会被明确拒收(状态栏给一句提示)。

🐞 修复(本轮你实测发现并反馈的)

  • 跨页搬过去的图标,源页还留着一个(同一图标出现在两个页面上,重启后才正常)—— 界面集合的同步代码只重排、不删除已经不在数据里的项;
  • 拖到标签名字上完全没反应:拖放的命中判定在真实拖动时拿不到标签栏(而拖标签却正常) ⇒ 改成按指针坐标判定,并把拖放处理器挂到标签栏外层容器(子元素标记"已处理"也照样收到);
  • 搬过去的图块是空白:它"已经加载好位图的实例"留在了源页,目标页补建的新实例没有图源 ⇒ 现在把实例直接搬过去(外加一条"从已有缓存读图"的兜底);
  • 跨区域松手时偶尔被当成"取消":落库判定原先只剩一个信号(DropResult), 补了一条会话级"确实落下过"的证据(三个信号取或)。

质量

  • 单测 678 → 710 项全绿;编译 0 警告 0 错误;
  • 新增 Core CollectionSync("界面集合跟随数据源"的判据:该删的删 / 该挪的挪 / 该插的插,9 条单测) 与 TabReorder.HitTestIndex(按坐标命中,3 条单测);
  • 新增/加强两条源码守门员:集合同步必须走 Core 判据(不许再手写"只 insert/move"的循环)、 "把容器当数据项"的写法不许回来。

已知未做

  • 松手在标签栏空白处(不是标签上)目前没有落点(什么都不发生);标签栏拖动自动滚动也未做。

v2.0.7 (2026-10-03) — 文本页(粘贴板)+ 文本页拖拽排序 + 双击文字就地改名 + 6 处实测问题修复

v2.0.6 定版发布后的下一轮开发。本轮已做:新增第三种标签页类型「文本页」、 双击文字就地改名(标签页标题 / 图标标题)、文本页的拖拽排序、右键「刷新图标」, 以及六项实测问题的修复(详见下面「修复」一段)。

📋 文本页(粘贴板)

  • 标签栏右键 →「新建文本标签页」(或快捷键 Ctrl+Shift+X)即可新建;
  • 表格两列:左列备注 + 右列文本;
  • 点一行就把该行文本复制进剪贴板(多行内容原样保留;右键菜单里也有「复制」);
  • 右键菜单:新建文本项 / 编辑属性… / 复制 / 删除;备注可以留空,文本必填;
  • 搜索(Ctrl+F)按备注或文本过滤;
  • 中英双语齐备。

↕️ 文本页拖拽排序(2026-10-03)

  • 文本页里的行现在可以像列表页那样按住拖动:拖动时行间出现一根插入横条,松手即插入;
  • 还支持跨文本页搬:把一行拖到另一个文本标签上停一下(自动切页)或直接松手在标签上, 它就会追加到那一页的末尾;
  • 三类内容的「归属」是互斥的:图标只进网格页、列表项只进列表页、文本项只进文本页 —— 把图标拖到文本页上会被明确拒绝(状态栏给一句提示);
  • ⚠️ 拖动要按住行的空白处:直接拖文字本身可能被系统当成"选中文字",这是预期行为。

✏️ 双击文字就地改名

  • 双击标签页标题或图标标题即可当场改:文字原地变成输入框(自动全选);
  • Enter 或点别处提交,Esc 取消;留空 = 什么都不改(回退原值),没改也不会写盘;
  • 图块本来是「单击即打开」,为了不误开程序:按在文字上时把打开延后约半秒 (读系统双击间隔,夹在 250~500ms)—— 单击仍照常打开,双击则只改名;按在图标本体上仍是立刻打开;
  • 右键菜单里的「重命名 / 编辑属性…」照旧可用(两条路共用同一套校验与提示)。

🛠 修复(用户实测反馈,2026-10-03)

  • 图标 / 列表行 / 文本行 / 标签的右键菜单都弹错了一版(复验「刷新图标」时发现的): 四个菜单各自用来判断"点在哪一项上"的那段代码写错了 —— 它只看条目容器身上的数据, 而那个位置是空的(真正带着数据的是模板里的元素)。结果是无论在哪儿右键都被当成 "点在空白处":图标菜单只会出现"新建类"那一版、标签右键也看不到「重命名 / 删除」。 现在四种菜单共用同一份判据(两条路都走),并加了一条扫源码的检查防止这种写法再回来;
  • 双击图标文字后程序仍会被打开:双击手势的第二下会同时产生一次「双击」与一次「单击」事件, 而两者的先后顺序由系统决定 —— 于是"进了就地改名"之后,那次"单击"又把「延后打开」重新登记了一遍, 半秒后真的把程序打开了。现在加了一道闸门:双击之后一个系统双击间隔内的单击一律作废 (不看事件顺序),并且把这条时序写进诊断日志,以后一眼可分辨是否复发;
  • 新增右键「刷新图标」:图标源文件换了内容(程序升级、.ico 被替换)但路径没变时, 以前没有任何入口能让它重新取图 —— 现在右键菜单里多一项「刷新图标」(排在「重命名」与「删除」之间), 它只重取图标缓存、不改任何属性;网址 / 命令这类没有可提取来源的会提示一句; 🔧 同日修:它原先只按"来源路径"取图,所以"来源的桌面快捷方式已被删除、程序还在"的条目 刷了也没用(会一直显示通用图标)—— 现在按**"来源 → 目标里第一条真实存在的路径"取图 (与"打开"同口径),取不到时还会告诉你是哪条路径不存在**;
  • 设置里选了小/大图标,之后拖进来的图标却仍是中号:图标尺寸原先只下发给"设置那一刻已存在的图块", 新拖入 / 新建 / 导入进来的图块没人给它下发。现在把"当前档"记在标签页上, 新图块一建出来就是当前档,不再需要打开一次设置去"刷"它;
  • 标签名很短时,选中会让标签左右抽动一下:选中指示条是固定宽度,比标签本身还宽时会把标签撑开。 现在给标签项设了最小宽度(比指示条略宽),点选不会再抖。

📐 列表页 / 文本页两列改为「表格对齐」(用户实测反馈:"参差不齐,我想要表格对齐的样子")

  • 根因:ListViewItem 默认水平对齐是 Left ⇒ 每行只占"自己内容的宽度" ⇒ 行模板里的星号列 (2*:3*)按每行各自的宽度去分,第二列在每行从不同的 x 开始;
  • 修法:行容器水平对齐改 Stretch(两页各一处),行与表头的根 Grid 再显式 Stretch 兜底;
  • 实测(DPI 感知 PrintWindow 抓图 + 逐行量"第二列起点"):列表页 7 行由 69/95/116/128/137/191/210 变为全部 496;文本页表头 + 4 行全部 495(±1px 是字形抗锯齿)。

其余候选(范围待与用户逐项确认,尚未开工):代码体检轮留下的几项数据安全加固、 标签页的拖动重排、以及原计划的「好用度」批次(批量导入快捷方式 / 频次排序 / 备份轮转)。

v2.0.6 (2026-09-22) — 主题引擎做全 + 两处显示修复 + 代码体检(第二轮)

v2.0.5 定版后的下一轮开发:细节打磨(用户 2026-09-19:"先打版 tag,下一版做一下细节")。 ✅ 已完成: 搜索框对称性修复(干掉内层文本框自带的下划线 —— 它只覆盖文字区,聚焦提示改由外层圆角容器承担)、 搜索框弹出动画(原来是把内容区"蹦"一下挤下去)、 快捷键设置界面(把只读的「快捷键参考」升级为可改键 + 冲突检测)、 快捷键设置的入口从标题栏搬进设置面板(用户反馈"快捷键在哪里设置?" —— 原来藏在标题栏一个 ❓ 图标里, 而所有其它设置都在设置面板 ⇒ 现在设置面板里有「快捷键设置」一节)、 主题引擎做全 🆕(5 个预置主题:深色 / 浅色 / 午夜蓝 / 葡萄紫 / 抹茶绿 + 跟随系统; 外观微调 6 个参数滑杆:窗口不透明度 / 卡片不透明度 / 卡片悬停 / 圆角 / 悬停时长 / 抽屉不透明度, 拖动即时生效并可一键恢复默认外观;逐令牌颜色覆盖仍可从 config.json 的 theme_overrides 生效; ⚠️ 两点如实说明:「模糊强度」在系统材质(Mica/Acrylic)下不可调,故不提供滑杆; 「动效时长」与设置里原有的动效时长是同一个值,只保留一个入口)。 颜色与参数逐字照抄原版实现,并有"与原版逐字段比对"的保真测试守住。 图标透明背景修复 🆕(2026-09-21):修掉"有的图标背后有一块黑方块"—— 图标提取时把透明区误当成了不透明黑(深色主题下看不出来,浅色主题下一眼可见)。 修好之后,已有图标缓存会在下次启动时自动重新提取(沿用原文件名 ⇒ 数据文件与图标引用都不受影响)。 设置面板发黑修复 🆕(2026-09-21):修掉"设置面板整块变黑、里面的字几乎看不见"—— 面板的玻璃效果缺少色调层,颜色会跟着窗口背后是什么变(背后是深色就整块发黑), 而且在部分显卡/驱动组合下,即使补上色调层也仍会被合成成黑色。 现在面板改用实心表面(不再依赖系统合成层):浅色主题就是浅面板、深色主题就是深面板, 想要玻璃观可以在「外观微调 → 抽屉不透明度」把它调透。 设置面板手感修复 🆕(2026-09-21):滑杆现在整条轨道都能点、能拖(原先只有那个小圆点能拖), 设置面板右上角的关闭按钮、以及标题栏的 设置 / 关于 / 搜索 三个按钮命中区都放大了; 另外拖动滑杆时不再每一下都做整套重绘,手感更跟手。 界面细节修复 🆕(2026-09-21):标题栏的文字重新对齐(放大按钮时被顶高了几个像素); 另外关掉了"鼠标停在窗口里就飘出一个快捷键小方框"的系统行为(快捷键本身不受影响)。 候选范围(待与用户逐项确认,不预先承诺): 标签页拖动重排(2.0.5 有意留出,需用户手验)、 好用度(批量导入开始菜单/桌面快捷方式、按使用频次排序、自动备份轮转)、 以及已记录的交互细节(标签栏右键菜单措辞、Ctrl+B 在列表页无批量模式时的反馈等)。

v2.0.5 (2026-09-19) — 标签页管理 + 快捷键体系

把老版本有、而这一线一直缺的两块补齐:标签页管理与快捷键。 无破坏性变更:tabs.json 格式不变、配置项不变,旧版数据与备份包照旧可用。

  • 标签页管理 🆕(此前根本无法新建标签页 —— 数据层早就写好,界面上一个入口都没有): 标签上右键出「新建标签页 / 新建列表标签页 / 重命名 / ─── / 删除」,标签栏空白处右键只出两个「新建」; 新建后立刻选中新页,重命名后标签栏名字立即变,删除要二次确认且至少保留一个标签页; 删除非当前页时你正在看的那一页不会被切走
  • 重置数据 🆕(此前完全没有):设置面板 →「数据」一节 →「重置数据」, 二次确认后清空所有标签页与图标缓存、重建默认页(与底部的「恢复默认设置」是两件事)
  • 快捷键体系 🆕(从 4 条补到 17 条)+ 标题栏 **❓「快捷键参考」**窗口: 标签页 Ctrl+T / Ctrl+Shift+T / Ctrl+R / Ctrl+W / Ctrl+Shift+Tab·Ctrl+Tab; 查找 Ctrl+F;批量模式 Ctrl+B、批量删除 Shift+Delete; 新建五类图标 Ctrl+Shift+F·O·L·U·P;重置数据 Ctrl+Shift+R;导出导入 Ctrl+Shift+E·I
  • 快捷键不会抢你正在打的字:焦点在搜索框/输入框里时,除 Ctrl+F(搜索栏自身的开关)以外 一律不生效 —— 例如在搜索框里按 Shift+Delete 是剪切文字而不是删图标; 对话框开着时也不会误触发(不会弹出第二个对话框)
  • 两条自查修正(复查刚写的代码时抓到):删除非当前标签页不再切走当前页(判据抽成 Core 纯函数 + 6 条回归测试);修正"焦点守卫一刀切"造成的 Ctrl+F 失效(改成目录里的 SafeWhileTyping 声明 + 守门员测试)
  • 质量:单测 413 → 472 项全绿(新增的都是带"改之前会怎样"说明的回归测试),编译 0 警告 0 错误
  • 本版不含:标签页拖动重排(留到以后单独一批)、主题引擎(5 预置 + 8 参数)、 好用度(批量导入 / 频次排序 / 备份轮转)
  • 有意不列的三条快捷键:图标 F2 改名 / Delete 删除 / Enter 打开 —— 本实现的页面里没有"选中项"这个概念(单击即打开,选择只有批量模式的勾选框), 硬加会做成"按了没反应"的哑快捷键;"删除勾选项"已由 Shift+Delete 覆盖

v2.0.4 (2026-09-19) — 稳定性修复:代码体检 + 单实例

修复 / 加固版:一轮系统性代码体检(修 bug、删冗余、增强壮性)+ 修好「重复启动会开多个实例」。 无破坏性变更:tabs.json 格式不变、配置项不变,旧版数据与备份包照旧可用。

  • 导入备份失败不再清空你的数据 🐛:原先"先清空再解压",包只要有一点问题(截断 / 文件被占用 / 磁盘满 / 路径过长)就会在删光 icons/ 与 tabs.json 之后才失败;现在先解到暂存区、确认可用才动数据, 任何失败都保证一个字节都不改。导出也改为"先写临时文件、成功才落成正式 zip"(不再留半截包)
  • 重复启动会把已有窗口拉到前台 🐛:以前第二次双击不会新开窗口、但已有窗口也不会升起 (让"即将退出的第二进程"去操作"别人的窗口"会被 Windows 前台锁拒绝);现在由窗口自己恢复并前置, 最小化时同样会被恢复
  • 取消的拖动不再被误当成"落下" 🐛:快速连续拖动时上一轮的残留标记会改掉顺序
  • 点「浏览…」选文件失败不再闪退 🐛(异常原先直接穿到事件处理器)
  • 安全 / 健壮性 🔒:图标缓存文件名不再能越出数据目录(..\config.json 那种值会删到设置文件); 图标提取失败路径不再漏 GDI 句柄;写盘改为"同一目标排队 + 失败不留临时文件"
  • 其它:图标缓存目录会回收没人引用的旧图;拖动诊断日志从第二次拖动起不再失效; 自检文件不再显示"窗口材质:未初始化";示例图标路径字段口径与「新建图标」对齐(批量补种 20 次写盘降为 1 次)
  • 质量:单测 388 → 413 项全绿(新增的都是带"改之前会怎样"的回归测试),编译 0 警告 0 错误
  • 本版不含(仍在计划中):标签页右键菜单(新建 / 重命名 / 删除)与标签页拖动重排、主题细调

v2.0.3 (2026-09-19) — 中英双语(i18n)

功能补齐版:整个界面支持中文 / English,可在设置里即时切换、无需重启。 无破坏性变更:tabs.json 格式不变,配置项只增不改,旧版数据与备份包照旧可用。

  • 语言切换 🆕:设置面板新增「语言」一节(中文 / English),切换后界面整体立即更换, 偏好写入 config.json(下次启动记住)
  • 覆盖面:标题栏提示、状态栏、搜索栏、批量管理条、空页 / 无匹配提示、标签栏数量, 以及全部对话框(关于 / 新建·编辑图标 / 重命名 / 列表项 / 备份进度 / 确认框)
  • 文案与原版对齐:中英 374 条,key 命名与原版 v1.11.6 的 i18n.py 完全一致(原 key 未改名); 有一条保真测试用真实原版 Python 解析 i18n.py 与 C# 侧逐 key、逐语言逐字比对
  • 有意保留:开发者诊断日志(%TEMP% 下的自检 / 拖动链路 / 崩溃日志)与 --demo 演示数据不随语言变; 用户数据里的名字与路径属于数据,切语言不会改写(示例图标名跟随"首次创建时"的语言)

v2.0.2 (2026-09-18) — 功能补齐:图标管理 / 备份 / 搜索

在 v2.0.1(WinUI 3 重写)基础上,把原版 v1.11.6 的外围功能逐项补齐。 数据格式未改动,v1.11.6 / v2.0.1 / v2.0.2 可互相读写同一份 data/。

  • 新建 / 编辑图标:网格页空白处右键新建 文件 / 文件夹 / 快捷方式 / 网址 / 命令 五类; 文件类先弹系统选择框并预填名称与路径(.lnk 自动解析目标 / 参数 / 工作目录); 图块右键「编辑属性…」字段随类型变化,校验不过不关窗;旧图标缓存提取成功后才删
  • 右键菜单:图块 = 打开 / 用其他应用打开… / 打开文件位置 / 编辑属性… / 重命名 / 删除; 列表页行 = 编辑属性… / 重命名 / 删除,空白处右键新建列表项
  • 批量管理:勾选多项 + 全选 + 批量删除(二次确认,默认按钮=取消),一次落盘并连带清理缓存
  • 拖入添加:从资源管理器拖入文件 / 文件夹 / 快捷方式即创建图标(Copy 语义,逐条提示重复与不存在)
  • 拖动排序(重做后定稿):按下即拖 → 相邻处显示插入竖条(列表页为横条)→ 松手插入 → 落盘; 拖动期间不让位,插入后不再重播入场动画;支持同页重排与跨页移动
  • 搜索过滤 🆕:标题栏 🔍 / Ctrl+F 打开搜索栏,Esc 关闭; 按 名称 / 来源路径 / 目标路径 过滤当前页(列表页按 说明 / 路径),右侧显示「匹配 N / M」, 无命中提示「没有匹配的图标」;过滤状态下拖动排序仍可用(落点换算回真实列表位置后落库)
  • 备份 / 恢复(导入导出 ZIP):设置面板「数据」一节 + Ctrl+Shift+E / Ctrl+Shift+I; 导入前二次确认、导入后自动重载;与原版 Python 的备份包双向兼容
  • 关于 / 诊断:标题栏 ⓘ → 版本(运行时读程序集)、作者、可点击项目地址、原版 6 条提示、可展开诊断
  • 图标大小三档:设置面板「图标」一节(小 / 中 / 大),只改显示尺寸、不重取缓存
  • 修复:「关于」对话框不随主题切换 / 字体颜色错 / 诊断信息无法滚动;切主题后标题栏与标签栏 部分图标与文字不跟随(7 处);空页提示与数据脱钩(新建后提示不消失、删光后不出现); 拖动三处(插入指示线位置、插入后重播入场动画、同页往后拖多走一格)
  • 质量:单测 374 项全绿(含与原版 Python 双向兼容测试)

v2.0.1 (2026-09-14) — 大版本重构:UI 前端推倒重来(WinUI 3)

重构目标(达成)

  • UI 前端全部推倒重来:高动效 + 半透明 + **毛玻璃(Mica / Acrylic)**观感
  • UI 最终选用 WinUI 3 / Windows App SDK(C#,单进程),视觉层与数据层全部 C# 实现 (选型沿革:Flutter → Qt Quick/QML → WinUI 3;只有 WinUI 3 能同时做到"整窗玻璃"与"元素级模糊"两层同源)
  • 老版本数据文件(tabs.json v1)完全兼容:读入字段无损、写回可被 v1 读回

本版功能(对照 v1.11.6 已对齐的部分)

  • 窗口:无边框自绘标题栏 + 系统窗口按钮(保留缩放 / 贴边分屏 / 圆角),窗口材质 Mica / MicaAlt / 桌面 Acrylic / 纯色可切换
  • 标签页:横向标签栏;网格页与列表页两种类型;标签图标三态(只文字 / 常驻 / 悬停浮现)
  • 图标:文件 / 文件夹 / 快捷方式 / 网址 / 命令 五类,图标自动提取并缓存;点击即打开
  • 拖拽排序:同页重排 + 跨页移动(拖到标签上停一下自动切页;松手在标签上则追加到该页末尾)
  • 主题:跟随系统 / 浅色 / 深色,全局生效(主窗口、标签栏、状态栏、设置面板同一套令牌)
  • 设置面板:窗口材质、主题、标签栏、动效(时长 / 曲线)分节,改完立刻保存;带滑入 / 滑出动画
  • 动效:切页整片淡入(可调时长与曲线)
  • 单实例守卫、数据自动保存与损坏容错、窗口大小记忆
  • 首次运行内容为空时自动补充示例图标(系统自带程序,覆盖全部 5 类)

运行要求

  • 仅支持 Windows 11(窗口材质用 Mica;Win10 会由系统自动回退纯色)
  • 免安装:解压即用(Windows App SDK 自包含),不需要 MSIX 与证书

数据兼容

  • data/tabs.json 格式不变(version: 1),v1.11.6 的数据可直接使用,也可回退到 v1.11.6 打开
  • 新增设置项写入 config.json 的新键(ui_theme / backdrop / tab_icon_mode / show_tab_counts / animations / animation_duration_ms / animation_easing),旧版读到多余键会原样保留,不影响使用

v1.11.6 (2026-08-25)

新增

  • 多主题外观:视图 → 主题,可在浅色 / 深色(Win11 深色配色)之间即时切换,偏好自动保存
  • 导入数据前新增二次确认对话框:提示「导入将清空并覆盖现有数据」,防止误操作

v1.11.5 (2026-08-18)

新增

  • 单实例运行:同一时间只允许一个实例,重复启动时自动拉取已有实例的窗口(防止数据文件被多个实例互相覆盖)

其他

  • 代码清理:移除未使用的导入与局部变量

v1.11.4 (2026-08-18)

新增

  • 列表式标签页行右键新增「编辑属性…」(修改说明与路径)和「重命名」(内联改名)

修复

  • 修复列表式标签页拖拽时幽灵窗口位置偏左/漂移的问题(高分屏 DPI 错位 + 抓取点修正)

v1.11.3 (2026-08-18)

修复

  • 修复列表式标签页拖拽排序失效的问题(拖拽后行消失、顺序不保存)——改为完全自定义拖拽实现
  • 修复列表式标签页拖拽时程序闪退的问题(缺失导入)

v1.11.2 (2026-08-18)

新增

  • 列表式标签页支持左键上下拖拽调整行顺序(带插入指示线),顺序自动保存

修复

  • 修复列表标签页添加新项后重启应用该项出现两次的问题(数据重复写入)
  • 修复「文件 → 重置数据」必然崩溃的问题(未定义变量)
  • 修复编辑快捷方式图标并设置自定义图标时的崩溃(缺失 import)
  • 修复列表标签页重命名不保存的问题(重启后名称还原)
  • 修复语言切换时列表标签页名称不刷新的问题
  • 版本号收敛为单一来源(__version__),关于对话框 / 导出元数据 / 编译横幅自动跟随

v1.11.1 (2026-08-14)

新增

  • 列表式标签页(全新标签页类型):文件 → 新建列表标签页 (Ctrl+Shift+T) 或标签页右键菜单
    • 两列列表:说明 + 文件/文件夹地址,列分割线可拖拽调整
    • 第一列双击内联编辑,悬停显示完整文本
    • 第二列单击直接打开,双击弹出文件/文件夹选择对话框
    • 右键单元格删除(带确认),Delete 键删除选中行
    • 空白处右键新建列表项(描述 + 路径选择)
  • 数据格式:TabModel 新增 tab_type 与 list_items 字段

兼容性

  • 完全兼容旧版导出数据(旧 JSON 自动按图标网格类型加载)
  • 新导出数据包含列表标签页,不要求旧版本兼容

v1.10.4 (2026-08-01)

新增

  • 图标编辑功能:右键图标 → 编辑属性…,按类型显示字段(名称/路径/参数/URL/命令)
  • 快捷方式设置界面优化:新增描述字段 + 自定义图标(文件选择 + 索引 0-999 + 使用默认重置)
  • 用其他应用打开(右键 → 用其他应用打开…),调出 Windows「打开方式」对话框
  • 图标搜索:Ctrl+F / 视图 → 查找,按名称实时过滤,Esc 关闭
  • 图标大小切换:视图 → 图标大小(小 32 / 中 48 / 大 64),偏好持久化
  • 新建快捷方式图标(右键空白区域 → 新建快捷方式图标…)
  • 批量管理复选框高对比度样式

修复

  • 修复 IconGrid.setStyleSheet 过早调用导致的 Qt 6 原生崩溃(移至 init 末尾)
  • 修复 IconEditDialog 未使用导入(QStackedWidget/QMessageBox/Qt)
  • 修复图标选择行重复添加(addRow 冗余调用)
  • 修复图标重提取逻辑混乱(自定义图标优先 → 路径变化回退重提取)
  • 新增 IconModel.description 字段持久化快捷方式描述
  • 新增 IconResolver.extract_icon_from_file()(ExtractIconEx 按索引提取,失败回退默认图标)
  • 清理临时调试文件

v1.10.3 (2026-07-19)

新增

  • 全局快捷键系统:Ctrl+B 批量管理、Ctrl+W/R 标签操作、Ctrl+Shift+* 创建图标
  • 快捷键参考对话框(帮助 -> 快捷键参考),中英双语表格
  • ZIP 压缩包导入/导出:含 metadata(版本/时间/统计)+ 进度条 + 实时日志
  • 导出文件名含时间戳 + 随机码,永不覆盖
  • 重置数据功能(Ctrl+Shift+R)
  • 所有菜单项标注快捷键

修复

  • 清理冗余代码,删除 context_menu.py、drag_data.py 等未使用文件
  • 清理 10+ 处未使用导入和死信号
  • README 全面更新

v1.10.2 (2026-07-19)

新增

  • 批量管理模式:文件 -> 批量管理,图标右上角复选框,勾选后批量删除
  • 多行标签栏:窗口缩小时标签页自动换行,不再隐藏
  • 标签页按钮宽度根据名称自适应
  • 双击标签页名称弹出重命名对话框
  • F2 快捷键重命名当前标签页
  • 左右方向键切换标签页
  • 新建标签页时弹出名称输入对话框
  • 编译脚本 build.py + launcher.py 打包入口

修复

  • 修复快捷方式打开报错 WinError 5 — 改用 os.startfile(.lnk)
  • 修复 QInputDialog.getText 按钮中英文不一致
  • 修复新建标签页对话框取消后仍创建
  • 删除冗余文件 context_menu.py, drag_data.py
  • 清理未使用的信号和导入

v1.10.1 (2026-07-18)

新增

  • 左键单击图标选中(蓝色边框)
  • Ctrl+单击多选
  • F2 重命名选中图标
  • Delete 批量删除选中图标
  • 中英文双语切换,偏好保存到 data/config.json
  • 关于对话框显示版本号、作者、项目地址

修复

  • 图标网格对齐 — AlignTop + stretch
  • 文字裁切 — 加宽组件 + 减少内边距
  • 长英文单词断词 — 连字符 hyphenation
  • QScrollArea 拖放事件拦截 — 自定义 DropContainer
  • FlowLayout 未纳入父容器 — 使用 addWidget
  • 菜单栏颜色对比度 — 深色底 + 白色文字

变更

  • 图标文字自动换行,超过三行省略
  • Win11 Fluent Design 风格
  • 图标文字白色 + 半透明暗色圆角底
  • 图标悬停高亮效果

v1.00 (2026-07-16)

  • 初始版本,核心功能完整

许可 · License

MIT

About

A software for managing tools and shortcuts

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages