Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
- 📱 **实时截图** - 显示设备实时画面,可自定义帧率
- 📝 **运行日志** - 查看任务执行日志和 Agent 输出
- ⏰ **定时任务** - 支持配置定时执行策略
- 🔄 **自动更新** - 支持 MirrorChyan 和 GitHub 自动下载更新
- 🔄 **自动更新** - 支持 MirrorChyan 和 GitHub 自动下载更新,自动更新无法跳过(更新失败不影响任务执行)
- 🤖 **Agent 支持** - 支持 MaaAgentClient 实现自定义识别器和动作

## 🚀 快速开始
Expand Down Expand Up @@ -52,8 +52,8 @@ MXU 支持以下启动参数:
| 参数 | 功能 | 说明 |
| ------------------------------------- | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `-h` / `--help` | 显示帮助信息 | 输出 MXU 当前支持的命令行参数说明并退出,不启动图形界面。 |
| `--autostart` | 标记为“开机自启动”启动 | 进入开机自启动模式,并触发自动执行逻辑。该参数主要由 MXU 创建的系统自启动任务自动传入,通常无需手动设置。 |
| `-i <实例名>` / `--instance <实例名>` | 指定要自动启动的实例 | 仅在 `--autostart` 模式下生效。若指定的实例名存在,则优先使用该实例,而不是设置中配置的默认自动执行实例。也支持 `-i=<实例名>`、`--instance=<实例名>` 写法。 |
| `--autostart` | 以“自动模式”启动 | 该参数主要由 MXU 创建的系统自启动任务自动传入,通常无需手动设置。 |
| `-i <实例名>` / `--instance <实例名>` | 指定要自动启动的实例 | 仅在 `--autostart` 模式下生效。若指定的实例名存在,则优先使用该实例,否则使用设置中配置的默认自动执行实例。也支持 `-i=<实例名>`、`--instance=<实例名>` 写法。 |
| `-q` / `--quit-after-run` | 自动执行完成后退出程序 | 当本次启动实际触发了自动执行后,等待任务结束并自动关闭 MXU,适合配合自启动场景做“一次性后台执行”。 |

示例:
Expand Down
101 changes: 101 additions & 0 deletions docs/auto-start.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# 自启动相关

### 勾选 `设置 > 通用 > 开机自启动` 时发生了什么?

#### Windows

勾选 `开机自启动` 后,前端会调用 Tauri command `autostart_enable` 。Rust 侧会创建 Windows 计划任务:

```text
schtasks /create
/tn MXU
/tr "<当前 mxu.exe 路径>" --autostart
/sc onlogon
/delay 0000:30
/it
/rl highest
/f
```

含义是:用户登录后触发,延迟 30 秒启动;以交互式桌面会话运行;请求最高权限;任务名固定为 `MXU`;如果已存在则覆盖。启动命令只带 `--autostart`,不会自动带 `--instance` 或 `--quit-after-run`。

取消勾选后会执行:

```text
schtasks /delete /tn MXU /f
```

同时清理旧版注册表自启动项:

```text
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
mxu
MXU
```

查询开关状态时,Windows 会认为下面任意一种存在就是已启用:

```text
schtasks /query /tn MXU
```

或旧版注册表项还存在。

另外,程序每次启动时有一个迁移逻辑:如果检测到旧版注册表自启动,会自动创建新的计划任务,然后删除旧注册表项;如果已有计划任务但缺少 `InteractiveToken` 或 30 秒延迟,并且任务处于启用状态,也会自动重建成新配置。

#### macOS

MXU 使用的是:

```rust
MacosLauncher::LaunchAgent
```

所以勾选后会创建 `~/Library/LaunchAgents/mxu.plist` 。程序将会在用户登陆后自动执行。

plist 里核心字段是:

```xml
<key>Label</key>
<string>mxu</string>
<key>ProgramArguments</key>
<array>
<string><current_exe_path></string>
<string>--autostart</string>
</array>
<key>RunAtLoad</key>
<true/>
```

取消勾选就是删除这个 plist;是否已启用同样只看 plist 是否存在。它不是 macOS “登录项” AppleScript 方式,而是 LaunchAgent,所以不会走系统登录项 UI 的那套添加逻辑。

#### Linux

勾选后会创建 `~/.config/autostart/mxu.desktop` 。对于有 GUI 的 Linux 系统,程序将会在用户登陆后自动执行。

内容大致是:

```ini
[Desktop Entry]
Type=Application
Version=1.0
Name=mxu
Comment=mxustartup script
Exec=<app_path> --autostart
StartupNotify=false
Terminal=false
```

`<app_path>` 优先用 AppImage 路径;如果不是 AppImage,则用当前可执行文件路径。取消勾选就是删除这个 `.desktop` 文件;是否已启用只看这个文件是否存在。

风险点:`auto-launch` 这里没有对 `Exec` 里的路径做引号/转义,如果 Linux 上安装路径包含空格,可能导致自启动失败。

### 运行 `MXU --autostart` 会发生什么?

Windows/macOS/Linux 自启动时会带 `--autostart`,因此前端启动流程会:

1. 调用 `is_autostart`,识别为自动模式。
2. 设置 `isAutoStartMode = true`。
3. 如果设置了“自动模式默认执行”的实例,就激活该实例。
4. 等更新检查流程结束后触发 `mxu-start-tasks` 开始执行。
5. 任务结束后不会自动退出,除非添加命令行参数 `--quit-after-run` 。
10 changes: 5 additions & 5 deletions src/i18n/locales/en-US.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,16 +96,16 @@ export default {
minimizeToTray: 'Minimize to tray on close',
minimizeToTrayHint: 'Hide to system tray instead of exiting when clicking close button',
autoStart: 'Launch at startup',
autoStartHint: 'Automatically start this application when the system boots',
autoStartInstance: 'Auto-execute on startup',
autoStartHint: 'If checked, "{{projectName}} --autostart" will be added to startup items so it launches automatically after login. If unchecked, it will be removed. Visit https://github.com/MistEO/MXU/blob/main/docs/auto-start.md to learn more.',
autoStartInstance: 'Default execution for Auto Mode',
autoStartInstanceHint:
'Select a configuration to activate and run tasks automatically after startup. Scheduled tasks for other configurations will still run normally',
'The default configuration executed in Auto Mode (launch method "{{projectName}} --autostart"). Unselected configurations will still execute at their scheduled times if a task is set. Automatic mode will still perform auto-updates (no pop-ups), and execution will continue regardless of whether the update succeeds or fails.',
autoStartInstanceNone: 'Do not auto-execute',
autoStartInstanceRemoved:
'Previously selected configuration "{{name}}" has been deleted. Auto-execute has been disabled',
autoRunOnLaunch: 'Also auto-execute on manual launch',
autoRunOnLaunch: 'Treat manual launch as automatic',
autoRunOnLaunchHint:
'Automatically execute the selected configuration when manually opening the app (if disabled, only triggers on system startup)',
'In Manual Mode (launch method "{{projectName}}" or double-clicking the icon), if checked, it will execute following the logic of Auto Mode.',
confirmBeforeDelete: 'Confirm delete actions',
confirmBeforeDeleteHint:
'Show a confirmation dialog before delete/clear list and other dangerous actions.',
Expand Down
10 changes: 5 additions & 5 deletions src/i18n/locales/ja-JP.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,16 +96,16 @@ export default {
minimizeToTray: '閉じる時にトレイに最小化',
minimizeToTrayHint: '閉じるボタンをクリックすると、終了せずにシステムトレイに隠れます',
autoStart: 'スタートアップ時に起動',
autoStartHint: 'システム起動時にこのアプリケーションを自動的に起動します',
autoStartInstance: '起動後に自動実行',
autoStartHint: 'チェックを入れると、"{{projectName}} --autostart" がスタートアップ項目に追加され、ログイン時に自動起動します。チェックを外すと削除されます。詳しくは https://github.com/MistEO/MXU/blob/main/docs/auto-start.md を参照してください。',
autoStartInstance: '自動モードのデフォルト動作',
autoStartInstanceHint:
'起動後に自動的にアクティブにしてタスクを実行する設定を選択します。他の設定のスケジュールタスクは通常通り実行されます',
'自動モード(起動方法 "{{projectName}} --autostart")で実行される際のデフォルト設定です。選択されていない設定でも、スケジュールが設定されていれば時間通りに実行されます。自動モードでもバックグラウンドで自動更新が実行されます(ポップアップは表示されません)。更新の成否にかかわらず、処理は続行されます。',
autoStartInstanceNone: '自動実行しない',
autoStartInstanceRemoved:
'以前選択した設定「{{name}}」が削除されました。自動実行は無効になりました',
autoRunOnLaunch: '手動起動時も自動実行',
autoRunOnLaunch: '手動起動を自動として扱う',
autoRunOnLaunchHint:
'手動でアプリを開く際も、上で選択した設定を自動実行します(無効な場合はシステム起動時のみ実行)',
'手動モード(起動方法 "{{projectName}}" またはアイコンのダブルクリック)において、チェックを入れると自動モードのロジックに従って実行されます。',
confirmBeforeDelete: '削除操作の前に確認する',
confirmBeforeDeleteHint: '削除/一覧クリア等の危険な操作の前に確認ダイアログを表示します',
maxLogsPerInstance: 'インスタンスあたりのログ上限',
Expand Down
10 changes: 5 additions & 5 deletions src/i18n/locales/ko-KR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,16 +95,16 @@ export default {
minimizeToTray: '닫을 때 트레이로 최소화',
minimizeToTrayHint: '닫기 버튼을 클릭하면 종료하지 않고 시스템 트레이에 숨깁니다',
autoStart: '시작 시 자동 실행',
autoStartHint: '시스템 부팅 시 이 애플리케이션을 자동으로 시작합니다',
autoStartInstance: '시작 후 자동 실행',
autoStartHint: '체크하면 "{{projectName}} --autostart"를 시작 항목에 추가하여 로그인 시 자동으로 시작합니다. 체크를 해제하면 제거됩니다. 자세한 내용은 https://github.com/MistEO/MXU/blob/main/docs/auto-start.md 를 확인하세요.',
autoStartInstance: '자동 모드의 기본 실행',
autoStartInstanceHint:
'시작 후 자동으로 활성화하고 작업을 실행할 구성을 선택합니다. 다른 구성의 예약 작업은 정상적으로 실행됩니다',
'자동 모드(실행 방식 "{{projectName}} --autostart")에서 실행되는 기본 구성입니다. 선택되지 않은 구성이라도 예약 작업이 설정되어 있으면 정해진 시간에 실행됩니다. 자동 모드에서도 자동 업데이트가 실행됩니다(팝업 없음). 업데이트 성공 여부와 상관없이 계속 진행됩니다.',
autoStartInstanceNone: '자동 실행 안 함',
autoStartInstanceRemoved:
'이전에 선택한 구성 "{{name}}"이(가) 삭제되었습니다. 자동 실행이 비활성화되었습니다',
autoRunOnLaunch: '수동 실행 시에도 자동 실행',
autoRunOnLaunch: '수동 시작을 자동으로 간주',
autoRunOnLaunchHint:
'앱을 수동으로 열 때도 위에서 선택한 구성을 자동 실행합니다 (비활성화 시 시스템 시작 시에만 실행)',
'수동 모드(실행 방식 "{{projectName}}" 또는 아이콘 더블 클릭)에서 체크하면, 자동 모드의 로직에 따라 실행됩니다.',
confirmBeforeDelete: '삭제 작업 확인',
confirmBeforeDeleteHint: '삭제/목록 비우기 등 위험한 작업 전에 확인 대화 상자를 표시합니다',
maxLogsPerInstance: '인스턴스당 로그 최대 개수',
Expand Down
10 changes: 5 additions & 5 deletions src/i18n/locales/zh-CN.ts
Original file line number Diff line number Diff line change
Expand Up @@ -96,15 +96,15 @@ export default {
minimizeToTray: '关闭时最小化到托盘',
minimizeToTrayHint: '点击关闭按钮时隐藏到系统托盘而非退出程序',
autoStart: '开机自启动',
autoStartHint: '系统启动时自动运行本程序',
autoStartInstance: '启动后自动执行',
autoStartHint: '若勾选,则将 "{{projectName}} --autostart" 加入启动项,实现开机登陆自启。若取消,则将其移除。访问 https://github.com/MistEO/MXU/blob/main/docs/auto-start.md 了解更多。',
autoStartInstance: '自动模式默认执行',
autoStartInstanceHint:
'选择程序启动后自动激活并执行任务的配置,未选择的配置其定时任务仍会正常运行',
'在自动模式(启动方式 "{{projectName}} --autostart")下执行的默认配置。未选择的配置,若设置了定时任务,也会到点执行。自动模式仍会执行自动更新(无弹窗),更新无论成败都会继续执行。',
autoStartInstanceNone: '不自动执行',
autoStartInstanceRemoved: '之前选择的配置「{{name}}」已被删除,自动执行已停用',
autoRunOnLaunch: '手动启动时也自动执行',
autoRunOnLaunch: '手动启动视为自动',
autoRunOnLaunchHint:
'每次手动打开程序时,也自动执行上方选定的配置(关闭则仅在开机自启动时触发)',
'在手动模式(启动方式 "{{projectName}}" 或者双击图标)下,若勾选,则按照自动模式的逻辑执行。',
confirmBeforeDelete: '删除操作需要二次确认',
confirmBeforeDeleteHint: '删除任务、清空列表等危险操作会先弹出确认对话框',
maxLogsPerInstance: '每个实例保留的日志上限',
Expand Down
10 changes: 5 additions & 5 deletions src/i18n/locales/zh-TW.ts
Original file line number Diff line number Diff line change
Expand Up @@ -95,15 +95,15 @@ export default {
minimizeToTray: '關閉時最小化到托盤',
minimizeToTrayHint: '點選關閉按鈕時隱藏到系統托盤而非退出程式',
autoStart: '開機自啟動',
autoStartHint: '系統啟動時自動執行本程式',
autoStartInstance: '啟動後自動執行',
autoStartHint: '若勾選,則將 "{{projectName}} --autostart" 加入啟動項,實現開機登陸自啟。若取消,則將其移除。訪問 https://github.com/MistEO/MXU/blob/main/docs/auto-start.md 瞭解更多。',
autoStartInstance: '自動模式默認執行',
autoStartInstanceHint:
'選擇程式啟動後自動啟用並執行任務的配置,未選擇的配置其定時任務仍會正常運行',
'在自動模式(啟動方式 "{{projectName}} --autostart")下執行的默認配置。未選擇的配置,若設置了定時任務,也會到點執行。自動模式仍會執行自動更新(無彈窗),更新無論成敗都會繼續執行。',
autoStartInstanceNone: '不自動執行',
autoStartInstanceRemoved: '之前選擇的配置「{{name}}」已被刪除,自動執行已停用',
autoRunOnLaunch: '手動啟動時也自動執行',
autoRunOnLaunch: '手動啟動視爲自動',
autoRunOnLaunchHint:
'每次手動開啟程式時,也自動執行上方選定的配置(關閉則僅在開機自啟動時觸發)',
'在手動模式(啟動方式 "{{projectName}}" 或者雙擊圖標)下,若勾選,則按照自動模式的邏輯執行。',
confirmBeforeDelete: '刪除操作需要二次確認',
confirmBeforeDeleteHint: '刪除任務、清空列表等危險操作會先彈出確認對話框',
maxLogsPerInstance: '每個實例保留的日誌上限',
Expand Down
Loading