存到哪 使用说明（V1.6 · 用户级安装版）
========================================

〇、安装（仅用户级，无需 root）
  解压后进入目录，执行：
    bash install.sh
  脚本自动完成：清理旧版本 → 检查/安装依赖 → 安装程序文件（装到
  ~/.local/share/savejump/）→ 设置开机自启 → 后台启动。
  银河麒麟/统信 UOS 等国产商用发行版仅写系统 desktop 时提示一次 sudo（供控制中心快捷键选择）。

  依赖：python3-pyqt6（或 pyqt5）、xdotool、xclip、python3-pyperclip，
  安装脚本会自动补装；手动等价命令：
    sudo apt-get install xdotool xclip python3-pyperclip
    sudo apt-get install python3-pyqt6    # 缺则 python3-pyqt5

一、设置全局快捷键
  - deepin（X11）：系统设置 → 自定义快捷键 → 新建 → 程序选择
    「存到哪 快速呼出」（~/.local/share/applications/savejump-toggle.desktop），
    例如设为 Ctrl+Space 或 Ctrl+Alt+S。
  - 国产商用发行版（银河麒麟 V10 SP1 已实测，V11、统信 UOS 等流程相同）：
    1. 安装：若安全中心提示拦截（麒麟 KYSEC / 统信同类管控对未签名第三方程序的常规管控，
       并非程序问题），可先到 安全中心→应用保护 临时关闭「应用来源检查」
       「应用访问权限控制」再安装，装完可恢复。
    2. 安装后（关键）：到 安全中心→应用保护→应用程序执行控制→高级设置，
       右上角"加号"把
         ~/.local/share/savejump/savejump.py
         ~/.local/share/savejump/savejump-toggle.sh
       加入白名单（按路径持久放行）。否则即使弹窗点了"始终允许"也不持久——
       安全中心按程序签名/来源判断，本程序无签名，主程序开机自启后是新进程会被
       再次拦截，导致无法常驻、快捷键呼不出。加入执行控制白名单后才可稳定使用。
    3. 注销重登 → 设置→设备→快捷键→自定义快捷键→添加，程序选择
       savejump-toggle.desktop（install.sh 已自动写入系统目录并清理用户目录
       同名项），设置按键即可。
  - 快捷键 Exec 已统一指向启动脚本绝对路径
    （~/.local/share/savejump/savejump-toggle.sh），避免不同桌面解析 Exec
    差异导致按了没反应。

二、使用
  1. 打开任意应用的"保存/另存为"对话框；
  2. 按快捷键呼出搜索框，输入关键字；
  3. 在搜索框内按 ↑/↓ 即可上下移动结果选中项（越界自动夹紧、超长自动
     滚动保持可见），回车自动跳转当前项；Esc 关闭不跳转。
  技巧：
  - 多关键字用空格分隔（AND 关系）；
  - 搜文件时跳转的是文件所在文件夹；
  - 移动盘插入后盘内文件自动可搜，搜盘名可直接跳盘根；
  - 跳转前复制过文本/文件，跳转后约 1 秒剪贴板自动恢复（不覆盖跳转后
    你新复制的内容）。

三、设置界面（托盘 → 设置）
  1. 可视化设置窗口，改完全自动保存并生效：
    - 排除目录（每行一个完整路径，不被索引）
    - 文件索引上限 max_files（允许 100~500000，默认 60000）
    - 文件索引深度 index_files_depth（允许 1~30，默认 6；勾选「仅索引
      文件夹」后自动置灰）
    - 目录索引深度 index_dirs_depth（允许 1~50，默认 8）
    - 索引范围（folders_only，默认开启）：勾选「仅索引文件夹」后不再
      索引文件，索引增删大幅减少，且「文件索引深度」联动置灰；取消勾选
      可恢复搜索文件
    - 移动盘/挂载盘索引（三个开关，见下节）
    - 后台重扫间隔（秒，rescan_interval，默认 0 = 仅启动和呼出搜索框时
      扫描；非 0 最小 5 秒，低于 5 秒保存时自动提到 5 秒）
  2. 改到索引相关项（排除/上限/深度/mounts/白名单/仅文件夹）会立即重建索引；
     改重扫间隔由后台线程动态套用，无需重启程序。
  3. 手改 config.json（~/.config/savejump/config.json）同样有效
     （首次运行自动生成默认值）。

四、移动盘/挂载盘索引（三个开关）
  - 启用 /media 与 /mnt 索引（index_mounts）：全量扫描是否包含整个
    /media 与 /mnt。完全不想索引挂载盘的用户可关掉。
  - 自动跟随挂载/卸载（auto_mount_index，默认开）：临时盘（U 盘、移动
    硬盘等）自动"挂载时建索引、卸载时删索引"，不留残留。挂载点自动识别
    /media、/mnt、/run/media 下的真实挂载（含 /media/用户名/卷标 二级挂载）。
  - 持久挂载白名单（mount_whitelist）：把挂载点声明为「常驻数据盘」
    （第二硬盘/长期外置盘，区别于临时 U 盘）。白名单盘始终索引、拔走/卸载
    不删索引，且不受「启用 /media 与 /mnt」和「自动跟随挂载/卸载」两个
    开关影响——关闭全量挂载索引时，白名单盘是唯一仍被索引的挂载点。
  - 启动顺序：文件系统先挂载、用户自启进程后启动，开机后已挂载的盘都能
    被索引到；关机/重启时程序先于文件系统卸载而退出，不会触发"卸载删索引"，
    开机不丢索引、无需重建。只有「运行中拔出/卸载」才会删该盘索引，再插回
    自动重建。
  - 白名单盘拔走期间搜索仍能搜到其路径条目，但此时跳转会失败（盘不在），
    插回即恢复。

五、升级与卸载
  升级：覆盖 ~/.local/share/savejump/savejump.py 和 icons/ 后重启程序，
       或重跑 bash install.sh。
  卸载：bash uninstall.sh（自动清理旧版目录与桌面项；不删 ~/.config/savejump
       的索引与配置，重装后索引仍在）。

六、常见问题
  1. 启动失败：缺依赖，装齐上文依赖即可。
  2. 跳转失败提示：多为对话框不响应 Ctrl+L（WPS/Qt 类）或 xdotool 未装；
     本程序已自动补发 Alt+N 兼容 WPS 类对话框，实测正常。
  3. 呼出无反应：确认已在 X11 会话（deepin 25 登录界面选 X11，不要选
     Treeland/Wayland）；商用发行版快捷键被拦见上文安全中心白名单指引。
  4. 仅支持 X11：Wayland/Treeland 下窗口无法强制置顶，属合成器限制。

七、V1.6 更新要点（含 V1.3→V1.6 全部变化）
  1. 跳转加固：Alt+N 固定自动补发（兼容 WPS 等不响应 Ctrl+L 的对话框，
     实测 Qt 应用无副作用）；移除设置界面「跳转兼容模式」项；
  2. 索引根改为用户主目录：home 下所有可见文件夹（Downloads、文档、自建
     目录等）均可搜到，深度由「目录索引深度」限制；隐藏项不索引；
  3. 修复挂载盘/白名单盘搜不到：
     - 扫描不再跟进符号链接（防链接指向大目录导致扫描卡死/抢占挂载盘）；
     - 全量扫描期间发现的新挂载点排队、扫描结束立即补索引（不再被饿死）；
  4. 修复无效编码文件名（如「�� (无效的编码)」）导致索引写库失败、整体
     扫描中断的问题——此类名字自动跳过不索引；
  5. 商用发行版适配：install.sh 自动检测麒麟/统信 UOS 等（kylin/uos/
     uniontech），其快捷键项走系统目录、deepin 走用户目录；
  6. 目录树型对话框支持（V1.6 新增）：360 安全浏览器下载框无地址栏（银河
     麒麟实测），自动判断——仅当系统为银河麒麟且窗口类名含 browser360-cn
     时，跳转改为发送 "/" 激活位置输入再粘贴路径；deepin 等其它系统不启用
     此判断、不受任何影响；
  7. 搜索结果 ↑/↓ 方向键筛选（V1.6 新增）：焦点在搜索框内即可上下移动
     结果选中项，回车跳转当前项；
  8. 仅提供用户级安装版；移除 clean_legacy.sh；文档同步更新。
