#tauri-plugin #desktop-applications #tauri #tauri-app #search #macos #spotlight

tauri-plugin-spotlight

一个为 Tauri 窗口提供类似 MacOS Spotlight 搜索功能的 Tauri 插件

4 个版本

0.2.0 2024年2月6日
0.1.2 2023年4月1日
0.1.1 2023年2月19日
0.1.0 2023年2月19日

#409GUI

MIT/Apache

50KB
832

Tauri 插件:Spotlight

一个为 Tauri 窗口提供类似 MacOS Spotlight 搜索功能的 Tauri 插件。

概述

Spotlight 是一个 Tauri 插件,提供了一种用户友好且直观的方式与您的桌面应用程序交互——类似 Spotlight 的搜索界面。

此插件目前仅适用于 macOS,但对其他平台有基本实现。

功能

  1. 允许用户定义显示和隐藏窗口的热键
  2. 任何窗口都可以注册以实现此插件提供的功能
  3. 窗口失去焦点时将自动隐藏
  4. 支持多显示器(目前仅限 macOS)
  5. 窗口始终保持在最前面,并在隐藏后重新激活之前活动的窗口(目前仅限 macOS)

安装

通过在 Cargo.toml 文件中添加以下内容来安装核心插件

src-tauri/Cargo.toml

[dependencies]
tauri-plugin-spotlight = { git = "https://github.com/zzzze/tauri-plugin-spotlight" }

您可以使用您首选的 JavaScript 包管理器安装 JavaScript 客户端绑定

pnpm add tauri-plugin-spotlight-api
# or
npm add tauri-plugin-spotlight-api
# or
yarn add tauri-plugin-spotlight-api

用法

后端

有三种方式可以配置此插件

  1. 使用 Tauri 注册 spotlight 插件

src-tauri/src/main.rs

fn main() {
    tauri::Builder::default()
        .plugin(tauri_plugin_spotlight::init(Some(tauri_plugin_spotlight::PluginConfig {
            windows: Some(vec![
                tauri_plugin_spotlight::WindowConfig {
                    label: String::from("main"),
                    shortcut: String::from("Ctrl+Shift+J"),
                    macos_window_level: Some(20), // Default 24
                },
            ]),
            global_close_shortcut: Some(String::from("Escape")),
        })))
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}
  1. 在您的 Tauri 应用程序配置文件中配置插件

src-tauri/tauri.conf.json

{
  "plugins": {
    "spotlight": {
      "windows": [{
        "label": "main",
        "shortcut": "Ctrl+Shift+J",
        "macos_window_level": 20
      }],
      "global_close_shortcut": "Escape"
    }
  }
}

src-tauri/src/main.rs

fn main() {
    tauri::Builder::default()
        .plugin(tauri_plugin_spotlight::init(None))
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}
  1. 手动注册窗口快捷键

src-tauri/src/main.rs

use tauri_plugin_spotlight::ManagerExt;

fn main() {
    tauri::Builder::default()
        .plugin(tauri_plugin_spotlight::init(Some(tauri_plugin_spotlight::PluginConfig {
            windows: None,
            global_close_shortcut: Some(String::from("Escape")),
        })))
        .setup(|mut app| {
            if let Some(window) = app.get_window("main") {
                app.spotlight().init_spotlight_window(&window, "Ctrl+Shift+J").unwrap();
            }
            app_modifier::apply(&mut app);
            Ok(())
        })
        .build(tauri::generate_context!())
        .expect("error while running application");
}

tauri.conf.jsontauri_plugin_spotlight::init 中编写的配置参数将与 tauri_plugin_spotlight::init 自动合并,并具有更高的优先级。

前端

使用 hide 函数使 spotlight 窗口不可见

import { hide } from 'tauri-plugin-spotlight-api';

void hide();

示例应用

准备

  1. 构建插件的前端 API。
pnpm i
pnpm build
  1. 安装示例应用的依赖项。
cd examples/react-app
pnpm i
  1. 启动示例应用。
pnpm tauri dev

感谢

此插件灵感来源于tauri-macos-spotlight-example项目,该项目由ahkohd创建,并在其代码库中大量借鉴。感谢ahkohd以及tauri-macos-spotlight-example项目的贡献者们为他们的辛勤工作和开源贡献!

依赖项

~21–63MB
~1M SLoC