Skip to main content

窗口 window

Niva.api.window.current

/**
* 获取当前窗口的 ID。
* @returns 一个 Promise,在接收成功响应后返回当前窗口 ID。
*/
export function current(): Promise<number>;

Niva.api.window.open

/**
* 打开一个新窗口。
* @param options 可选的窗口选项,包括宽度、高度、坐标、标题和 URL 等。
* @returns 一个 Promise,在接收成功响应后返回新窗口的 ID。
*/
export function open(options: NivaWindowOptions): Promise<number>;

Niva.event.window.close

/**
* 关闭窗口。
* @param id 可选的窗口 ID,若不提供,则关闭当前窗口。若 ID 为 0,则退出程序。
* @returns 一个 Promise,在接收成功响应后表示已关闭窗口,若 ID 为 0 则表示退出程序。
*/
export function close(id?: number): Promise<void>;

Niva.api.window.list

/**
* 获取当前应用所有窗口的 ID、标题、是否可见列表。
* @returns 一个 Promise,在解析成功后返回一个包含所有窗口的 ID、标题、是否可见数据组成的对象列表。
*/
export function list(): Promise<
{ id: number; title: string; visible: boolean }[]
>;

Niva.api.window.sendMessage

/**
* 向指定 ID 的窗口发送 IPC 消息。
* @param message IPC 消息内容。
* @param id 目标窗口的 ID 号。
* @returns 一个 Promise,在接收到发送成功回执后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function sendMessage(message: string, id: number): Promise<void>;

Niva.api.window.setMenu

/**
* 设置窗口菜单。
* @param options 菜单选项,如果为 undefined 或 null,则移除菜单。
* @param id 需要设置菜单的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setMenu(
options?: WindowMenuOptions | null,
id?: number
): Promise<void>;

Niva.api.window.hideMenu

/**
* 隐藏窗口菜单。
* @param id 需要隐藏菜单的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在隐藏成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function hideMenu(id?: number): Promise<void>;

Niva.api.window.showMenu

/**
* 显示窗口菜单。
* @param id 需要显示菜单的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在显示成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function showMenu(id?: number): Promise<void>;

Niva.api.window.isMenuVisible

/**
* 判断窗口菜单是否可见。
* @param id 窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在接收到判断结果后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function isMenuVisible(id?: number): Promise<boolean>;

Niva.api.window.scaleFactor

/**
* 获取窗口缩放因子。
* @param id 需要获取缩放因子的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在解析成功后返回窗口缩放因子。
*/
export function scaleFactor(id?: number): Promise<number>;

Niva.api.window.innerPosition

/**
* 获取窗口客户区左上角在屏幕坐标系下的坐标。
* @param id 需要获取位置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在解析成功后返回窗口客户区左上角在屏幕坐标系下的坐标值。
*/
export function innerPosition(id?: number): Promise<NivaPosition>;

Niva.api.window.outerPosition

/**
* 获取窗口左上角在屏幕坐标系下的坐标。
* @param id 需要获取位置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在解析成功后返回窗口左上角在屏幕坐标系下的坐标值。
*/
export function outerPosition(id?: number): Promise<NivaPosition>;

Niva.api.window.setOuterPosition

/**
* 设置窗口左上角在屏幕坐标系下的坐标。
* @param position 窗口左上角在屏幕坐标系下的坐标值。
* @param id 需要设置位置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setOuterPosition(
position: NivaPosition,
id?: number
): Promise<void>;

Niva.api.window.innerSize

/**
* 获取窗口客户区大小。
* @param id 需要获取大小的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在解析成功后返回窗口客户区大小。
*/
export function innerSize(id?: number): Promise<NivaSize>;

Niva.api.window.setInnerSize

/**
* 设置窗口客户区大小。
* @param size 要设置的窗口客户区大小。
* @param id 需要设置大小的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setInnerSize(size: NivaSize, id?: number): Promise<void>;

Niva.api.window.outerSize

/**
* 获取窗口大小,包括边框和菜单等非客户区部分。
* @param id 需要获取大小的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在解析成功后返回窗口大小,包括边框和菜单等非客户区部分。
*/
export function outerSize(id?: number): Promise<NivaSize>;

Niva.api.window.setMinInnerSize

/**
* 设置窗口客户区最小大小。
* @param size 窗口客户区最小大小。
* @param id 需要设置大小的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setMinInnerSize(size: NivaSize, id?: number): Promise<void>;

Niva.api.window.setMaxInnerSize

/**
* 设置窗口客户区最大大小。
* @param size 窗口客户区最大大小。
* @param id 需要设置大小的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setMaxInnerSize(size: NivaSize, id?: number): Promise<void>;

Niva.api.window.setTitle

/**
* 设置窗口标题。
* @param title 窗口标题。
* @param id 需要设置标题的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setTitle(title: string, id?: number): Promise<void>;

Niva.api.window.title

/**
* 获取窗口标题。
* @param id 需要获取标题的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在解析成功后返回窗口标题。
*/
export function title(id?: number): Promise<string>;

Niva.api.window.isVisible

/**
* 判断窗口是否可见。
* @param id 需要判断的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在接收到判断结果后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function isVisible(id?: number): Promise<boolean>;

Niva.api.window.setVisible

/**
* 设置窗口是否可见。
* @param visible 是否可见。
* @param id 需要设置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setVisible(visible: boolean, id?: number): Promise<void>;

Niva.api.window.isFocused

/**
* 判断窗口是否聚焦。
* @param id 需要判断的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在接收到判断结果后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function isFocused(id?: number): Promise<boolean>;

Niva.api.window.setFocus

/**
* 窗口设置为聚焦状态。
* @param id 需要设置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setFocus(id?: number): Promise<void>;

Niva.api.window.isResizable

/**
* 判断窗口是否可以改变大小。
* @param id 需要判断的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在接收到判断结果后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function isResizable(id?: number): Promise<boolean>;

Niva.api.window.setResizable

/**
* 设置窗口是否可以改变大小。
* @param resizable 是否可以改变大小。
* @param id 需要设置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setResizable(resizable: boolean, id?: number): Promise<void>;

Niva.api.window.isMinimizable

/**
* 判断窗口是否可以最小化。
* @param id 需要判断的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在接收到判断结果后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function isMinimizable(id?: number): Promise<boolean>;

Niva.api.window.setMinimizable

/**
* 设置窗口是否可以最小化。
* @param minimizable 是否可以最小化。
* @param id 需要设置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setMinimizable(
minimizable: boolean,
id?: number
): Promise<void>;

Niva.api.window.isMaximizable

/**
* 判断窗口是否可以最大化。
* @param id 需要判断的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在接收到判断结果后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function isMaximizable(id?: number): Promise<boolean>;

Niva.api.window.setMaximizable

/**
* 设置窗口是否可以最大化。
* @param maximizable 是否可以最大化。
* @param id 需要设置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setMaximizable(
maximizable: boolean,
id?: number
): Promise<void>;

Niva.api.window.isClosable

/**
* 判断窗口是否可以关闭。
* @param id 需要判断的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在接收到判断结果后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function isClosable(id?: number): Promise<boolean>;

Niva.api.window.setClosable

/**
* 设置窗口是否可以关闭。
* @param closable 是否可以关闭。
* @param id 需要设置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setClosable(closable: boolean, id?: number): Promise<void>;

Niva.api.window.isMinimized

/**
* 判断窗口是否最小化。
* @param id 判断的窗口 ID,如果省略则默认为当前窗口。
* @returns 一个 Promise,在接收到判断结果后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function isMinimized(id?: number): Promise<boolean>;

Niva.api.window.setMinimized

/**
* 最小化或恢复窗口。
* @param minimized 是否最小化。
* @param id 操作的窗口 ID,如果省略则默认为当前窗口。
* @returns 一个 Promise,在操作成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setMinimized(minimized: boolean, id?: number): Promise<void>;

Niva.api.window.isMaximized

/**
* 判断窗口是否最大化。
* @param id 判断的窗口 ID,如果省略则默认为当前窗口。
* @returns 一个 Promise,在接收到判断结果后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function isMaximized(id?: number): Promise<boolean>;

Niva.api.window.setMaximized

/**
* 最大化或居中窗口。
* @param maximized 是否最大化。
* @param id 操作的窗口 ID,如果省略则默认为当前窗口。
* @returns 一个 Promise,在操作成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setMaximized(maximized: boolean, id?: number): Promise<void>;

Niva.api.window.isDecorated

/**
* 判断窗口是否使用装饰。
* @param id 判断的窗口 ID,如果省略则默认为当前窗口。
* @returns 一个 Promise,在接收到判断结果后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function isDecorated(id?: number): Promise<boolean>;

Niva.api.window.setDecorated

/**
* 开启或关闭窗口装饰。
* @param decorated 是否使用窗口装饰。
* @param id 操作的窗口 ID,如果省略则默认为当前窗口。
* @returns 一个 Promise,在操作成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setDecorated(decorated: boolean, id?: number): Promise<void>;

Niva.api.window.isFullscreen

/**
* 判断窗口是否全屏。
* @param id 判断的窗口 ID,如果省略则默认为当前窗口。
* @returns 一个 Promise,在接收到判断结果后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function isFullscreen(id?: number): Promise<boolean>;

Niva.api.window.setFullscreen

/**
* 全屏或退出全屏窗口。
* @param isFullscreen 是否全屏。
* @param monitorName 需要全屏到的显示器名称,或者“null”或“undefined”表示全屏到当前显示器。如果省略,会在所有可用的显示器中搜索最接近窗口的一个,并尽可能在其上对齐。
* @param id 操作的窗口 ID,如果省略则默认为当前窗口。
* @returns 一个 Promise,在操作成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setFullscreen(
isFullscreen: boolean,
monitorName?: string | null,
id?: number
): Promise<void>;

Niva.api.window.setAlwaysOnTop

/**
* 设置窗口总在顶部。
* @param alwaysOnTop 是否总在顶部。
* @param id 需要设置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setAlwaysOnTop(
alwaysOnTop: boolean,
id?: number
): Promise<void>;

Niva.api.window.setAlwaysOnBottom

/**
* 设置窗口总在底部。
* @param alwaysOnBottom 是否总在底部。
* @param id 需要设置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setAlwaysOnBottom(
alwaysOnBottom: boolean,
id?: number
): Promise<void>;

Niva.api.window.requestUserAttention

/**
* 请求用户对该窗口进行关注。
* @param level 请求关注类型,这将决定关注的方式和级别。可选值为 "informational" (信息) 或 "critical" (严重)。默认为 "normal"(普通)。
* @param id 需要请求关注的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在发送请求成功后解析该 Promise,或者在发生错误时拒绝该 Promise。
*/
export function requestUserAttention(
level?: "normal" | "informational" | "critical",
id?: number
): Promise<void>;

Niva.api.window.setContentProtection

/**
* 设置窗口的内容保护模式。
* @param enabled 是否开启内容保护模式。
* @param id 需要设置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setContentProtection(
enabled: boolean,
id?: number
): Promise<void>;

Niva.api.window.setVisibleOnAllWorkspaces

/**
* 设置窗口是否在所有工作区域都可见。
* @param visible 是否在所有工作区域都可见。
* @param id 需要设置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setVisibleOnAllWorkspaces(
visible: boolean,
id?: number
): Promise<void>;

Niva.api.window.setCursorIcon

/**
* 设置当前指针的图标。
* @param icon 指针所使用的图标名称或 URL。
* @param id 需要设置指针图标的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setCursorIcon(icon: string, id?: number): Promise<void>;

Niva.api.window.cursorPosition

/**
* 获取鼠标光标的当前位置。
* @param id 获取光标位置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在接收到光标的位置信息后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function cursorPosition(id?: number): Promise<NivaPosition>;

Niva.api.window.setCursorPosition

/**
* 将鼠标光标移动到指定的屏幕位置。
* @param position 鼠标光标要移动到的屏幕位置。
* @param id 设置光标位置的窗口 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在设置成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setCursorPosition(
position: NivaPosition,
id?: number
): Promise<void>;

Niva.api.window.setCursorGrab

/**
* 捕获或释放鼠标光标,并允许光标离开窗口。只有在捕获时才能接收所有鼠标或触摸输入。
* @param grab 是否捕获光标。
* @param id 操作窗口的 ID,省略则默认为当前窗口。
* @returns 一个 Promise,在操作成功后解析该 Promise,或在发生错误时拒绝该 Promise。
*/
export function setCursorGrab(grab: boolean, id?: number): Promise<void>;

Niva.api.setCursorVisible

/**
* 设置窗口光标是否可见。
* @param visible 是否可见。
* @param id 区别不同窗口的可选 ID。
* @returns 如果成功则返回 Promise.resolve(),否则返回 Promise.reject()。
*/
export function setCursorVisible(visible: boolean, id?: number): Promise<void>;

Niva.api.dragWindow

/**
* 设置窗口可拖动。
* @param id 区别不同窗口的可选 ID。
* @returns 如果成功则返回 Promise.resolve(),否则返回 Promise.reject()。
*/
export function dragWindow(id?: number): Promise<void>;

Niva.api.setIgnoreCursorEvents

/**
* 设置窗口是否忽略鼠标事件。
* @param ignore 是否忽略。
* @param id 区别不同窗口的可选 ID。
* @returns 如果成功则返回 Promise.resolve(),否则返回 Promise.reject()。
*/
export function setIgnoreCursorEvents(
ignore: boolean,
id?: number
): Promise<void>;

Niva.api.theme

/**
* 获取当前窗口的主题。
* @param id 区别不同窗口的可选 ID。
* @returns 如果成功则返回一个 Promise,Promise 成功时包含当前主题("light"、"dark" 或 "system"),否则返回 Promise.reject()。
*/
export function theme(id?: number): Promise<string>;