Back to skills
extension
Category: Content & MediaNo API key required

桌面图标分区

桌面图标视觉分区工具 将软件快捷方式排到屏幕左侧 文档(txt/md/doc/pdf等)排到屏幕右侧 其余(文件夹/种子/网页)保持不动 只改图标坐标不移动任何文件 执行前先备份可一键还原 适用于把软件放左边文档放右边 桌面图标左右排列 图标分区整理的场景

personAuthor: wyxModelhubgithub

桌面图标分区器

把桌面图标按类型视觉分区:软件排屏幕左侧,文档排右侧。这是改图标坐标,图标仍留在桌面上原地可见,不移动/删除任何文件(区别于"桌面整理"skill——那个是把文件搬进文件夹)。

功能特点

  • 软件靠左:所有 .lnk/.url 快捷方式、.exe/.msi、系统图标(此电脑/网络/回收站/控制面板/用户文件夹)排到屏幕最左,从左上角向下、列满换列。
  • 文档靠右:.txt/.md/.doc/.docx/.pdf/.xls/.xlsx/.ppt/.pptx/.rtf/.csv/.odt 排到屏幕最右,从右上角向下、列满向左换列。
  • 杂项不动:文件夹、.torrent、.html 等保持原位。
  • 只改坐标:绝不移动、重命名、删除任何文件。
  • 先备份可还原:apply 前自动备份坐标,可一键 restore。

触发方式

用户提到"把软件放左边、文档放右边""桌面图标左右分区""软件靠左文档靠右""图标分区排列"等关键词时触发。

快速示例

  • "把我的软件放桌面左边,文档放右边" → plan 预览 → 批准 → apply
  • "桌面图标左右分区" → 同上
  • "把图标恢复原来的位置" → restore

⚠️ 调用方式(重要)

禁止 使用 subprocess.run(["python", ...]) 调用脚本 —— 打包环境中 python 可能指向 WindowsApps 占位符,导致 exit code 9009。

依赖:需要 pywin32,调用时设置 pip_install: ["pywin32"]

正确做法:在 python_execute 工具中直接 import 调用,或用 sys.executable:

import sys, os
skill_dir = r"C:\Users\admin\.claude\skills\desktop-icon-layout"
sys.path.insert(0, os.path.join(skill_dir, "scripts"))
import arrange_desktop
arrange_desktop.cmd_plan()   # 预览
# arrange_desktop.cmd_apply()  # 执行(需用户批准)

若直接 import 有模块冲突,改用:

import sys, os, subprocess
skill_dir = r"C:\Users\admin\.claude\skills\desktop-icon-layout"
r = subprocess.run([sys.executable, os.path.join(skill_dir, "scripts", "arrange_desktop.py"), "plan"],
                   capture_output=True, text=True, encoding="utf-8", timeout=60)
print(r.stdout); print(r.stderr)

工作流程

用户说:"把软件放左边,文档放右边"
    ↓
arrange_desktop.py plan     → 打印分区计划(哪些图标去左/右,哪些不动)
    ↓
向用户展示计划并征求批准
    ↓ 批准后
arrange_desktop.py apply    → 自动备份 → 移动图标 → 刷新桌面
    ↓ (可选)
arrange_desktop.py restore  → 从最近备份一键还原

使用流程

第一步:预览计划(不改桌面)

import sys, os
skill_dir = r"C:\Users\admin\.claude\skills\desktop-icon-layout"
sys.path.insert(0, os.path.join(skill_dir, "scripts"))
import arrange_desktop
arrange_desktop.cmd_plan()

输出:软件(左)/文档(右)/不动 三类的数量,以及每个图标的 旧坐标 -> 新坐标

第二步:征求用户批准

必须获得用户明确批准后才能执行 apply!

向用户展示:软件 N 个排左、文档 M 个排右、K 个保持不动。询问是否执行。

第三步:执行分区

arrange_desktop.cmd_apply()   # 会先自动备份坐标再移动

第四步:还原(可选)

arrange_desktop.cmd_restore()  # 从最近一次备份恢复所有图标坐标

命令行等价用法

python arrange_desktop.py plan      # 预览
python arrange_desktop.py apply     # 执行(自动备份)
python arrange_desktop.py backup    # 仅备份当前布局
python arrange_desktop.py restore   # 从最近备份还原

分类规则

| 归属 | 类型 | |------|------| | 软件(左) | .lnk / .url 快捷方式、.exe / .msi、系统图标(此电脑/网络/回收站/控制面板/用户文件夹) | | 文档(右) | .txt .md .doc .docx .pdf .xls .xlsx .ppt .pptx .rtf .csv .odt | | 保持不动 | 文件夹、.torrent、.html 及其他未匹配类型 |

技术说明

  • 通过桌面 SysListView32LVM_GETITEMPOSITION / LVM_SETITEMPOSITION 消息读写图标坐标,跨进程内存(ReadProcessMemory)读取图标名称。
  • 桌面图标显示名默认隐藏 .lnk 后缀,脚本会把显示名与用户桌面+公用桌面的真实文件匹配来判断类型。
  • 进程启动时声明 DPI 感知;否则在缩放(如 125%)下屏幕宽度会被读小(1920 报成 1536),导致右区贴不到最右边。
  • apply 后用 RedrawWindow + 桌面 F5 命令强制重绘,图标立即可见。

已知限制

  1. 平台:仅 Windows。在 Windows 10 + Python 3.12 + pywin32 实测通过;Win11 未系统性验证。
  2. 单显示器:按主屏尺寸布局,多显示器未验证。
  3. 自动排列:若桌面右键开启了"自动排列图标",手动坐标会被系统弹回。本机实测为关闭状态,故未强制改动系统设置;如遇图标被弹回,需先关闭"自动排列图标"。
  4. 图标数量过多:软件/文档超过单屏可容纳列数时会继续向内(左区向右、右区向左)排列,可能与中间的杂项图标重叠。

脚本文件

  • scripts/arrange_desktop.py — backup / plan / apply / restore 全部功能
  • assets/backup/ — 坐标布局备份 JSON(apply 前自动生成)

安全

  • 只改图标坐标,不碰任何文件内容/位置/名称,风险极小。
  • 每次 apply 前自动备份,可随时 restore 还原。