API 参考

TimeLens 前后端通过 Tauri IPC 通信。本文档列出所有可用的 Rust Command 接口,以及前端 tauriApi.ts 中的对应封装。


监控 (Monitor)

Command参数返回说明
get_monitor_status MonitorStatus 获取当前监控状态(是否活跃、当前应用名)
set_monitoring_active active: boolean void 暂停或恢复屏幕时间追踪

事件监听

import { listen } from "@tauri-apps/api/event";

const unlisten = await listen("active-window-changed", (event) => {
  console.log("前台窗口变更:", event.payload);
});

// 组件卸载时取消监听
unlisten();

屏幕时间统计

Command参数返回说明
get_today_app_totalsAppUsageSummary[]今日各应用总使用时长
get_app_totals_for_datedate: stringAppUsageSummary[]指定日期各应用总时长
get_app_totals_in_rangestartDate, endDateAppUsageSummary[]日期范围内各应用总时长
get_app_comparison_in_rangescurrentStart, currentEnd, previousStart, previousEndAppUsageComparison[]两段时间范围对比数据
get_today_hourlyHourlyDistribution[]今日 0-23 点每小时使用时长
get_hourly_distribution_for_datedate: stringHourlyDistribution[]指定日期的小时分布
get_recent_daily_totalsdays: numberDailyUsage[]最近 N 天每日总时长
get_recent_daily_totals_rangestartDate, endDateDailyUsage[]指定日期范围每日总时长
get_app_usage_pagestartDate?, endDate?, limit, offsetAppUsagePage分页查询原始使用记录

分类管理

Command参数返回说明
get_app_categoriesAppCategoryRule[]所有应用分类规则
upsert_app_categoryappName, exePath, category, sourcevoid添加或更新分类规则
remove_app_categoryexePath: stringvoid删除某应用的分类规则
suggest_category_for_appappName, exePathCategorySuggestionAI 智能推荐应用分类
get_category_totals_in_rangestartDate, endDateCategoryUsageSummary[]日期范围内各分类总时长
get_category_daily_totals_in_rangestartDate, endDateCategoryDailyUsage[]日期范围内每日各分类时长
get_app_category_mapRecordexe_path → category 映射表

目标与限额

Command参数返回说明
get_usage_goalsUsageGoal[]所有使用目标
save_usage_goalgoal: UsageGoalUsageGoal保存目标(新增或更新)
remove_usage_goalid: numbervoid删除目标
get_goal_progressweekStartDay?: numberGoalProgress[]各目标当前进度
get_ignored_appsstring[]被忽略的应用列表
set_ignored_appsexePaths: string[]void设置忽略应用列表

专注模式

Command参数返回说明
set_focus_mode_activeactive: booleanvoid开启/关闭专注模式
get_focus_mode_activeboolean专注模式是否开启
start_focus_sessionreason?: string, triggerType?: "manual" | "rule"number开始专注会话,返回 session ID
stop_focus_sessionid: numbervoid结束指定专注会话
list_focus_sessionsstartAt?, endAt?FocusSession[]查询专注会话历史

小组件管理

Command参数返回说明
get_widget_registryWidgetRegistryResponse获取所有可用小组件列表
create_widgetwidgetType: stringWidgetConfig创建小组件窗口
open_widgetconfig: WidgetConfigvoid根据配置打开已有小组件
close_widgetid: stringvoid关闭小组件窗口
set_widget_always_on_topid: string, mode: stringvoid设置置顶模式
get_all_widgetsWidgetConfig[]获取所有已保存的小组件配置
save_widget_configconfig: WidgetConfigvoid保存小组件配置到数据库
remove_widget_configid: stringvoid删除小组件配置

待办事项

Command参数返回说明
get_todosTodoItem[]所有待办事项
add_todocontent: stringTodoItem添加待办
toggle_todoid: numbervoid切换完成状态
delete_todoid: numbervoid删除待办
reorder_todosorderedIds: number[]void批量排序

浏览器扩展

Command参数返回说明
get_browser_extension_statusBrowserExtensionStatus扩展连接状态
set_browser_extension_enabledenabled: booleanvoid启用/禁用扩展
get_browser_domain_statsstartDate?, endDate?BrowserDomainStats[]域名使用统计
get_browser_ignored_domainsstring[]忽略的域名列表
set_browser_ignored_domainshosts: string[]void设置忽略域名
get_browser_domain_limitsBrowserDomainLimit[]域名限额列表
save_browser_domain_limithost, dailyLimitSeconds, enabledvoid保存域名限额
remove_browser_domain_limithost: stringvoid删除域名限额

应用设置

Command参数返回说明
get_app_settingsAppSettingsPayload所有应用设置
set_launch_at_startupenabled: booleanvoid开机自启动
set_silent_startupenabled: booleanvoid静默启动(最小化到托盘)
set_auto_open_widgetsenabled: booleanvoid启动时自动打开小组件
set_ignore_system_processesenabled: booleanvoid忽略系统进程
set_idle_time_policypolicy: "count" | "exclude"void空闲时间处理策略
set_track_window_titlesenabled: booleanvoid是否记录窗口标题
set_shortcutsshortcuts: ShortcutSettingsvoid全局快捷键设置
get_install_channel_infoInstallChannelInfo安装渠道信息

生产力分析

Command参数返回说明
get_productivity_scoredate: stringProductivityScore指定日期的生产力评分
get_productivity_score_rangestartDate, endDateProductivityScore[]日期范围内的评分列表
get_interruption_periodsdate: stringInterruptionPeriod[]每小时的中断次数和碎片化评分

数据导入导出

Command参数返回说明
export_data_csvstring导出所有数据为 CSV 字符串
export_data_jsonstring导出所有数据为 JSON 字符串
import_data_jsonpayload: stringvoid导入 JSON 数据

系统通知

Command参数返回说明
send_native_notificationtitle: string, body: string, alarm?: booleanvoid发送系统原生通知

核心类型定义

所有类型定义位于 src/types/index.ts,以下是常用类型:

MonitorStatus

interface MonitorStatus {
  active: boolean;           // 监控是否运行中
  current_app: string;       // 当前前台应用名
  current_exe_path: string;  // 当前应用可执行文件路径
  current_title: string;     // 当前窗口标题
}

AppUsageSummary

interface AppUsageSummary {
  app_name: string;      // 应用名称
  exe_path: string;      // 可执行文件路径
  total_seconds: number; // 总使用秒数
}

WidgetConfig

interface WidgetConfig {
  id: string;
  widget_type: string;
  monitor_index: number;
  x: number;
  y: number;
  width: number;
  height: number;
  opacity: number;
  always_on_top_mode: "always" | "focus" | "never";
  pinned: boolean;
  start_on_launch: boolean;
}

UsageGoal

interface UsageGoal {
  id?: number;
  scope_type: "category" | "app";      // 目标范围:分类 或 单个应用
  scope_value: string;                  // 分类名或应用名
  period: "daily" | "weekly";           // 统计周期
  operator: "at_least" | "at_most";     // 约束类型
  target_seconds: number;               // 目标秒数
  enabled: boolean;
}

AppSettingsPayload

interface AppSettingsPayload {
  launch_at_startup: boolean;
  silent_startup: boolean;
  auto_open_widgets: boolean;
  ignore_system_processes: boolean;
  idle_time_policy: "count" | "exclude";
  track_window_titles: boolean;
  browser_extension_enabled: boolean;
  shortcuts: ShortcutSettings;
}

前端调用示例

import * as api from "@/services/tauriApi";

// 获取今日应用排行
const todayStats = await api.getTodayAppTotals();

// 暂停监控
await api.setMonitoringActive(false);

// 创建时钟小组件
const config = await api.createWidget("clock");

// 监听窗口切换事件
const unlisten = await api.onActiveWindowChanged((info) => {
  console.log(info.app_name, info.window_title);
});

// 保存设置
await api.setLaunchAtStartup(true);

最后更新:2025-05-03 · TimeLens v1.1.0