Skip to content

窗口

导入

ts
import windowm from "@eziapp-org/bridge/windowm"

定义

ts
/**
 * 窗口的背景模式
 * @property opaque 纯色背景
 * @property transparent 透明背景
 * @property mica 云母背景 #Windows11+
 * @property acrylic 亚克力背景 #Windows10+
 * @platform Windows
 */
type BackgroundMode = "opaque" | "transparent" | "mica" | "acrylic";
type HexColor = `#${string}`;
type RGBColor = `rgb(${number}, ${number}, ${number})`;
type RGBAColor = `rgba(${number}, ${number}, ${number}, ${number})`;
type NamedColor = "red" | "blue" | "green" | "yellow" | "purple" | "orange" | "black" | "white" | "gray" | "pink" | "cyan" | "magenta" | "lime" | "teal" | "navy" | "maroon" | "olive" | "silver" | "gold";
type BeforeCloseMessage = {
    content: string;
    extraButton: string;
};
type BeforeCloseCallback = (result: "close" | "extra" | "cancel") => void;
/**
 * 窗口的属性选项
 * @platform Windows
 */
export type WindowOptions = {
    /**
     * 窗口加载的资源路径
     * 可以写本地的虚拟文件和远程url
     * @default "index.html"
     * @example "index.html"
     * @example "https://www.example.com"
     * @platform Windows
     */
    src?: string;
    /**
     * 窗口的标题
     * @default "EziWindow"
     * @platform Windows
     */
    title?: string;
    /**
     * 窗口的尺寸
     * @default { width: 800, height: 600 }
     * @platform Windows
     */
    size?: {
        width: number;
        height: number;
    };
    /**
     * 窗口的位置
     * @property {x: number, y: number} 窗口的左上角坐标
     * @property "center" 窗口居中显示
     * @property "remembered" 窗口记忆上次的位置显示,初次居中
     * @default "center"
     * @platform Windows
     */
    position?: {
        x?: number;
        y?: number;
    } | "center" | "remembered";
    /**
     * 窗口的背景模式
     */
    backgroundMode?: BackgroundMode;
    /**
     * 窗口的背景颜色
     * 支持rgb、rgba、hex
     * @default "#ffffff"
     * @example backgroundColor: "rgb(255, 255, 255)"
     * @example backgroundColor: "rgba(255, 255, 255, 0.5)"
     * @example backgroundColor: "#ffffff"
     * @example backgroundColor: "#ffffffaa"
     * @platform Windows
     */
    backgroundColor?: string;
    /**
     * 窗口的主题
     * @property "light" 浅色主题
     * @property "dark" 深色主题
     * @property "system" 跟随系统
     * @default "system"
     * @platform Windows
     */
    theme?: "light" | "dark" | "system";
    /**
     * 窗口的强调色
     * 作为css变量--ezi-accent-color提供
     * @property "system" 使用系统强调色
     * @property `#${string}` 十六进制颜色值
     * @property `rgb(${number}, ${number}, ${number})` rgb颜色值
     * @property `rgba(${number}, ${number}, ${number}, ${number})` rgba颜色值
     * @property NamedColor 常用颜色名称
     * @platform Windows
     * @example "red"
     * @example "#ff0000"
     * @example "rgb(255, 0, 0)"
     * @example "rgba(255, 0, 0, 0.5)"
     * @default "system"
     */
    accentColor?: "system" | HexColor | RGBColor | RGBAColor | NamedColor;
    /**
     * 窗口的启动画面
     * @property src 启动画面的图片路径,支持png、jpg
     * @property size 启动画面的尺寸,默认图片尺寸
     * @platform Windows
     * @default {src: "ezi-logo.png", size: {width: 150, height: 150}}
     */
    splashscreen?: {
        src: string;
        size?: {
            width: number;
            height: number;
        };
    };
    /**
     * 窗口的透明度
     * 范围是0到1
     * @default 1
     * @example opacity: 0.5
     * @platform Windows
     */
    opacity?: number;
    /**
     * 窗口是否无边框
     * @default false
     * @platform Windows
     */
    borderless?: boolean;
    /**
     * 窗口是否可移动
     * @default true
     * @platform Windows
     */
    movable?: boolean;
    /**
     * 窗口是否可缩放
     * @default true
     * @platform Windows
     */
    resizable?: boolean;
    /**
     * 窗口是否可最小化
     * @default true
     * @platform Windows
     */
    minimizable?: boolean;
    /**
     * 窗口是否可最大化
     * @default true
     * @platform Windows
     */
    maximizable?: boolean;
    /**
     * 窗口是否可关闭
     * @default true
     * @platform Windows
     */
    ignoreMouseEvents?: boolean;
    /**
     * 窗口是否忽略键盘事件
     * @default false
     * @platform Windows
     */
    ignoreKeyboardEvents?: boolean;
    /**
     * 窗口是否置顶
     * @default false
     * @platform Windows
     */
    alwaysOnTop?: boolean;
    /**
     * 窗口是否不显示在任务栏
     * @default false
     * @platform Windows
     */
    skipTaskbar?: boolean;
    /**
     * 窗口是否全屏显示
     * @default false
     * @platform Windows
     */
    fullscreen?: boolean;
};
export declare class Window {
    id: number;
    title: string;
    constructor(id: number, title: string);
    isMaximizable(): Promise<boolean>;
    isMaximized(): Promise<boolean>;
    isMinimizable(): Promise<boolean>;
    isMinimized(): Promise<boolean>;
    isMovable(): Promise<boolean>;
    isClosed(): Promise<boolean>;
    isFocusable(): Promise<boolean>;
    isFocused(): Promise<boolean>;
    isVisible(): Promise<boolean>;
    isBorderless(): Promise<boolean>;
    getBackgroundMode(): Promise<BackgroundMode>;
    getSize(): Promise<{
        width: number;
        height: number;
    }>;
    getPosition(): Promise<{
        x: number;
        y: number;
    }>;
    setTitle(title: string): Promise<"success">;
    setBackgroundMode(mode: BackgroundMode): Promise<"success">;
    setSize({ width, height }: {
        width: number;
        height: number;
    }): Promise<"success">;
    setPosition({ x, y }: {
        x: number;
        y: number;
    }): Promise<"success">;
    setMaximizable(enable: boolean): Promise<"success">;
    setMinimizable(enable: boolean): Promise<"success">;
    setMovable(enable: boolean): Promise<"success">;
    setFocusable(enable: boolean): Promise<"success">;
    setBorderless(enable: boolean): Promise<"success">;
    setBeforeCloseMessage(options: BeforeCloseMessage, callback: BeforeCloseCallback): {
        cancel: () => void;
    };
    close(): Promise<"success">;
    reload(): Promise<"success">;
    focus(): Promise<"success">;
    blur(): Promise<"success">;
    minimize(): Promise<"success">;
    maximize(): Promise<"success">;
    restore(): Promise<"success">;
    hide(): Promise<"success">;
    drag(): Promise<"success">;
    show(): Promise<"success">;
}
declare class WindowManager {
    /**
     * 获取当前js环境所在的窗口
     * @returns {Promise<Window>} 一个窗口对象
     */
    getCurrentWindow(): Promise<Window>;
    /**
     * 获取所有窗口
     * @returns {Promise<Window[]>} 一个窗口对象数组
     */
    getWindowList(): Promise<Window[]>;
    /**
     * 获取指定标题的窗口
     * @param {string} title 窗口的标题
     * @returns {Promise<Window | null>} 一个窗口对象或者null
     */
    getWindowByTitle(title: string): Promise<Window | null>;
    /**
     * 获取指定id的窗口
     * @param {number} id 窗口的id
     * @returns {Promise<Window | null>} 一个窗口对象或者null
     */
    getWindowById(id: number): Promise<Window | null>;
    /**
     * 创建一个新的窗口
     * @param {WindowOptions} options 窗口的属性选项
     * @returns {Promise<Window>} 一个窗口对象
     */
    createWindow(options?: WindowOptions): Promise<Window>;
}