window

提供用于创建窗口、与其他窗口通信以及操作当前窗口的 API。

tauri.conf.json 中的 build.withGlobalTauri 设置为 true 时,也可以通过 window.__TAURI__.window 访问此软件包。

API 必须添加到 tauri.conf.json 中的 tauri.allowlist.window 中:


{
  "tauri": {
    "allowlist": {
      "window": {
        "all": true, // 启用所有window API
        "create": true, // 启用窗口创建功能
        "center": true,
        "requestUserAttention": true,
        "setResizable": true,
        "setMaximizable": true,
        "setMinimizable": true,
        "setClosable": true,
        "setTitle": true,
        "maximize": true,
        "unmaximize": true,
        "minimize": true,
        "unminimize": true,
        "show": true,
        "hide": true,
        "close": true,
        "setDecorations": true,
        "setAlwaysOnTop": true,
        "setContentProtected": true,
        "setSize": true,
        "setMinSize": true,
        "setMaxSize": true,
        "setPosition": true,
        "setFullscreen": true,
        "setFocus": true,
        "setIcon": true,
        "setSkipTaskbar": true,
        "setCursorGrab": true,
        "setCursorVisible": true,
        "setCursorIcon": true,
        "setCursorPosition": true,
        "setIgnoreCursorEvents": true,
        "startDragging": true,
        "print": true
      }
    }
  }
}

建议只允许列出您使用的 API,以优化程序包的大小和安全性。

窗口事件

可以使用 appWindow.listen 来监听事件:


import { appWindow } from "@tauri-apps/api/window";
appWindow.listen("my-window-event", ({ event, payload }) => { });

枚举

UserAttentionType

窗口请求注意力的类型

自1.0.0版本起

枚举成员

名称 类型 描述 定义于
1 #### 特定平台
- macOS: 弹跳 dock 图标,直到应用程序处于焦点位置。
- Windows: 同时闪烁窗口和任务栏按钮,直到应用程序成为焦点。
window.ts:228
2 #### 特定平台
- macOS: 弹跳一次 dock 图标。
- Windows: 闪烁任务栏按钮,直到应用程序处于焦点位置。
window.ts:234

类别

CloseRequestedEvent

自1.0.2版本起

构造函数

constructor

new CloseRequestedEvent(event: Event<null>): CloseRequestedEvent

参数

名称 类型
event Event<null>

定义在: window.ts:2179

属性

event

event: EventName

事件名

定义在: window.ts:2172

id

id: number

用于取消监听的事件标识符

定义在: window.ts:2176

windowLabel

windowLabel: string

发出该事件的窗口的标签。

定义在: window.ts:2174

方法

isPreventDefault

isPreventDefault(): boolean

返回值: boolean

preventDefault

preventDefault(): void

返回值: void

LogicalPosition

以逻辑像素表示的位置。

自1.0.0版本起

构造函数

constructor

new LogicalPosition(x: number, y: number): LogicalPosition

参数

名称 类型
x number
y number

定义在: window.ts:166

属性

type

type: string = 'Logical'

定义在: window.ts:162

x

x: number

定义在: window.ts:163

y

y: number

定义在: window.ts:164

LogicalSize

以逻辑像素表示的尺寸。

自1.0.0版本起

构造函数

constructor

new LogicalSize(width: number, height: number): LogicalSize

参数

名称 类型
width number
height number

定义在: window.ts:120

属性

height

height: number

定义在: window.ts:118

type

type: string = 'Logical'

定义在: window.ts:116

width

width: number

定义在: window.ts:117

PhysicalPosition

以物理像素表示的位置。

自1.0.0版本起

构造函数

constructor

new PhysicalPosition(x: number, y: number): PhysicalPosition

参数

名称 类型
x number
y number

定义在: window.ts:182

属性

type

type: string = 'Physical'

定义在: window.ts:178

x

x: number

定义在: window.ts:179

y

y: number

定义在: window.ts:180

方法

toLogical

toLogical(scaleFactor: number): LogicalPosition

将物理位置转换为逻辑位置。

示例


import { appWindow } from '@tauri-apps/api/window';
const factor = await appWindow.scaleFactor();
const position = await appWindow.innerPosition();
const logical = position.toLogical(factor);

参数

名称 类型
scaleFactor number

返回值: LogicalPosition

PhysicalSize

以物理像素表示的尺寸。

自1.0.0版本起

构造方法

constructor

new PhysicalSize(width: number, height: number): PhysicalSize

参数

名称 类型
width number
height number

定义在: window.ts:136

属性

height

height: number

定义在: window.ts:134

type

type: string = 'Physical'

定义在: window.ts:132

width

width: number

定义在: window.ts:133

方法

toLogical

toLogical(scaleFactor: number): LogicalSize

将物理大小转换为逻辑大小。

示例


import { appWindow } from '@tauri-apps/api/window';
const factor = await appWindow.scaleFactor();
const size = await appWindow.innerSize();
const logical = size.toLogical(factor);

参数

名称 类型
scaleFactor number

返回值: LogicalSize

WebviewWindow

创建新的webview窗口,并获取现有窗口的句柄。

窗口由标签标识,标签是唯一的标识符,可用于以后的引用。它只能包含字母数字字符 a-zA-Z 以及以下特殊字符 -/:_

示例


// 加载嵌入式资源:
const webview = new WebviewWindow('theUniqueLabel', {
  url: 'path/to/page.html'
});
// 或者,加载远程 URL:
const webview = new WebviewWindow('theUniqueLabel', {
  url: 'https://github.com/tauri-apps/tauri'
});

webview.once('tauri://created', function () {
 // 成功创建 webview 窗口
});
webview.once('tauri://error', function (e) {
 // 创建webview窗口时发生错误
});

// 向后台发送事件
await webview.emit("some event", "data");
// 监听来自后台的事件
const unlisten = await webview.listen("event name", e => {});
unlisten();

自1.0.2版本起

层级

  • WindowManager
    • WebviewWindow

构造函数

constructor

new WebviewWindow(label: string, options?: WindowOptions): WebviewWindow

创建新的 WebviewWindow。

示例


import { WebviewWindow } from '@tauri-apps/api/window';
const webview = new WebviewWindow('my-label', {
  url: 'https://github.com/tauri-apps/tauri'
});
webview.once('tauri://created', function () {
 // webview窗口创建成功
});
webview.once('tauri://error', function (e) {
 // 创建 webview 窗口时发生错误
});

参数

名称 类型 描述
label string 唯一的webview窗口标签。必须是字母数字:a-zA-Z-/:_
options WindowOptions -

Overrides: WindowManager.constructor

定义在: window.ts:2247

属性

label

label: string

窗口标签。它是窗口的唯一标识符,可用于以后的引用。

继承自: WindowManager.label

定义在: window.ts:318

listeners

listeners: Record<string, EventCallback<any>[]>

本地事件监听器。

继承自: WindowManager.listeners

定义在: window.ts:320

方法

center

center(): Promise<void>

将窗口居中。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.center();

返回值: Promise<void>

表示操作成功或失败的promise。

close

close(): Promise<void>

关闭窗口。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.close();

返回值: Promise<void>

表示操作成功或失败的promise。

emit

emit(event: string, payload?: unknown): Promise<void>

向后台和所有 Tauri 窗口发出一个事件。事件会将此窗口的label作为 Event.windowLabel | 源窗口label。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.emit('window-loaded', { loggedIn: true, token: 'authToken' });

该功能还可用于窗口之间的通信:


import { appWindow } from '@tauri-apps/api/window';
await appWindow.listen('sync-data', (event) => { });

// 在另一个窗口...
import { WebviewWindow } from '@tauri-apps/api/window';
const otherWindow = WebviewWindow.getByLabel('other')
await otherWindow.emit('sync-data');

全局监听器也会被触发:


import { appWindow } from '@tauri-apps/api/window';
import { listen } from '@tauri-apps/api/event';
await listen('ping', (event) => { });

await appWindow.emit('ping');

参数

名称 类型 描述
event string 事件名称。必须只包含字母数字字符-, /, : and _
payload? unknown 事件附加数据。

返回值: Promise<void>

hide

hide(): Promise<void>

将窗口可见性设置为 false。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.hide();

返回值: Promise<void>

表示操作成功或失败的promise。

innerPosition

innerPosition(): Promise<PhysicalPosition>

窗口客户端区域左上角相对于桌面左上角的位置。

示例


import { appWindow } from '@tauri-apps/api/window';
const position = await appWindow.innerPosition();

返回值: Promise<PhysicalPosition>

窗口的内部位置。

innerSize

innerSize(): Promise<PhysicalSize>

窗口客户端区域的物理大小。客户端区域是窗口的内容,不包括标题栏和边框。

示例


import { appWindow } from '@tauri-apps/api/window';
const size = await appWindow.innerSize();

返回值: Promise<PhysicalSize>

窗口内部尺寸。

isClosable

isClosable(): Promise<boolean>

获取窗口的本地关闭按钮状态。

特定平台

  • Linux / iOS / Android: 不支持。

示例


import { appWindow } from '@tauri-apps/api/window';
const closable = await appWindow.isClosable();

返回值: Promise<boolean>

窗口的本地关闭按钮是否启用。

isDecorated

isDecorated(): Promise<boolean>

获取窗口当前的装饰状态。

示例


import { appWindow } from '@tauri-apps/api/window';
const decorated = await appWindow.isDecorated();

返回值: Promise<boolean>

窗户是否装饰。

isFocused

isFocused(): Promise<boolean>

获取窗口当前的焦点状态。

示例


import { appWindow } from '@tauri-apps/api/window';
const focused = await appWindow.isFocused();

自1.4版本起

返回值: Promise<boolean>

窗口是否已聚焦。

isFullscreen

isFullscreen(): Promise<boolean>

获取窗口当前的全屏状态。

示例


import { appWindow } from '@tauri-apps/api/window';
const fullscreen = await appWindow.isFullscreen();

返回值: Promise<boolean>

窗口是否处于全屏模式。

isMaximizable

isMaximizable(): Promise<boolean>

获取窗口的本地最大化按钮状态。

特定平台

  • Linux / iOS / Android: 不支持。

示例


import { appWindow } from '@tauri-apps/api/window';
const maximizable = await appWindow.isMaximizable();

返回值: Promise<boolean>

窗口的本地最大化按钮是否启用。

isMaximized

isMaximized(): Promise<boolean>

获取窗口当前最大化状态。

示例


import { appWindow } from '@tauri-apps/api/window';
const maximized = await appWindow.isMaximized();

返回值: Promise<boolean>

窗口是否最大化。

isMinimizable

isMinimizable(): Promise<boolean>

获取窗口的本地最小化按钮状态。

特定平台

  • Linux / iOS / Android: 不支持。

示例


import { appWindow } from '@tauri-apps/api/window';
const minimizable = await appWindow.isMinimizable();

返回值: Promise<boolean>

窗口的本地最小化按钮是否启用。

isMinimized

isMinimized(): Promise<boolean>

获取窗口当前的最小化状态。

示例


import { appWindow } from '@tauri-apps/api/window';
const minimized = await appWindow.isMinimized();

自1.3.0版本起

返回值: Promise<boolean>

isResizable

isResizable(): Promise<boolean>

获取窗口当前可调整大小的状态。

示例


import { appWindow } from '@tauri-apps/api/window';
const resizable = await appWindow.isResizable();

返回值: Promise<boolean>

窗口是否可调整大小。

isVisible

isVisible(): Promise<boolean>

获取窗口当前的可见状态。

示例


import { appWindow } from '@tauri-apps/api/window';
const visible = await appWindow.isVisible();

返回值: Promise<boolean>

窗口是否可见。

listen

listen<T>(event: EventName, handler: EventCallback<T>): Promise<UnlistenFn>

监听后端或webview发出的事件。该事件必须是全局事件或针对该窗口的事件。

更多信息,请参阅 emit

示例


import { appWindow } from '@tauri-apps/api/window';
const unlisten = await appWindow.listen('state-changed', (event) => {
  console.log(`Got error: ${payload}`);
});

// 如果处理程序超出范围,例如组件被卸载,则需要调用 unisten
unlisten();

请注意,如果您的监听器超出范围,例如组件被卸载,则需要移除监听器。

类型参数

  • T

参数

名称 类型 描述
event EventName 事件名称。必须只包含字母数字字符 -, /, : and _.
handler EventCallback<T> 事件处理程序。

返回值: Promise<UnlistenFn>

解析为取消监听事件的函数的promise。

maximize

maximize(): Promise<void>

最大化窗口。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.maximize();

返回值: Promise<void>

表示操作成功或失败的promise。

minimize

minimize(): Promise<void>

最小化窗口。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.minimize();

返回值: Promise<void>

表示操作成功或失败的promise。

onCloseRequested

onCloseRequested(handler: fn): Promise<UnlistenFn>

监听窗口关闭请求。当用户请求关闭窗口时发出。

示例


import { appWindow } from "@tauri-apps/api/window";
import { confirm } from '@tauri-apps/api/dialog';
const unlisten = await appWindow.onCloseRequested(async (event) => {
  const confirmed = await confirm('Are you sure?');
  if (!confirmed) {
    // 用户未确认关闭窗口;让我们阻止它
    event.preventDefault();
  }
});

// 如果处理程序超出范围,例如组件被卸载,则需要调用 unisten
unlisten();

自1.0.2版本起

参数

名称 类型
handler (event: CloseRequestedEvent) => void | Promise<void>

返回值: Promise<UnlistenFn>

解析为取消事件监听的函数的承诺。请注意,如果您的监听器超出范围,例如组件被卸载,则需要移除监听器。

onFileDropEvent

onFileDropEvent(handler: EventCallback<FileDropEvent>): Promise<UnlistenFn>

监听文件下拉事件。当用户在窗口上悬停所选文件、下拉文件或取消操作时,监听器就会被触发。

示例


import { appWindow } from "@tauri-apps/api/window";
const unlisten = await appWindow.onFileDropEvent((event) => {
 if (event.payload.type === 'hover') {
   console.log('User hovering', event.payload.paths);
 } else if (event.payload.type === 'drop') {
   console.log('User dropped', event.payload.paths);
 } else {
   console.log('File drop cancelled');
 }
});

// 如果处理程序超出范围,例如组件被卸载,则需要调用 unisten
unlisten();

自1.0.2版本起

参数

名称 类型
handler EventCallback<FileDropEvent>

返回值: Promise<UnlistenFn>

解析为取消事件监听的函数的承诺。请注意,如果您的监听器超出范围,例如组件被卸载,则需要移除监听器。

onFocusChanged

onFocusChanged(handler: EventCallback<boolean>): Promise<UnlistenFn>

监听窗口焦点变化。

示例


import { appWindow } from "@tauri-apps/api/window";
const unlisten = await appWindow.onFocusChanged(({ payload: focused }) => {
 console.log('Focus changed, window is focused? ' + focused);
});

// 如果处理程序超出范围,例如组件被卸载,则需要调用 unisten
unlisten();

自1.0.2版本起

参数

名称 类型
handler EventCallback<boolean>

返回值: Promise<UnlistenFn>

解析为取消事件监听的函数的promise。请注意,如果您的监听器超出范围,例如组件被卸载,则需要移除监听器。

onMenuClicked

onMenuClicked(handler: EventCallback<string>): Promise<UnlistenFn>

监听窗口菜单项目的点击。payload是菜单id。

示例


import { appWindow } from "@tauri-apps/api/window";
const unlisten = await appWindow.onMenuClicked(({ payload: menuId }) => {
 console.log('Menu clicked: ' + menuId);
});

// 如果处理程序超出范围,例如组件被卸载,则需要调用 unisten
unlisten();

自1.0.2版本起

参数

名称 类型
handler EventCallback<string>

返回值: Promise<UnlistenFn>

解析为取消事件监听的函数的promise。请注意,如果您的监听器超出范围,例如组件被卸载,则需要移除监听器。

onMoved

onMoved(handler: EventCallback<PhysicalPosition>): Promise<UnlistenFn>

监听窗口移动

示例


import { appWindow } from "@tauri-apps/api/window";
const unlisten = await appWindow.onMoved(({ payload: position }) => {
 console.log('Window moved', position);
});

// 如果处理程序超出范围,例如组件被卸载,则需要调用 unisten
unlisten();

自1.0.2版本起

参数

名称 类型
handler EventCallback<PhysicalPosition>

返回值: Promise<UnlistenFn>

解析为取消事件监听的函数的promise。请注意,如果您的监听器超出范围,例如组件被卸载,则需要移除监听器。

onResized

onResized(handler: EventCallback<PhysicalSize>): Promise<UnlistenFn>

监听窗口大小调整。

示例


import { appWindow } from "@tauri-apps/api/window";
const unlisten = await appWindow.onResized(({ payload: size }) => {
 console.log('Window resized', size);
});

// 如果处理程序超出范围,例如组件被卸载,则需要调用 unisten
unlisten();

自1.0.2版本起

参数

名称 类型
handler EventCallback<PhysicalSize>

返回值: Promise<UnlistenFn>

解析为取消事件监听的函数的promise。请注意,如果您的监听器超出范围,例如组件被卸载,则需要移除监听器。

onScaleChanged

onScaleChanged(handler: EventCallback<ScaleFactorChanged>): Promise<UnlistenFn>

监听窗口比例变化。当窗口的比例因子发生变化时发出。以下用户操作会导致 DPI 变化:

  • 更改显示屏分辨率
  • 更改显示屏的比例因子(如在 Windows 的控制面板中)。
  • 将窗口移动到比例系数不同的显示屏上。

示例


import { appWindow } from "@tauri-apps/api/window";
const unlisten = await appWindow.onScaleChanged(({ payload }) => {
 console.log('Scale changed', payload.scaleFactor, payload.size);
});

// 如果处理程序超出范围,例如组件被卸载,则需要调用 unisten
unlisten();

自1.0.2版本起

参数

名称 类型
handler EventCallback<ScaleFactorChanged>

返回值: Promise<UnlistenFn>

解析为取消事件监听的函数的promise。请注意,如果您的监听器超出范围,例如组件被卸载,则需要移除监听器。

onThemeChanged

onThemeChanged(handler: EventCallback<Theme>): Promise<UnlistenFn>

监听系统主题变化。

示例


import { appWindow } from "@tauri-apps/api/window";
const unlisten = await appWindow.onThemeChanged(({ payload: theme }) => {
 console.log('New theme: ' + theme);
});

// 如果处理程序超出范围,例如组件被卸载,则需要调用 unisten
unlisten();

自1.0.2版本起

参数

名称 类型
handler EventCallback<Theme>

返回值: Promise<UnlistenFn>

解析为取消事件监听的函数的promise。请注意,如果您的监听器超出范围,例如组件被卸载,则需要移除监听器。

once

once<T>(event: string, handler: EventCallback<T>): Promise<UnlistenFn>

监听一次性事件。更多信息,请参阅listen

示例


import { appWindow } from '@tauri-apps/api/window';
const unlisten = await appWindow.once('initialized', (event) => {
  console.log(`Window initialized!`);
});

// 如果处理程序超出范围,例如组件被卸载,则需要调用 unisten
unlisten();

请注意,如果您的监听器超出范围,例如组件被卸载,则需要移除监听器。

类型参数

  • T

参数

名称 类型 描述
event string 事件名称。必须只包含字母数字字符-/:_
handler EventCallback<T> 事件处理程序。

返回值: Promise<UnlistenFn>

解析为取消监听事件的函数的promise。

outerPosition

outerPosition(): Promise<PhysicalPosition>

窗口左上角相对于桌面左上角的位置。

示例


import { appWindow } from '@tauri-apps/api/window';
const position = await appWindow.outerPosition();

返回值: Promise<PhysicalPosition>

窗口的外部位置。

outerSize

outerSize(): Promise<PhysicalSize>

整个窗口的物理尺寸。这些尺寸包括标题栏和边框。如果不需要(通常不需要),请使用 inner_size 代替。

示例


import { appWindow } from '@tauri-apps/api/window';
const size = await appWindow.outerSize();

返回值: Promise<PhysicalSize>

窗口的外部尺寸。

requestUserAttention

requestUserAttention(requestType: null | UserAttentionType): Promise<void>

请求用户关注窗口,如果应用程序已被聚焦,则该请求无效。请求用户注意的方式取决于平台,详情请查看 UserAttentionType

提供null值将取消设置用户关注请求。当窗口接收到输入时,WM 可能不会自动取消设置用户关注请求。

特定平台

  • macOS: null无效。
  • Linux: 紧急程度级别具有相同的效果

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.requestUserAttention();

参数

名称 类型
requestType null | UserAttentionType

返回值: Promise<void>

表示操作成功或失败的promise。

scaleFactor

scaleFactor(): Promise<number>

可用于将物理像素映射到逻辑像素的比例因子。

示例


import { appWindow } from '@tauri-apps/api/window';
const factor = await appWindow.scaleFactor();

返回值: Promise<number>

窗口的显示器比例因子。

setAlwaysOnTop

setAlwaysOnTop(alwaysOnTop: boolean): Promise<void>

窗口是否应始终位于其他窗口之上。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setAlwaysOnTop(true);

参数

名称 类型 描述
alwaysOnTop boolean 窗口是否应始终位于其他窗口之上。

返回值: Promise<void>

表示操作成功或失败的promise。

setClosable

setClosable(closable: boolean): Promise<void>

设置是否启用窗口的本地关闭按钮。

特定平台

  • Linux: GTK+ 会尽力说服窗口管理器不要显示关闭按钮。根据系统的不同,在一个已经可见的窗口上调用此函数可能不会有任何效果
  • iOS / Android: 不支持

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setClosable(false);

参数

名称 类型
closable boolean

返回值: Promise<void>

表示操作成功或失败的promise。

setContentProtected

setContentProtected(protected_: boolean): Promise<void>

防止窗口内容被其他应用程序捕获。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setContentProtected(true);

自1.2.0版本起

参数

名称 类型
protected_ boolean

返回值: Promise<void>

表示操作成功或失败的promise。

setCursorGrab

setCursorGrab(grab: boolean): Promise<void>

捕捉光标,防止其离开窗口。

不能保证光标一定会被隐藏。如果您想隐藏光标,请自行隐藏。

特定平台

  • Linux: 不支持。
  • macOS: 这就将光标锁定在一个固定的位置,看起来很别扭。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setCursorGrab(true);

参数

名称 类型 描述
grab boolean true 表示抓取光标图标,false 表示释放光标图标。

返回值: Promise<void>

表示操作成功或失败的promise。

setCursorIcon

setCursorIcon(icon: CursorIcon): Promise<void>

修改窗口的光标图标。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setCursorIcon('help');

参数

名称 类型 描述
icon CursorIcon 新光标图标

返回值: Promise<void>

表示操作成功或失败的promise。

setCursorPosition

setCursorPosition(position: PhysicalPosition | LogicalPosition): Promise<void>

更改光标在窗口坐标中的位置。

示例


import { appWindow, LogicalPosition } from '@tauri-apps/api/window';
await appWindow.setCursorPosition(new LogicalPosition(600, 300));

参数

名称 类型 描述
position PhysicalPosition | LogicalPosition 新光标位置。

返回值: Promise<void>

表示操作成功或失败的promise。

setCursorVisible

setCursorVisible(visible: boolean): Promise<void>

更改光标的可见性。

特定平台

  • Windows: 光标只在窗口范围内隐藏。
  • macOS: 只要窗口具有输入焦点,即使光标在窗口之外,光标也会被隐藏。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setCursorVisible(false);

参数

名称 类型 描述
visible boolean 如果为false,将隐藏光标。如果为true,则会显示光标。

返回值: Promise<void>

表示操作成功或失败的promise。

setDecorations

setDecorations(decorations: boolean): Promise<void>

窗口是否应有边框和条形框。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setDecorations(false);

参数

名称 类型 描述
decorations boolean 窗口是否应有边框和条形框。

返回值: Promise<void>

表示操作成功或失败的promise。

setFocus

setFocus(): Promise<void>

将窗口移至前方并聚焦。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setFocus();

返回值: Promise<void>

表示操作成功或失败的promise。

setFullscreen

setFullscreen(fullscreen: boolean): Promise<void>

设置窗口的全屏状态。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setFullscreen(true);

参数

名称 类型 描述
fullscreen boolean 窗口是否应该全屏显示。

返回值: Promise<void>

表示操作成功或失败的promise。

setIcon

setIcon(icon: string | Uint8Array): Promise<void>

设置窗口图标。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setIcon('/tauri/awesome.png');

请注意,您需要使用icon-icoicon-png Cargo 功能才能使用此 API。要启用它,请更改 Cargo.toml 文件:


[dependencies]
tauri = { version = "...", features = ["...", "icon-png"] }

参数

名称 类型 描述
icon string | Uint8Array 图标字节或图标文件路径。

返回值: Promise<void>

表示操作成功或失败的promise。

setIgnoreCursorEvents

setIgnoreCursorEvents(ignore: boolean): Promise<void>

更改光标事件行为。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setIgnoreCursorEvents(true);

参数

名称 类型 描述
ignore boolean true 表示忽略光标事件;false 表示照常处理光标事件。

返回值: Promise<void>

表示操作成功或失败的promise。

setMaxSize

setMaxSize(size: undefined | null | PhysicalSize | LogicalSize): Promise<void>

设置窗口最大内部尺寸。如果size参数未定义,则不设置约束。

示例


import { appWindow, LogicalSize } from '@tauri-apps/api/window';
await appWindow.setMaxSize(new LogicalSize(600, 500));

参数

名称 类型 描述
size undefined | null | PhysicalSize | LogicalSize 逻辑或物理内部大小,或者null表示取消设置约束。

返回值: Promise<void>

表示操作成功或失败的promise。

setMaximizable

setMaximizable(maximizable: boolean): Promise<void>

设置窗口的原生最大化按钮是否启用。如果可调整大小设置为 false,则此设置将被忽略。

特定平台

  • macOS: 禁用窗口标题栏上的 "缩放 "按钮,该按钮也用于进入全屏模式。
  • Linux / iOS / Android: 不支持。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setMaximizable(false);

参数

名称 类型
maximizable boolean

返回值: Promise<void>

表示操作成功或失败的promise。

setMinSize

setMinSize(size: undefined | null | PhysicalSize | LogicalSize): Promise<void>

设置窗口最小内部尺寸。如果未提供尺寸参数,则不设置约束。

示例


import { appWindow, PhysicalSize } from '@tauri-apps/api/window';
await appWindow.setMinSize(new PhysicalSize(600, 500));

参数

名称 类型 描述
size undefined | null | PhysicalSize | LogicalSize 逻辑或物理内部大小,或null表示取消设置约束。

返回值: Promise<void>

表示操作成功或失败的promise。

setMinimizable

setMinimizable(minimizable: boolean): Promise<void>

设置是否启用窗口的本地最小化按钮。

特定平台

  • Linux / iOS / Android: 不支持。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setMinimizable(false);

参数

名称 类型
minimizable boolean

返回值: Promise<void>

表示操作成功或失败的promise。

setPosition

setPosition(position: PhysicalPosition | LogicalPosition): Promise<void>

设置窗口外部位置。

示例


import { appWindow, LogicalPosition } from '@tauri-apps/api/window';
await appWindow.setPosition(new LogicalPosition(600, 500));

参数

名称 类型 描述
position PhysicalPosition | LogicalPosition 以逻辑或物理像素表示的新位置。

返回值: Promise<void>

表示操作成功或失败的promise。

setResizable

setResizable(resizable: boolean): Promise<void>

更新窗口可调整大小标志。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setResizable(false);

参数

名称 类型
resizable boolean

返回值: Promise<void>

表示操作成功或失败的promise。

setSize

setSize(size: PhysicalSize | LogicalSize): Promise<void>

以新的内部尺寸调整窗口大小。

示例


import { appWindow, LogicalSize } from '@tauri-apps/api/window';
await appWindow.setSize(new LogicalSize(600, 500));

参数

名称 类型 描述
size PhysicalSize | LogicalSize 逻辑或物理内部尺寸。

返回值: Promise<void>

表示操作成功或失败的promise。

setSkipTaskbar

setSkipTaskbar(skip: boolean): Promise<void>

窗口图标是否应从任务栏上隐藏。

特定平台

  • macOS: 不支持。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setSkipTaskbar(true);

参数

名称 类型 描述
skip boolean true 表示隐藏窗口图标,false 表示显示窗口图标。

返回值: Promise<void>

表示操作成功或失败的promise。

setTitle

setTitle(title: string): Promise<void>

设置窗口标题。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.setTitle('Tauri');   

参数

名称 类型 描述
title string 新标题

返回值: Promise<void>

表示操作成功或失败的promise。

show

show(): Promise<void>

将窗口可见性设置为 true。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.show();

返回值: Promise<void>

表示操作成功或失败的promise。

startDragging

startDragging(): Promise<void>

开始拖动窗口。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.startDragging();

返回值: Promise<void>

表示操作成功或失败的promise。

theme

theme(): Promise<null | Theme>

获取窗口当前主题。

特定平台

  • macOS: 主题在 macOS 10.14 上推出。在 macOS 10.13 及更低版本上返回light

示例


import { appWindow } from '@tauri-apps/api/window';
const theme = await appWindow.theme();

返回值: Promise<null | Theme>

窗口主题。

title

title(): Promise<string>

获取窗口的当前标题。

示例


import { appWindow } from '@tauri-apps/api/window';
const title = await appWindow.title();

自1.3.0版本起

返回值: Promise<string>

toggleMaximize

toggleMaximize(): Promise<void>

切换窗口最大化状态。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.toggleMaximize();

返回值: Promise<void>

表示操作成功或失败的promise。

unmaximize

unmaximize(): Promise<void>

取消窗口最大化。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.unmaximize();

返回值: Promise<void>

表示操作成功或失败的promise。

unminimize

unminimize(): Promise<void>

取消窗口最小化。

示例


import { appWindow } from '@tauri-apps/api/window';
await appWindow.unminimize();

返回值: Promise<void>

getByLabel

Static getByLabel(label: string): null | WebviewWindow

为与给定标签关联的webview获取 WebviewWindow。

示例


import { WebviewWindow } from '@tauri-apps/api/window';
const mainWindow = WebviewWindow.getByLabel('main');

参数

名称 类型 描述
label string webview窗口标签。

返回值: null | WebviewWindow

与webview通信的 WebviewWindow 实例,如果webview不存在,则为null。

getFocusedWindow

Static getFocusedWindow(): Promise<null | WebviewWindow>

获取聚焦的窗口。

示例


import { WebviewWindow } from '@tauri-apps/api/window';
const focusedWindow = WebviewWindow.getFocusedWindow();

自1.4版本起

返回值: Promise<null | WebviewWindow>

与 webview 通信的 WebviewWindow 实例,如果没有任何聚焦窗口,则未定义。

接口

Monitor

允许您检索指定显示器的信息。

自1.0.0版本起

属性

name

name: null | string

显示器的可读名称

定义在: window.ts:83

position

position: PhysicalPosition

显示器左上角相对于较大全屏区域的位置。

定义在: window.ts:87

scaleFactor

scaleFactor: number

可用于将物理像素映射到逻辑像素的比例因子。

定义在: window.ts:89

size

size: PhysicalSize

显示器的分辨率。

定义在: window.ts:85

ScaleFactorChanged

scaleChange事件的有效载荷。

自1.0.2版本起

属性

scaleFactor

scaleFactor: number

新窗口比例系数。

定义在: window.ts:99

size

size: PhysicalSize

新窗口尺寸

定义在: window.ts:101

WindowOptions

要创建窗口的配置。

自1.0.0版本起

属性

acceptFirstMouse

Optional acceptFirstMouse: boolean

在 macOS 上,点击非活动窗口是否也会点击到webview。

定义在: window.ts:2410

alwaysOnTop

Optional alwaysOnTop: boolean

窗口是否应始终位于其他窗口之上。

定义在: window.ts:2382

center

Optional center: boolean

在屏幕中央显示窗口。

定义在: window.ts:2344

closable

Optional closable: boolean

窗口的本地关闭按钮是否启用。默认为 true。

定义在: window.ts:2433

contentProtected

Optional contentProtected: boolean

防止窗口内容被其他应用程序捕获。

定义在: window.ts:2384

decorations

Optional decorations: boolean

窗口是否应该有边框和栏条。

定义在: window.ts:2380

fileDropEnabled

Optional fileDropEnabled: boolean

webview上是否启用文件拖放功能。默认情况下是启用的。

要在 Windows 上的前台使用拖放功能,必须禁用该功能。

定义在: window.ts:2392

focus

Optional focus: boolean

窗口最初是否对焦。

定义在: window.ts:2368

fullscreen

Optional fullscreen: boolean

窗口是否为全屏模式。

定义在: window.ts:2366

height

Optional height: number

初始高度。

定义在: window.ts:2352

hiddenTitle

Optional hiddenTitle: boolean

如果为true,则在 macOS 上将窗口标题设置为隐藏。

定义在: window.ts:2406

maxHeight

Optional maxHeight: number

最大高度。仅适用于同时设置了 maxWidth 的情况。

定义在: window.ts:2360

maxWidth

Optional maxWidth: number

最大宽度。仅适用于同时设置了 maxHeight 的情况。

定义在: window.ts:2358

maximizable

Optional maximizable: boolean

窗口的原生最大化按钮是否启用。默认为 true

定义在: window.ts:2425

maximized

Optional maximized: boolean

窗口是否应在创建时最大化。

定义在: window.ts:2376

minHeight

Optional minHeight: number

最小高度。仅适用于同时设置了 minWidth 的情况。

定义在: window.ts:2356

minWidth

Optional minWidth: number

最小宽度。仅适用于同时设置了 minHeight 的情况。

定义在: window.ts:2354

minimizable

Optional minimizable: boolean

窗口的本地最小化按钮是否启用。默认为 true

定义在: window.ts:2429

resizable

Optional resizable: boolean

窗口是否可调整大小。

定义在: window.ts:2362

skipTaskbar

Optional skipTaskbar: boolean

是否将窗口图标添加到任务栏。

定义在: window.ts:2386

tabbingIdentifier

Optional tabbingIdentifier: string

定义 macOS 上的窗口选项卡标识符

具有相同选项卡标识符的窗口将被分组在一起。如果未设置选项卡标识符,则将禁用自动选项卡。

定义在: window.ts:2417

theme

Optional theme: Theme

初始窗口主题。默认为系统主题。

仅在 Windows 和 macOS 10.14+ 上运行。

定义在: window.ts:2398

title

Optional title: string

窗口标题

定义在: window.ts:2364

titleBarStyle

Optional titleBarStyle: TitleBarStyle

macOS 标题栏的样式。

定义在: window.ts:2402

transparent

Optional transparent: boolean

窗口是否透明。请注意,在 macOS 上,这需要在 tauri.conf.json > tauri > macOSPrivateApi 下启用 macos-private-api 功能标志。警告:在 macOS 上使用私有 API 会导致应用程序无法上架App Store

定义在: window.ts:2374

url

Optional url: string

要打开的远程 URL 或本地文件路径。

  • 例如https://github.com/tauri-apps等 URL 直接在 Tauri 窗口中打开。
  • data:URL 如 data:text/html,<html>...仅支持用于 tauri 依赖项的 window-data-url Cargo 功能。
  • 本地文件路径或路由,如 /path/to/page.html/users,会被附加到应用程序 URL(开发环境下为 devServer URL,生产环境下为 tauri://localhost/https://tauri.localhost/)。

定义在: window.ts:2342

userAgent

Optional userAgent: string

webview的用户代理。

定义在: window.ts:2421

visible

Optional visible: boolean

窗口是否应在创建后立即可见。

定义在: window.ts:2378

width

Optional width: number

初始宽度。

定义在: window.ts:2350

x

Optional x: number

初始垂直位置。仅适用于同时设置了 y 的情况。

定义在: window.ts:2346

y

Optional y: number

初始水平位置。仅适用于同时设置了 x 的情况。

定义在: window.ts:2348

类型别名

CursorIcon

CursorIcon: "default" | "crosshair" | "hand" | "arrow" | "move" | "text" | "wait" | "help" | "progress" | "notAllowed" | "contextMenu" | "cell" | "verticalText" | "alias" | "copy" | "noDrop" | "grab" | "grabbing" | "allScroll" | "zoomIn" | "zoomOut" | "eResize" | "nResize" | "neResize" | "nwResize" | "sResize" | "seResize" | "swResize" | "wResize" | "ewResize" | "nsResize" | "neswResize" | "nwseResize" | "colResize" | "rowResize"

定义在: window.ts:237

FileDropEvent

FileDropEvent: { paths: string[] ; type: "hover" } | { paths: string[] ; type: "drop" } | { type: "cancel" }

文件拖放事件类型

定义在: window.ts:105

Theme

Theme: "light" | "dark"

定义在: window.ts:73

TitleBarStyle

TitleBarStyle: "visible" | "transparent" | "overlay"

定义在: window.ts:74

变量

appWindow

appWindow: WebviewWindow

当前窗口的 WebviewWindow。

定义在: window.ts:2310

方法

availableMonitors

availableMonitors(): Promise<Monitor[]>

返回系统中所有可用显示器的列表。

示例


import { availableMonitors } from '@tauri-apps/api/window';
const monitors = availableMonitors();

自1.0.0版本起

返回值: Promise<Monitor[]>

currentMonitor

currentMonitor(): Promise<Monitor | null>

返回窗口当前所在的显示器。如果无法检测到当前显示器,则返回null

示例


import { currentMonitor } from '@tauri-apps/api/window';
const monitor = currentMonitor();

自1.0.0版本起

返回值: Promise<Monitor | null>

getAll

getAll(): WebviewWindow[]

获取所有可用webview窗口的 WebviewWindow 实例列表。

自1.0.0版本起

返回值: WebviewWindow[]

getCurrent

getCurrent(): WebviewWindow

获取当前webview窗口的 WebviewWindow 实例。

自1.0.0版本起

返回值: WebviewWindow

primaryMonitor

primaryMonitor(): Promise<Monitor | null>

返回系统的主显示器。如果无法识别主显示器,则返回null

示例


import { primaryMonitor } from '@tauri-apps/api/window';
const monitor = primaryMonitor();

自1.0.0版本起

返回值: Promise<Monitor | null>