窗口(window)
提供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,
"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,以优化包大小和安全性。
Window events
可以使用 appWindow.listen
监听事件:
import { appWindow } from "@tauri-apps/api/window";
appWindow.listen("my-window-event", ({ event, payload }) => { });
Enumerations
Classes
CloseRequestedEvent
Since: 1.0.2
构造函数
-
new CloseRequestedEvent(
event
:Event
<null
>):CloseRequestedEvent
参数
名称 |
类型 |
|
|
定义在: window.ts:1933
属性
-
event:
EventName
事件名称
定义在: window.ts:1926
-
id:
number
用于取消监听的事件标识符。
定义在: window.ts:1930
-
windowLabel:
string
触发此事件的窗口的标签。
定义在: window.ts:1928
方法
-
isPreventDefault():
boolean
返回: boolean
-
preventDefault():
void
返回: void
LogicalPosition
以逻辑像素表示的位置。
Since: 1.0.0
构造函数
-
new LogicalPosition(
x
:number
,y
:number
):LogicalPosition
参数
名称 |
类型 |
|
|
|
|
定义在: window.ts:163
属性
-
type:
string
='Logical'
定义在: window.ts:159
-
x:
number
定义在: window.ts:160
-
y:
number
定义在: window.ts:161
LogicalSize
以逻辑像素表示的大小。
Since: 1.0.0
构造函数
-
new LogicalSize(
width
:number
,height
:number
):LogicalSize
参数
名称 |
类型 |
|
|
|
|
定义在: window.ts:117
属性
-
height:
number
定义在: window.ts:115
-
type:
string
='Logical'
定义在: window.ts:113
-
width:
number
定义在: window.ts:114
PhysicalPosition
以物理像素表示的位置。
Since: 1.0.0
构造函数
-
new PhysicalPosition(
x
:number
,y
:number
):PhysicalPosition
参数
名称 |
类型 |
|
|
|
|
定义在: window.ts:179
属性
-
type:
string
='Physical'
定义在: window.ts:175
-
x:
number
定义在: window.ts:176
-
y:
number
定义在: window.ts:177
方法
-
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);
参数
名称 |
类型 |
|
|
返回: LogicalPosition
PhysicalSize
以物理像素表示的大小。
Since: 1.0.0
构造函数
-
new PhysicalSize(
width
:number
,height
:number
):PhysicalSize
参数
名称 |
类型 |
|
|
|
|
定义在: window.ts:133
属性
-
height:
number
定义在: window.ts:131
-
type: string =
'Physical'
定义在: window.ts:129
-
width:
number
定义在: window.ts:130
方法
-
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);
参数
名称 |
类型 |
|
|
返回: 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();
Since: 1.0.2
层次结构
-
WindowManager
-
WebviewWindow
-
构造函数
-
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 window successfully created
});
webview.once('tauri://error', function (e) {
// an error happened creating the webview window
});
参数
名称 |
类型 |
描述 |
|
|
唯一的 webview 窗口标签。必须是字母数字字符: |
|
- |
覆盖: WindowManager.constructor
定义在: window.ts:2001
属性
-
label:
string
窗口标签。它是窗口的唯一标识符,可用于以后引用。
继承自: WindowManager.label
定义在: window.ts:315
-
listeners:
Record
<string
,EventCallback
<any
>[]>
监听本地事件。
继承自: WindowManager.listeners
定义在: window.ts:317
方法
-
center():
Promise
<void
>
居中窗口。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.center();
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
close():
Promise
<void
>
关闭窗口。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.close();
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
emit(
event
:string
,payload?
:unknown
):Promise
<void
>
向后端发出一个与webview窗口相关的事件。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.emit('window-loaded', { loggedIn: true, token: 'authToken' });
参数
名称 |
类型 |
描述 |
|
|
事件名称。只能包含字母、数字、 |
|
|
事件负载。 |
返回: Promise
<void
>
-
hide():
Promise
<void
>
将窗口可见性设置为false。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.hide();
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
innerPosition():
Promise
<PhysicalPosition
>
窗口客户端区域左上角相对于桌面左上角的位置。
示例
import { appWindow } from '@tauri-apps/api/window';
const position = await appWindow.innerPosition();
返回: Promise
<PhysicalPosition
>
窗口的内部位置。
-
innerSize():
Promise
<PhysicalSize
>
窗口客户端区域的物理大小。客户端区域是窗口的内容,不包括标题栏和边框。
示例
import { appWindow } from '@tauri-apps/api/window';
const size = await appWindow.innerSize();
返回: Promise
<PhysicalSize
>
窗口的内部大小。
-
isDecorated():
Promise
<boolean
>
获取窗口当前的装饰状态。
示例
import { appWindow } from '@tauri-apps/api/window';
const decorated = await appWindow.isDecorated();
返回: Promise
<boolean
>
窗口是否装饰。
-
isFullscreen():
Promise
<boolean
>
获取窗口当前的全屏状态。
示例
import { appWindow } from '@tauri-apps/api/window';
const fullscreen = await appWindow.isFullscreen();
返回: Promise
<boolean
>
窗口是否处于全屏模式。
-
isMaximized():
Promise
<boolean
>
获取窗口当前的最大化状态。
示例
import { appWindow } from '@tauri-apps/api/window';
const maximized = await appWindow.isMaximized();
返回: Promise
<boolean
>
窗口是否最大化。
-
isMinimized():
Promise
<boolean
>
获取窗口当前的最小化状态。
示例
import { appWindow } from '@tauri-apps/api/window';
const minimized = await appWindow.isMinimized();
Since: 1.3.0
返回: Promise
<boolean
>
-
isResizable():
Promise
<boolean
>
获取窗口当前的可调整大小状态。
示例
import { appWindow } from '@tauri-apps/api/window';
const resizable = await appWindow.isResizable();
返回: Promise
<boolean
>
窗口是否可调整大小。
-
isVisible():
Promise
<boolean
>
获取窗口当前的可见状态。
示例
import { appWindow } from '@tauri-apps/api/window';
const visible = await appWindow.isVisible();
返回: Promise
<boolean
>
窗口是否可见。
-
listen<T>(
event
:EventName
,handler
:EventCallback
<T
>):Promise
<UnlistenFn
>
监听由后端发出的与webview窗口相关的事件。
示例
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
参数
名称 |
类型 |
描述 |
|
事件名称。只能包含字母、数字、 |
|
|
事件句柄。 |
返回: Promise
<UnlistenFn
>
一个 Promise,解析为解除事件监听的函数。请注意,如果监听器超出范围(例如组件被卸载),则需要移除监听器。
-
maximize():
Promise
<void
>
最大化窗口。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.maximize();
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
minimize():
Promise
<void
>
最小化窗口。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.minimize();
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
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();
Since: 1.0.2
参数
名称 |
类型 |
|
( |
返回: Promise
<UnlistenFn
>
一个 Promise,解析为解除事件监听的函数。请注意,如果监听器超出范围(例如组件被卸载),则需要移除监听器。
-
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();
Since: 1.0.2
参数
名称 |
类型 |
|
返回: Promise
<UnlistenFn
>
一个 Promise,解析为解除事件监听的函数。请注意,如果监听器超出范围(例如组件被卸载),则需要移除监听器。
-
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();
Since: 1.0.2
参数
名称 |
类型 |
|
|
返回: Promise
<UnlistenFn
>
一个 Promise,解析为解除事件监听的函数。请注意,如果监听器超出范围(例如组件被卸载),则需要移除监听器。
-
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();
Since: 1.0.2
参数
名称 |
类型 |
|
|
返回: Promise
<UnlistenFn
>
一个 Promise,解析为解除事件监听的函数。请注意,如果监听器超出范围(例如组件被卸载),则需要移除监听器。
-
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();
Since: 1.0.2
参数
名称 |
类型 |
|
返回: Promise
<UnlistenFn
>
一个 Promise,解析为解除事件监听的函数。请注意,如果监听器超出范围(例如组件被卸载),则需要移除监听器。
-
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();
Since: 1.0.2
参数
名称 |
类型 |
|
返回: Promise
<UnlistenFn
>
一个 Promise,解析为解除事件监听的函数。请注意,如果监听器超出范围(例如组件被卸载),则需要移除监听器。
-
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();
Since: 1.0.2
参数
名称 |
类型 |
|
返回: Promise
<UnlistenFn
>
一个 Promise,解析为解除事件监听的函数。请注意,如果监听器超出范围(例如组件被卸载),则需要移除监听器。
-
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();
Since: 1.0.2
参数
名称 |
类型 |
|
返回: Promise
<UnlistenFn
>
一个 Promise,解析为解除事件监听的函数。请注意,如果监听器超出范围(例如组件被卸载),则需要移除监听器。
-
once<
T
>(event
:string
,handler
:EventCallback
<T
>):Promise
<UnlistenFn
>
监听由后端发出的与webview窗口相关的单次事件。
示例
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
参数
名称 |
类型 |
描述 |
|
|
事件名称。只能包含字母、数字、 |
|
事件句柄。 |
返回: Promise
<UnlistenFn
>
一个 Promise,解析为解除事件监听的函数。请注意,如果监听器超出范围(例如组件被卸载),则需要移除监听器。
-
outerPosition():
Promise
<PhysicalPosition
>
窗口左上角相对于桌面左上角的位置。
示例
import { appWindow } from '@tauri-apps/api/window';
const position = await appWindow.outerPosition();
返回: Promise
<PhysicalPosition
>
窗口的外部位置。
-
outerSize():
Promise
<PhysicalSize
>
整个窗口的物理尺寸。这些尺寸包括标题栏和边框。如果您不需要(通常也不需要),请使用内部大小(inner_size)。
示例
import { appWindow } from '@tauri-apps/api/window';
const size = await appWindow.outerSize();
返回: Promise
<PhysicalSize
>
窗口的外部大小。
-
requestUserAttention(
requestType
:null
|UserAttentionType
):Promise
<void
>
请求用户关注窗口,如果应用程序已经聚焦,则此操作无效。请求用户关注的表现方式取决于平台,请参阅 UserAttentionType
了解详情。
提供 null
将取消用户关注请求。当窗口接收到输入时,WM可能不会自动取消用户关注请求。
平台特定
-
macOS:
null
无效。 -
Linux: 紧急级别有相同的效果。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.requestUserAttention();
参数
名称 |
类型 |
|
|
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
scaleFactor():
Promise
<number
>
用于将物理像素映射到逻辑像素的比例因子。
示例
import { appWindow } from '@tauri-apps/api/window';
const factor = await appWindow.scaleFactor();
返回: Promise
<number
>
窗口的显示器比例因子。
-
setAlwaysOnTop(
alwaysOnTop
:boolean
):Promise
<void
>
窗口是否应始终位于其他窗口之上。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setAlwaysOnTop(true);
参数
名称 |
类型 |
描述 |
|
|
窗口是否应始终位于其他窗口之上。 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setContentProtected(
protected_
:boolean
):Promise
<void
>
防止窗口内容被其他应用程序捕获。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setContentProtected(true);
Since: 1.2.0
参数
名称 |
类型 |
|
|
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setCursorGrab(
grab
:boolean
):Promise
<void
>
捕获光标,防止其离开窗口。
无法保证光标会隐藏。如果你想隐藏它,应该自己动手。
平台特定
-
Linux: 不支持。
-
macOS: 这会将光标锁定在固定位置,视觉上会显得很尴尬。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setCursorGrab(true);
参数
名称 |
类型 |
描述 |
|
|
|
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setCursorIcon(
icon
:CursorIcon
):Promise
<void
>
修改窗口的光标图标。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setCursorIcon('help');
参数
名称 |
类型 |
描述 |
|
新的光标图标。 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setCursorPosition(
position
:PhysicalPosition
|LogicalPosition
):Promise
<void
>
更改光标在窗口坐标中的位置。
示例
import { appWindow, LogicalPosition } from '@tauri-apps/api/window';
await appWindow.setCursorPosition(new LogicalPosition(600, 300));
参数
名称 |
类型 |
描述 |
|
新的光标位置。 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setCursorVisible(
visible
:boolean
):Promise
<void
>
将光标的可见性进行修改。
平台特定:
-
Windows: 光标仅在窗口范围内隐藏。
-
macOS: 只要窗口具有输入焦点,即使光标在窗口外也会隐藏。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setCursorVisible(false);
参数
名称 |
类型 |
描述 |
|
|
如果为 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setDecorations(
decorations
:boolean
):Promise
<void
>
设置窗口是否应有边框和工具栏。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setDecorations(false);
参数
名称 |
类型 |
描述 |
|
|
窗口是否应该有边框和条。 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setFocus():
Promise
<void
>
将窗口置于前端并聚焦。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setFocus();
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setFullscreen(
fullscreen
:boolean
):Promise
<void
>
设置窗口的全屏状态。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setFullscreen(true);
参数
名称 |
类型 |
描述 |
|
|
是否应将窗口置于全屏状态。 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setIcon(
icon
:string
|Uint8Array
): Promise<void>
设置窗口图标。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setIcon('/tauri/awesome.png');
注意:使用此 API 需要启用 icon-ico
或 icon-png
Cargo 功能。要启用它,请更改您的 Cargo.toml 文件:
[dependencies]
tauri = { version = "...", features = ["...", "icon-png"] }
参数
名称 |
类型 |
描述 |
|
|
图标的字节或图标文件的路径。 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setIgnoreCursorEvents(
ignore
:boolean
):Promise
<void
>
改变光标事件的行为。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setIgnoreCursorEvents(true);
参数
名称 |
类型 |
描述 |
|
|
|
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setMaxSize(
size
:undefined
|null
|PhysicalSize
|LogicalSize
):Promise
<void
>
设置窗口的最大内部尺寸。如果 size
参数未定义,则解除限制。
示例
import { appWindow, LogicalSize } from '@tauri-apps/api/window';
await appWindow.setMaxSize(new LogicalSize(600, 500));
参数
名称 |
类型 |
描述 |
|
|
逻辑或物理内部尺寸,或者为 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setMinSize(
size
:undefined
|null
|PhysicalSize
|LogicalSize
):Promise
<void
>
设置窗口的最小内部尺寸。如果没有提供 size
参数,则解除限制。
示例
import { appWindow, PhysicalSize } from '@tauri-apps/api/window';
await appWindow.setMinSize(new PhysicalSize(600, 500));
参数
名称 |
类型 |
描述 |
|
|
逻辑或物理内部尺寸,或者为 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setPosition(
position
:PhysicalSize
|LogicalSize
):Promise
<void
>
设置窗口外部的位置。
示例
import { appWindow, LogicalPosition } from '@tauri-apps/api/window';
await appWindow.setPosition(new LogicalPosition(600, 500));
参数
名称 |
类型 |
描述 |
|
新的位置,以逻辑或物理像素为单位。 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setResizable(
resizable
:boolean
):Promise
<void
>
更新窗口的可调整大小标志。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setResizable(false);
参数
名称 |
类型 |
|
|
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setSize(
size
:PhysicalSize
|LogicalSize
):Promise
<void
>
用新的内部尺寸调整窗口大小。
示例
import { appWindow, LogicalSize } from '@tauri-apps/api/window';
await appWindow.setSize(new LogicalSize(600, 500));
参数
名称 |
类型 |
描述 |
|
逻辑或物理内部尺寸。 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setSkipTaskbar(
skip
:boolean
):Promise
<void
>
窗口图标是否应从任务栏中隐藏。
平台特定:
-
macOS: 不支持。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setSkipTaskbar(true);
参数
名称 |
类型 |
描述 |
|
|
true 隐藏窗口图标,false 显示窗口图标。 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
setTitle(
title
:string
):Promise
<void
>
设置窗口标题。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.setTitle('Tauri');
参数
名称 |
类型 |
描述 |
|
|
新标题 |
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
show():
Promise
<void
>
将窗口设置为可见。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.show();
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
startDragging():
Promise
<void
>
开始拖动窗口。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.startDragging();
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
获取窗口的当前主题。
平台特定:
-
macOS: 主题在 macOS 10.14 上引入。在 macOS 10.13 及以下版本上返回
light
。
示例
import { appWindow } from '@tauri-apps/api/window';
const theme = await appWindow.theme();
窗口主题。
-
title():
Promise
<string
>
示例
import { appWindow } from '@tauri-apps/api/window';
const title = await appWindow.title();
Since: 1.3.0
返回: Promise
<string
>
-
toggleMaximize():
Promise
<void
>
获取窗口的当前标题。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.toggleMaximize();
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
unmaximize():
Promise
<void
>
取消窗口最大化。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.unmaximize();
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
unminimize():
Promise
<void
>
取消窗口最小化。
示例
import { appWindow } from '@tauri-apps/api/window';
await appWindow.unminimize();
返回: Promise
<void
>
一个表示操作成功或失败的 Promise。
-
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。
Interfaces
Monitor
允许您检索有关给定显示器的信息。
Since: 1.0.0
属性
-
name:
null
|string
显示器的可读名称。
定义在: window.ts:80
-
position:
PhysicalPosition
显示器左上角相对于整个屏幕区域的位置。
定义在: window.ts:84
-
scaleFactor:
number
用于将物理像素映射到逻辑像素的缩放因子。
定义在: window.ts:86
-
size:
PhysicalSize
显示器的分辨率。
定义在: window.ts:82
ScaleFactorChanged
scaleChange
事件的负载。
Since: 1.0.2
属性
-
scaleFactor:
number
新的窗口缩放因子。
定义在: window.ts:96
-
size:
PhysicalSize
新的窗口大小。
定义在: window.ts:98
WindowOptions
创建窗口的配置。
Since: 1.0.0
属性
-
Optional
acceptFirstMouse:boolean
在 macOS 上,点击不活跃的窗口是否也会点击到 webview。
定义在: window.ts:2143
-
Optional
alwaysOnTop:boolean
窗口是否始终位于其他窗口之上。
定义在: window.ts:2115
-
Optional
center:boolean
在屏幕中央显示窗口。
定义在: window.ts:2077
-
Optional
contentProtected:boolean
防止窗口内容被其他应用捕获。
定义在: window.ts:2117
-
Optional
decorations:boolean
窗口是否应该有边框和栏。
定义在: window.ts:2113
-
Optional
fileDropEnabled:boolean
webview 是否启用文件拖放。默认情况下启用。
在 Windows 上,禁用它是前端使用拖放功能的前提。
定义在: window.ts:2125
-
Optional
focus:boolean
窗口是否最初是聚焦的。
定义在: window.ts:2101
-
Optional
fullscreen:boolean
窗口是否处于全屏模式。
定义在: window.ts:2099
-
Optional
height:number
初始高度。
定义在: window.ts:2085
-
Optional
hiddenTitle:boolean
如果为真,在 macOS 上将窗口标题隐藏。
定义在: window.ts:2139
-
Optional
maxHeight:number
最大高度。仅在设置了 maxWidth
时适用。
定义在: window.ts:2093
-
Optional
maxWidth:number
最大宽度。仅在设置了 maxHeight
时适用。
定义在: window.ts:2091
-
Optional
maximized:boolean
窗口在创建时是否应最大化。
定义在: window.ts:2109
-
Optional
minHeight:number
最小高度。仅在设置了 minWidth
时适用。
定义在: window.ts:2089
-
Optional
minWidth:number
最小宽度。仅在设置了 minHeight
时适用。
定义在: window.ts:2087
-
Optional
resizable:boolean
窗口是否可调整大小。
定义在: window.ts:2095
-
Optional
skipTaskbar:boolean
是否将窗口图标添加到任务栏。
定义在: window.ts:2119
-
Optional
tabbingIdentifier:string
定义 macOS 上的窗口 标签标识符。
具有相同标签标识符的窗口将被分组在一起。如果没有设置标签标识符,将禁用自动标签。
定义在: window.ts:2150
-
Optional
theme:Theme
初始窗口主题。默认为系统主题。
仅在 Windows 和 macOS 10.14+ 上实现。
定义在: window.ts:2131
-
Optional
title:string
窗口标题。
定义在: window.ts:2097
-
Optional
titleBarStyle:TitleBarStyle
macOS 标题栏的样式。
定义在: window.ts:2135
-
Optional
transparent:boolean
窗口是否透明。请注意,在 macOS
上需要启用 macos-private-api
特性标志,该标志在 tauri.conf.json > tauri > macOSPrivateApi
下启用。警告:在 macOS
上使用私有 API 将阻止您的应用程序被 App Store
接受。
定义在: window.ts:2107
-
Optional
url:string
要打开的远程 URL 或本地文件路径。
-
URL,例如
https://github.com/tauri-apps
,直接在 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:2075
-
Optional
userAgent:string
webview 的用户代理。
定义在: window.ts:2154
-
Optional
visible:boolean
窗口在创建时是否应该立即可见。
定义在: window.ts:2111
-
Optional
width:number
初始宽度。
定义在: window.ts:2083
-
Optional
x:number
初始垂直位置。仅在设置了 y
时适用。
定义在: window.ts:2079
-
Optional
y:number
初始水平位置。仅在设置了 x
时适用。
定义在: window.ts:2081
Type Aliases
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:234
FileDropEvent
-
FileDropEvent: {
paths
:string
[] ;type
:"hover"
} | {paths
:string
[] ;type
:"drop"
} | {type
:"cancel"
}
文件拖放事件类型。
定义在: window.ts:102
Functions
availableMonitors
返回系统上所有可用显示器的列表。
示例
import { availableMonitors } from '@tauri-apps/api/window';
const monitors = availableMonitors();
Since: 1.0.0
currentMonitor
返回当前窗口所在的显示器。如果无法检测到当前显示器,则返回 null。
示例
import { currentMonitor } from '@tauri-apps/api/window';
const monitor = currentMonitor();
Since: 1.0.0
getAll
-
getAll():
WebviewWindow
[]
获取所有可用 Webview 窗口的 WebviewWindow 实例列表。
Since: 1.0.0
返回: WebviewWindow
[]
getCurrent
-
getAll():
WebviewWindow
获取当前 Webview 窗口的 WebviewWindow 实例。
Since: 1.0.0
返回: WebviewWindow