app.dialog provides native file and message dialogs by shelling out to each
OS's built-in tools (no extra runtime dependencies):
- Windows: PowerShell +
System.Windows.Forms - macOS:
osascript - Linux:
zenityorkdialog(whichever is available)
const files = await app.dialog.openFile({
title: "Select a file",
defaultPath: app.paths.documents(),
filters: [{ name: "Images", extensions: ["png", "jpg", "jpeg"] }],
multiple: false,
});
// files: string[] | null (null if cancelled)const path = await app.dialog.saveFile({
title: "Save report",
defaultPath: "report.json",
filters: [{ name: "JSON", extensions: ["json"] }],
});
// path: string | nullconst folder = await app.dialog.openFolder({ title: "Choose a folder" });
// folder: string | nullawait app.dialog.message({
title: "Done",
message: "Export finished successfully.",
type: "info", // "info" | "warning" | "error"
});const ok = await app.dialog.confirm({
title: "Delete file?",
message: "This cannot be undone.",
});
// ok: booleanAll dialog functions are async and resolve once the user closes the dialog.