窗口
提供用于创建窗口、与其他窗口通信和操作当前窗口的 API。
当 tauri.conf.json
中的 build.withGlobalTauri
设置为 true
时,也可以使用 window.__TAURI__.window
访问此软件包。
必须将 API 添加到 tauri.conf.json
中的 tauri.allowlist.window
{
"tauri": {
"allowlist": {
"window": {
"all": true, // enable all window APIs
"create": true, // enable window creation
"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 <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 | 数字 |
y | 数字 |
定义于: 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
参数
名称 | 类型 |
---|---|
宽度 | 数字 |
高度 | 数字 |
定义于: window.ts:120
属性
height
高度:
number
定义于: window.ts:118
type
type:
string
='Logical'
定义于: window.ts:116
width
宽度:
number
定义于: window.ts:117
PhysicalPosition
以物理像素表示的位置。
自: 1.0.0
构造函数
constructor
new PhysicalPosition(
x
:number
,y
:number
):PhysicalPosition
参数
名称 | 类型 |
---|---|
x | 数字 |
y | 数字 |
定义于: window.ts:182
属性
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 | 数字 |
PhysicalSize
以物理像素表示的大小。
自: 1.0.0
构造函数
constructor
new PhysicalSize(
width
:number
,height
:number
):PhysicalSize
参数
名称 | 类型 |
---|---|
宽度 | 数字 |
高度 | 数字 |
定义于:window.ts:136
属性
height
高度:
number
定义于:window.ts:134
type
类型:
string
='Physical'
定义于:window.ts:132
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 | 数字 |
返回:LogicalSize
WebviewWindow
创建新的 webview 窗口并获取现有窗口的句柄。
窗口通过标签进行标识,这是一个唯一的标识符,可用于稍后引用它。它只能包含字母数字字符 a-zA-Z
以及以下特殊字符 -
、/
、:
和 _
。
示例
// loading embedded asset:
const webview = new WebviewWindow('theUniqueLabel', {
url: 'path/to/page.html'
});
// alternatively, load a remote URL:
const webview = new WebviewWindow('theUniqueLabel', {
url: 'https://github.com/tauri-apps/tauri'
});
webview.once('tauri://created', function () {
// webview window successfully created
});
webview.once('tauri://error', function (e) {
// an error happened creating the webview window
});
// emit an event to the backend
await webview.emit("some event", "data");
// listen to an event from the backend
const unlisten = await webview.listen("event name", e => {});
unlisten();
自: 1.0.2
层次结构
WindowManager
- WebviewWindow
构造函数
构造函数
new WebviewWindow(
标签
:字符串
,选项?
: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 window successfully created
});
webview.once('tauri://error', function (e) {
// an error happened creating the webview window
});
参数
名称 | 类型 | 描述 |
---|---|---|
标签 | 字符串 | 唯一的 webview 窗口标签。必须为字母数字:a-zA-Z-/:_ 。 |
选项 | WindowOptions | - |
覆盖: WindowManager.constructor
定义于: window.ts:2247
属性
标签
标签:
字符串
窗口标签。它是窗口的唯一标识符,可用于稍后引用它。
继承自: WindowManager.label
定义于: window.ts:318
侦听器
侦听器:
Record
<字符串
,EventCallback
<任何
>[]>
本地事件侦听器。
继承自: WindowManager.listeners
定义于: window.ts:320
方法
居中
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 | 源窗口标签。
示例
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) => { });
// on another window...
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');
参数
名称 | 类型 | 描述 |
---|---|---|
事件 | 字符串 | 事件名称。只能包含字母数字字符、- 、/ 、: 和 _ 。 |
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();
窗口的内部位置。
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
>
侦听后端或 Web 视图发出的事件。该事件必须是全局事件或针对此窗口的事件。
有关更多信息,请参阅 emit
。
示例
import { appWindow } from '@tauri-apps/api/window';
const unlisten = await appWindow.listen<string>('state-changed', (event) => {
console.log(`Got error: ${payload}`);
});
// you need to call unlisten if your handler goes out of scope e.g. the component is unmounted
unlisten();
请注意,如果侦听器超出范围(例如卸载组件),则需要移除侦听器。
类型参数
T
参数
名称 | 类型 | 描述 |
---|---|---|
事件 | EventName | 事件名称。只能包含字母数字字符、- 、/ 、: 和 _ 。 |
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) {
// user did not confirm closing the window; let's prevent it
event.preventDefault();
}
});
// you need to call unlisten if your handler goes out of scope e.g. the component is unmounted
unlisten();
自: 1.0.2
参数
名称 | 类型 |
---|---|
handler | (event : CloseRequestedEvent ) => void | Promise <void > |
返回:Promise
<UnlistenFn
>
解析为取消监听该事件的函数的 Promise。请注意,如果监听器超出范围(例如组件已卸载),则需要移除该监听器。
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');
}
});
// you need to call unlisten if your handler goes out of scope e.g. the component is unmounted
unlisten();
自: 1.0.2
参数
名称 | 类型 |
---|---|
handler | EventCallback <FileDropEvent > |
返回:Promise
<UnlistenFn
>
解析为取消监听该事件的函数的 Promise。请注意,如果监听器超出范围(例如组件已卸载),则需要移除该监听器。
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);
});
// you need to call unlisten if your handler goes out of scope e.g. the component is unmounted
unlisten();
自: 1.0.2
参数
名称 | 类型 |
---|---|
handler | EventCallback <boolean > |
返回:Promise
<UnlistenFn
>
解析为取消监听该事件的函数的 Promise。请注意,如果监听器超出范围(例如组件已卸载),则需要移除该监听器。
onMenuClicked
onMenuClicked(
handler
:EventCallback
<string
>):Promise
<UnlistenFn
>
监听窗口菜单项点击。有效载荷是项目 id。
示例
import { appWindow } from "@tauri-apps/api/window";
const unlisten = await appWindow.onMenuClicked(({ payload: menuId }) => {
console.log('Menu clicked: ' + menuId);
});
// you need to call unlisten if your handler goes out of scope e.g. the component is unmounted
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);
});
// you need to call unlisten if your handler goes out of scope e.g. the component is unmounted
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);
});
// you need to call unlisten if your handler goes out of scope e.g. the component is unmounted
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);
});
// you need to call unlisten if your handler goes out of scope e.g. the component is unmounted
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);
});
// you need to call unlisten if your handler goes out of scope e.g. the component is unmounted
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<null>('initialized', (event) => {
console.log(`Window initialized!`);
});
// you need to call unlisten if your handler goes out of scope e.g. the component is unmounted
unlisten();
请注意,如果侦听器超出范围(例如卸载组件),则需要移除侦听器。
类型参数
T
参数
名称 | 类型 | 描述 |
---|---|---|
事件 | 字符串 | 事件名称。只能包含字母数字字符、- 、/ 、: 和 _ 。 |
handler | EventCallback <T > | 事件处理程序。 |
返回:Promise
<UnlistenFn
>
解析为取消监听该事件的函数的 Promise。
outerPosition
outerPosition():
Promise
<PhysicalPosition
>
窗口左上角相对于桌面左上角的位置。
示例
import { appWindow } from '@tauri-apps/api/window';
const position = await appWindow.outerPosition();
窗口的外观位置。
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 | 布尔值 | 窗口是否始终位于其他窗口之上。 |
返回: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 | 布尔值 |
返回:Promise
<void
>
指示操作成功或失败的 Promise。
setContentProtected
setContentProtected(
protected_
:boolean
):Promise
<void
>
防止其他应用捕获窗口内容。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setContentProtected(true);
自: 1.2.0
参数
名称 | 类型 |
---|---|
protected_ | 布尔值 |
返回:Promise
<void
>
指示操作成功或失败的 Promise。
setCursorGrab
setCursorGrab(
grab
:boolean
):Promise
<void
>
抓取光标,防止其离开窗口。
无法保证光标会被隐藏。如果你希望隐藏光标,你应该自己隐藏它。
特定于平台
- Linux:不受支持。
- macOS:这会将光标锁定在固定位置,在视觉上看起来很别扭。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setCursorGrab(true);
参数
名称 | 类型 | 描述 |
---|---|---|
grab | 布尔值 | 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 | 布尔值 | 如果为 false ,这将隐藏鼠标光标。如果为 true ,这将显示鼠标光标。 |
返回:Promise
<void
>
指示操作成功或失败的 Promise。
setDecorations
setDecorations(
decorations
:boolean
):Promise
<void
>
窗口是否应具有边框和栏。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setDecorations(false);
参数
名称 | 类型 | 描述 |
---|---|---|
decorations | 布尔值 | 窗口是否应具有边框和栏。 |
返回: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 | 布尔值 | 窗口是否应该进入全屏模式。 |
返回:Promise
<void
>
指示操作成功或失败的 Promise。
setIcon
setIcon(
icon
:string
|Uint8Array
):Promise
<void
>
设置窗口图标。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setIcon('/tauri/awesome.png');
请注意,您需要使用 icon-ico
或 icon-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 | 布尔值 | 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);
参数
名称 | 类型 |
---|---|
可最大化 | 布尔值 |
返回:Promise
<void
>
指示操作成功或失败的 Promise。
setMinSize
setMinSize(
size
:undefined
|null
|PhysicalSize
|LogicalSize
):Promise
<void
>
设置窗口最小内部大小。如果未提供 size
参数,则取消设置约束。
示例
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);
参数
名称 | 类型 |
---|---|
可最小化 | 布尔值 |
返回: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 | 布尔值 |
返回: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 | 布尔值 | 为 true 表示隐藏窗口图标,为 false 表示显示窗口图标。 |
返回:Promise
<void
>
指示操作成功或失败的 Promise。
setTitle
setTitle(
title
:string
):Promise
<void
>
设置窗口标题。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setTitle('Tauri');
参数
名称 | 类型 | 描述 |
---|---|---|
title | 字符串 | 新标题 |
返回: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
获取窗口的当前主题。
特定于平台的
- macOS:主题在 macOS 10.14 中引入。在 macOS 10.13 及更低版本中返回
light
。
示例
import { appWindow } from '@tauri-apps/api/window';
const theme = await appWindow.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
>
指示操作成功或失败的 Promise。
getByLabel
Static
getByLabel(label
:string
):null
|WebviewWindow
获取与给定标签关联的 webview 的 WebviewWindow。
示例
import { WebviewWindow } from '@tauri-apps/api/window';
const mainWindow = WebviewWindow.getByLabel('main');
参数
名称 | 类型 | 描述 |
---|---|---|
标签 | 字符串 | 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 实例,如果没有焦点窗口,则返回 undefined
。
接口
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
可选
acceptFirstMouse:boolean
在 macOS 上,单击非活动窗口是否也会单击到 webview。
定义于: window.ts:2410
alwaysOnTop
可选
alwaysOnTop:boolean
窗口是否始终位于其他窗口之上。
定义于: window.ts:2382
center
可选
center:boolean
在屏幕中央显示窗口。
定义于: window.ts:2344
closable
可选
closable:boolean
是否启用窗口的原生关闭按钮。默认为 true
。
定义于: window.ts:2433
contentProtected
可选
contentProtected:boolean
防止其他应用捕获窗口内容。
定义于: window.ts:2384
decorations
可选
decorations:boolean
窗口是否应该有边框和栏。
定义于: window.ts:2380
fileDropEnabled
可选
fileDropEnabled:boolean
是否在 webview 上启用文件拖放。默认情况下启用。
在 Windows 上的前端使用拖放需要禁用它。
定义于: window.ts:2392
focus
可选
focus:boolean
窗口是否最初获得焦点。
定义于: window.ts:2368
fullscreen
可选
fullscreen:boolean
窗口是否处于全屏模式。
定义于: window.ts:2366
height
可选
height:number
初始高度。
定义于: window.ts:2352
hiddenTitle
可选
hiddenTitle:boolean
如果为 true
,则设置窗口标题在 macOS 上隐藏。
定义于: window.ts:2406
maxHeight
可选
maxHeight:number
最大高度。仅当 maxWidth
也设置时才适用。
定义于: window.ts:2360
maxWidth
可选
maxWidth:number
最大宽度。仅当 maxHeight
也设置时才适用。
定义于: window.ts:2358
maximizable
可选
maximizable:boolean
是否启用窗口的原生最大化按钮。默认为 true
。
定义于: window.ts:2425
maximized
可选
最大化:布尔值
窗口在创建时是否应最大化。
定义于: window.ts:2376
最小高度
可选
最小高度:数字
最小高度。仅当同时设置了 最小宽度
时才适用。
定义于: window.ts:2356
最小宽度
可选
最小宽度:数字
最小宽度。仅当同时设置了 最小高度
时才适用。
定义于: window.ts:2354
可最小化
可选
可最小化:布尔值
窗口的原生最小化按钮是否启用。默认为 true
。
定义于: window.ts:2429
可调整大小
可选
可调整大小:布尔值
窗口是否可调整大小。
定义于: window.ts:2362
跳过任务栏
可选
跳过任务栏:布尔值
窗口图标是否应添加到任务栏。
定义于: window.ts:2386
选项卡标识符
可选
选项卡标识符:字符串
在 macOS 上定义窗口 选项卡标识符。
具有相同选项卡标识符的窗口将被分组在一起。如果未设置选项卡标识符,则会禁用自动选项卡。
定义于: window.ts:2417
theme
可选
theme:Theme
初始窗口主题。默认为系统主题。
仅在 Windows 和 macOS 10.14+ 上实现。
定义于: window.ts:2398
title
可选
title:string
窗口标题。
定义于: window.ts:2364
titleBarStyle
可选
titleBarStyle:TitleBarStyle
macOS 标题栏的样式。
定义于: window.ts:2402
transparent
可选
transparent:boolean
窗口是否透明。请注意,在 macOS
上,这需要 macos-private-api
特性标志,在 tauri.conf.json > tauri > macOSPrivateApi
下启用。警告:在 macOS
上使用私有 API 会阻止你的应用程序被 App Store
接受。
定义于: window.ts:2374
url
可选
url:string
要打开的远程 URL 或本地文件路径。
- 诸如
https://github.com/tauri-apps
的 URL 直接在 Tauri 窗口中打开。 - 诸如
data:text/html,<html>...
的 data: URL 仅受tauri
依赖项的window-data-url
Cargo 特性支持。 - 诸如
/path/to/page.html
或/users
的本地文件路径或路由被附加到应用程序 URL(开发时的 devServer URL,或生产时的tauri://localhost/
和https://tauri.localhost/
)。
定义于: window.ts:2342
userAgent
可选
userAgent:string
Webview 的用户代理。
定义在: window.ts:2421
visible
可选
visible:boolean
窗口在创建时是否应立即可见。
定义在: window.ts:2378
width
可选
width:number
初始宽度。
定义在: window.ts:2350
x
可选
x:number
初始垂直位置。仅当 y
也设置时才适用。
定义在: window.ts:2346
y
可选
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
返回系统上所有可用显示器的列表。
示例
import { availableMonitors } from '@tauri-apps/api/window';
const monitors = availableMonitors();
自: 1.0.0
currentMonitor
返回窗口当前所在的显示器。如果无法检测到当前显示器,则返回 null
。
示例
import { currentMonitor } from '@tauri-apps/api/window';
const monitor = currentMonitor();
自: 1.0.0
getAll
getAll():
WebviewWindow
[]
获取所有可用 webview 窗口的 WebviewWindow
实例列表。
自: 1.0.0
返回:WebviewWindow
[]
getCurrent
getCurrent():
WebviewWindow
获取当前 webview 窗口的 WebviewWindow
实例。
自: 1.0.0
primaryMonitor
返回系统的**主显示器**。如果无法识别任何显示器为主显示器,则返回 null
。
示例
import { primaryMonitor } from '@tauri-apps/api/window';
const monitor = primaryMonitor();
自: 1.0.0