Files

1894 lines
95 KiB
HTML

<!--
Copyright (c) 2016-2023 Martin Donath <martin.donath@squidfunk.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
-->
<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="The Wails Project - Build beautiful cross-platform applications using Go">
<meta name="author" content="Lea Anthony">
<link rel="canonical" href="https://v3alpha.wails.io/API/application/">
<link rel="prev" href="../../whats-new/">
<link rel="next" href="../window/">
<link rel="alternate" href="./" hreflang="en">
<link rel="alternate" href="../../cy/API/application/" hreflang="cy">
<link rel="icon" href="/favicon.ico">
<meta name="generator" content="mkdocs-1.6.0, mkdocs-material-9.5.22+insiders-4.53.8">
<title>Application - alpha</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.46e89654.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../stylesheets/extra.css">
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#application" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
<aside class="md-banner">
<div class="md-banner__inner md-grid md-typeset">
<div class="announcement__translation">
Translations are autogenerated. Please report mistakes.
</div>
</div>
</aside>
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="alpha" class="md-header__button md-logo" aria-label="alpha" data-md-component="logo">
<img src="../../assets/images/wails-logo-horizontal-dark.svg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
alpha
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Application
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3Z"/></svg>
</label>
</form>
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<div class="md-header__option">
<div class="md-select">
<button class="md-header__button md-icon" aria-label="Select language">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m12.87 15.07-2.54-2.51.03-.03A17.52 17.52 0 0 0 14.07 6H17V4h-7V2H8v2H1v2h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04M18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12m-2.62 7 1.62-4.33L19.12 17h-3.24Z"/></svg>
</button>
<div class="md-select__inner">
<ul class="md-select__list">
<li class="md-select__item">
<a href="./" hreflang="en" class="md-select__link">
English
</a>
</li>
<li class="md-select__item">
<a href="../../cy/API/application/" hreflang="cy" class="md-select__link">
Cymraeg
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/wailsapp/wails" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
<div class="md-grid">
<ul class="md-tabs__list">
<li class="md-tabs__item">
<a href="../.." class="md-tabs__link">
Home
</a>
</li>
<li class="md-tabs__item">
<a href="../../getting-started/installation/" class="md-tabs__link">
Getting started
</a>
</li>
<li class="md-tabs__item">
<a href="../../getting-started/feedback/" class="md-tabs__link">
Feedback
</a>
</li>
<li class="md-tabs__item">
<a href="../../whats-new/" class="md-tabs__link">
What's New in v3?
</a>
</li>
<li class="md-tabs__item md-tabs__item--active">
<a href="./" class="md-tabs__link">
API
</a>
</li>
<li class="md-tabs__item">
<a href="../../development/introduction/" class="md-tabs__link">
Development
</a>
</li>
<li class="md-tabs__item">
<a href="../../roadmap/" class="md-tabs__link">
Roadmap
</a>
</li>
<li class="md-tabs__item">
<a href="../../changelog/" class="md-tabs__link">
Change Log
</a>
</li>
<li class="md-tabs__item">
<a href="https://github.com/sponsors/leaanthony" class="md-tabs__link">
Sponsor❤️
</a>
</li>
</ul>
</div>
</nav>
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary md-nav--lifted md-nav--integrated" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="alpha" class="md-nav__button md-logo" aria-label="alpha" data-md-component="logo">
<img src="../../assets/images/wails-logo-horizontal-dark.svg" alt="logo">
</a>
alpha
</label>
<div class="md-nav__source">
<a href="https://github.com/wailsapp/wails" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../getting-started/installation/" class="md-nav__link">
<span class="md-ellipsis">
Getting started
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item">
<a href="../../getting-started/feedback/" class="md-nav__link">
<span class="md-ellipsis">
Feedback
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../whats-new/" class="md-nav__link">
<span class="md-ellipsis">
What's New in v3?
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
<span class="md-ellipsis">
API
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
API
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Application
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Application
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#new" class="md-nav__link">
<span class="md-ellipsis">
New
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#get" class="md-nav__link">
<span class="md-ellipsis">
Get
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#capabilities" class="md-nav__link">
<span class="md-ellipsis">
Capabilities
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#getpid" class="md-nav__link">
<span class="md-ellipsis">
GetPID
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#run" class="md-nav__link">
<span class="md-ellipsis">
Run
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#quit" class="md-nav__link">
<span class="md-ellipsis">
Quit
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#isdarkmode" class="md-nav__link">
<span class="md-ellipsis">
IsDarkMode
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#hide" class="md-nav__link">
<span class="md-ellipsis">
Hide
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#show" class="md-nav__link">
<span class="md-ellipsis">
Show
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#newwebviewwindow" class="md-nav__link">
<span class="md-ellipsis">
NewWebviewWindow
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#newwebviewwindowwithoptions" class="md-nav__link">
<span class="md-ellipsis">
NewWebviewWindowWithOptions
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#onwindowcreation" class="md-nav__link">
<span class="md-ellipsis">
OnWindowCreation
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#getwindowbyname" class="md-nav__link">
<span class="md-ellipsis">
GetWindowByName
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#currentwindow" class="md-nav__link">
<span class="md-ellipsis">
CurrentWindow
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#registercontextmenu" class="md-nav__link">
<span class="md-ellipsis">
RegisterContextMenu
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#setmenu" class="md-nav__link">
<span class="md-ellipsis">
SetMenu
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#showaboutdialog" class="md-nav__link">
<span class="md-ellipsis">
ShowAboutDialog
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#info" class="md-nav__link">
<span class="md-ellipsis">
Info
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#question" class="md-nav__link">
<span class="md-ellipsis">
Question
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#warning" class="md-nav__link">
<span class="md-ellipsis">
Warning
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#error" class="md-nav__link">
<span class="md-ellipsis">
Error
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#openfile" class="md-nav__link">
<span class="md-ellipsis">
OpenFile
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#savefile" class="md-nav__link">
<span class="md-ellipsis">
SaveFile
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#opendirectory" class="md-nav__link">
<span class="md-ellipsis">
OpenDirectory
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#on" class="md-nav__link">
<span class="md-ellipsis">
On
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#registerhook" class="md-nav__link">
<span class="md-ellipsis">
RegisterHook
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#getprimaryscreen" class="md-nav__link">
<span class="md-ellipsis">
GetPrimaryScreen
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#getscreens" class="md-nav__link">
<span class="md-ellipsis">
GetScreens
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#options" class="md-nav__link">
<span class="md-ellipsis">
Options
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../window/" class="md-nav__link">
<span class="md-ellipsis">
Window
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../systray/" class="md-nav__link">
<span class="md-ellipsis">
System Tray
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../menu/" class="md-nav__link">
<span class="md-ellipsis">
Menu
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../mainthread/" class="md-nav__link">
<span class="md-ellipsis">
Main Thread
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item md-nav__item--pruned md-nav__item--nested">
<a href="../../development/introduction/" class="md-nav__link">
<span class="md-ellipsis">
Development
</span>
<span class="md-nav__icon md-icon"></span>
</a>
</li>
<li class="md-nav__item">
<a href="../../roadmap/" class="md-nav__link">
<span class="md-ellipsis">
Roadmap
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../changelog/" class="md-nav__link">
<span class="md-ellipsis">
Change Log
</span>
</a>
</li>
<li class="md-nav__item">
<a href="https://github.com/sponsors/leaanthony" class="md-nav__link">
<span class="md-ellipsis">
Sponsor❤️
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<nav class="md-path" aria-label="Navigation" >
<ol class="md-path__list">
<li class="md-path__item">
<a href="../.." class="md-path__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-path__item">
<a href="./" class="md-path__link">
<span class="md-ellipsis">
API
</span>
</a>
</li>
</ol>
</nav>
<article class="md-content__inner md-typeset">
<a href="https://github.com/wailsapp/wails/edit/v3-alpha/mkdocs-website/docs/en/API/application.md" title="Edit this page" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4v-2m10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1 2.1 2.1Z"/></svg>
</a>
<h1 id="application">Application<a class="headerlink" href="#application" title="Permanent link">#</a></h1>
<p>The application API assists in creating an application using the Wails
framework.</p>
<h3 id="new">New<a class="headerlink" href="#new" title="Permanent link">#</a></h3>
<p>API: <code>New(appOptions Options) *App</code></p>
<p><code>New(appOptions Options)</code> creates a new application using the given application
options . It applies default values for unspecified options, merges them with
the provided ones, initializes and returns an instance of the application.</p>
<p>In case of an error during initialization, the application is stopped with the
error message provided.</p>
<p>It should be noted that if a global application instance already exists, that
instance will be returned instead of creating a new one.</p>
<div class="highlight"><span class="filename">main.go</span><pre><span></span><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="kn">package</span><span class="w"> </span><span class="nx">main</span>
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a><span class="kn">import</span><span class="w"> </span><span class="s">&quot;github.com/wailsapp/wails/v3/pkg/application&quot;</span>
<a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>
<a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a><span class="kd">func</span><span class="w"> </span><span class="nx">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a><span class="hll"><span class="w"> </span><span class="nx">app</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">application</span><span class="p">.</span><span class="nx">New</span><span class="p">(</span><span class="nx">application</span><span class="p">.</span><span class="nx">Options</span><span class="p">{</span>
</span><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a><span class="hll"><span class="w"> </span><span class="nx">Name</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;WebviewWindow Demo&quot;</span><span class="p">,</span>
</span><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a><span class="hll"><span class="w"> </span><span class="c1">// Other options</span>
</span><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a><span class="hll"><span class="w"> </span><span class="p">})</span>
</span><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a>
<a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a><span class="w"> </span><span class="c1">// Rest of application</span>
<a id="__codelineno-0-12" name="__codelineno-0-12" href="#__codelineno-0-12"></a><span class="p">}</span>
</code></pre></div>
<h3 id="get">Get<a class="headerlink" href="#get" title="Permanent link">#</a></h3>
<p><code>Get()</code> returns the global application instance. It's useful when you need to
access the application from different parts of your code.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="w"> </span><span class="c1">// Get the application instance</span>
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span><span class="nx">app</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">application</span><span class="p">.</span><span class="nx">Get</span><span class="p">()</span>
</code></pre></div>
<h3 id="capabilities">Capabilities<a class="headerlink" href="#capabilities" title="Permanent link">#</a></h3>
<p>API: <code>Capabilities() capabilities.Capabilities</code></p>
<p><code>Capabilities()</code> retrieves a map of capabilities that the application currently
has. Capabilities can be about different features the operating system provides,
like webview features.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="w"> </span><span class="c1">// Get the application capabilities</span>
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w"> </span><span class="nx">capabilities</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">Capabilities</span><span class="p">()</span>
<a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">capabilities</span><span class="p">.</span><span class="nx">HasNativeDrag</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="w"> </span><span class="c1">// Do something</span>
<a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="w"> </span><span class="p">}</span>
</code></pre></div>
<h3 id="getpid">GetPID<a class="headerlink" href="#getpid" title="Permanent link">#</a></h3>
<p>API: <code>GetPID() int</code></p>
<p><code>GetPID()</code> returns the Process ID of the application.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="w"> </span><span class="nx">pid</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">GetPID</span><span class="p">()</span>
</code></pre></div>
<h3 id="run">Run<a class="headerlink" href="#run" title="Permanent link">#</a></h3>
<p>API: <code>Run() error</code></p>
<p><code>Run()</code> starts the execution of the application and its components.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="w"> </span><span class="nx">app</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">application</span><span class="p">.</span><span class="nx">New</span><span class="p">(</span><span class="nx">application</span><span class="p">.</span><span class="nx">Options</span><span class="p">{</span>
<a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="w"> </span><span class="c1">//options</span>
<a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a><span class="w"> </span><span class="p">})</span>
<a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="w"> </span><span class="c1">// Run the application</span>
<a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="w"> </span><span class="nx">err</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">application</span><span class="p">.</span><span class="nx">Run</span><span class="p">()</span>
<a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">err</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">nil</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="w"> </span><span class="c1">// Handle error</span>
<a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="w"> </span><span class="p">}</span>
</code></pre></div>
<h3 id="quit">Quit<a class="headerlink" href="#quit" title="Permanent link">#</a></h3>
<p>API: <code>Quit()</code></p>
<p><code>Quit()</code> quits the application by destroying windows and potentially other
components.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="w"> </span><span class="c1">// Quit the application</span>
<a id="__codelineno-5-2" name="__codelineno-5-2" href="#__codelineno-5-2"></a><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">Quit</span><span class="p">()</span>
</code></pre></div>
<h3 id="isdarkmode">IsDarkMode<a class="headerlink" href="#isdarkmode" title="Permanent link">#</a></h3>
<p>API: <code>IsDarkMode() bool</code></p>
<p><code>IsDarkMode()</code> checks if the application is running in dark mode. It returns a
boolean indicating whether dark mode is enabled.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="w"> </span><span class="c1">// Check if dark mode is enabled</span>
<a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">IsDarkMode</span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="w"> </span><span class="c1">// Do something</span>
<a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="w"> </span><span class="p">}</span>
</code></pre></div>
<h3 id="hide">Hide<a class="headerlink" href="#hide" title="Permanent link">#</a></h3>
<p>API: <code>Hide()</code></p>
<p><code>Hide()</code> hides the application window.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="w"> </span><span class="c1">// Hide the application window</span>
<a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">Hide</span><span class="p">()</span>
</code></pre></div>
<h3 id="show">Show<a class="headerlink" href="#show" title="Permanent link">#</a></h3>
<p>API: <code>Show()</code></p>
<p><code>Show()</code> shows the application window.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="w"> </span><span class="c1">// Show the application window</span>
<a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">Show</span><span class="p">()</span>
</code></pre></div>
<h3 id="newwebviewwindow">NewWebviewWindow<a class="headerlink" href="#newwebviewwindow" title="Permanent link">#</a></h3>
<p>API: <code>NewWebviewWindow() *WebviewWindow</code></p>
<p><code>NewWebviewWindow()</code> creates a new Webview window with default options, and
returns it.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="w"> </span><span class="c1">// Create a new webview window</span>
<a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="w"> </span><span class="nx">window</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">NewWebviewWindow</span><span class="p">()</span>
</code></pre></div>
<h3 id="newwebviewwindowwithoptions">NewWebviewWindowWithOptions<a class="headerlink" href="#newwebviewwindowwithoptions" title="Permanent link">#</a></h3>
<p>API:
<code>NewWebviewWindowWithOptions(windowOptions WebviewWindowOptions) *WebviewWindow</code></p>
<p><code>NewWebviewWindowWithOptions()</code> creates a new webview window with custom
options. The newly created window is added to a map of windows managed by the
application.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="w"> </span><span class="c1">// Create a new webview window with custom options</span>
<a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="w"> </span><span class="nx">window</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">NewWebviewWindowWithOptions</span><span class="p">(</span><span class="nx">WebviewWindowOptions</span><span class="p">{</span>
<a id="__codelineno-10-3" name="__codelineno-10-3" href="#__codelineno-10-3"></a><span class="w"> </span><span class="nx">Name</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;Main&quot;</span><span class="p">,</span>
<a id="__codelineno-10-4" name="__codelineno-10-4" href="#__codelineno-10-4"></a><span class="w"> </span><span class="nx">Title</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;My Window&quot;</span><span class="p">,</span>
<a id="__codelineno-10-5" name="__codelineno-10-5" href="#__codelineno-10-5"></a><span class="w"> </span><span class="nx">Width</span><span class="p">:</span><span class="w"> </span><span class="mi">800</span><span class="p">,</span>
<a id="__codelineno-10-6" name="__codelineno-10-6" href="#__codelineno-10-6"></a><span class="w"> </span><span class="nx">Height</span><span class="p">:</span><span class="w"> </span><span class="mi">600</span><span class="p">,</span>
<a id="__codelineno-10-7" name="__codelineno-10-7" href="#__codelineno-10-7"></a><span class="w"> </span><span class="p">})</span>
</code></pre></div>
<h3 id="onwindowcreation">OnWindowCreation<a class="headerlink" href="#onwindowcreation" title="Permanent link">#</a></h3>
<p>API: <code>OnWindowCreation(callback func(window *WebviewWindow))</code></p>
<p><code>OnWindowCreation()</code> registers a callback function to be called when a window is
created.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="w"> </span><span class="c1">// Register a callback to be called when a window is created</span>
<a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">OnWindowCreation</span><span class="p">(</span><span class="kd">func</span><span class="p">(</span><span class="nx">window</span><span class="w"> </span><span class="o">*</span><span class="nx">WebviewWindow</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-11-3" name="__codelineno-11-3" href="#__codelineno-11-3"></a><span class="w"> </span><span class="c1">// Do something</span>
<a id="__codelineno-11-4" name="__codelineno-11-4" href="#__codelineno-11-4"></a><span class="w"> </span><span class="p">})</span>
</code></pre></div>
<h3 id="getwindowbyname">GetWindowByName<a class="headerlink" href="#getwindowbyname" title="Permanent link">#</a></h3>
<p>API: <code>GetWindowByName(name string) *WebviewWindow</code></p>
<p><code>GetWindowByName()</code> fetches and returns a window with a specific name.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="w"> </span><span class="c1">// Get a window by name</span>
<a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="w"> </span><span class="nx">window</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">GetWindowByName</span><span class="p">(</span><span class="s">&quot;Main&quot;</span><span class="p">)</span>
</code></pre></div>
<h3 id="currentwindow">CurrentWindow<a class="headerlink" href="#currentwindow" title="Permanent link">#</a></h3>
<p>API: <code>CurrentWindow() *WebviewWindow</code></p>
<p><code>CurrentWindow()</code> fetches and returns a pointer to the currently active window
in the application. If there is no window, it returns nil.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="w"> </span><span class="c1">// Get the current window</span>
<a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a><span class="w"> </span><span class="nx">window</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">CurrentWindow</span><span class="p">()</span>
</code></pre></div>
<h3 id="registercontextmenu">RegisterContextMenu<a class="headerlink" href="#registercontextmenu" title="Permanent link">#</a></h3>
<p>API: <code>RegisterContextMenu(name string, menu *Menu)</code></p>
<p><code>RegisterContextMenu()</code> registers a context menu with a given name. This menu
can be used later in the application.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="w"> </span><span class="c1">// Create a new menu</span>
<a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="w"> </span><span class="nx">ctxmenu</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">NewMenu</span><span class="p">()</span>
<a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a>
<a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a><span class="w"> </span><span class="c1">// Register the menu as a context menu</span>
<a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">RegisterContextMenu</span><span class="p">(</span><span class="s">&quot;MyContextMenu&quot;</span><span class="p">,</span><span class="w"> </span><span class="nx">ctxmenu</span><span class="p">)</span>
</code></pre></div>
<h3 id="setmenu">SetMenu<a class="headerlink" href="#setmenu" title="Permanent link">#</a></h3>
<p>API: <code>SetMenu(menu *Menu)</code></p>
<p><code>SetMenu()</code> sets the menu for the application. On Mac, this will be the global
menu. For Windows and Linux, this will be the default menu for any new window
created.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="w"> </span><span class="c1">// Create a new menu</span>
<a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="w"> </span><span class="nx">menu</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">NewMenu</span><span class="p">()</span>
<a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a>
<a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a><span class="w"> </span><span class="c1">// Set the menu for the application</span>
<a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">SetMenu</span><span class="p">(</span><span class="nx">menu</span><span class="p">)</span>
</code></pre></div>
<h3 id="showaboutdialog">ShowAboutDialog<a class="headerlink" href="#showaboutdialog" title="Permanent link">#</a></h3>
<p>API: <code>ShowAboutDialog()</code></p>
<p><code>ShowAboutDialog()</code> shows an "About" dialog box. It can show the application's
name, description and icon.</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="w"> </span><span class="c1">// Show the about dialog</span>
<a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="w"> </span><span class="nx">app</span><span class="p">.</span><span class="nx">ShowAboutDialog</span><span class="p">()</span>
</code></pre></div>
<h3 id="info">Info<a class="headerlink" href="#info" title="Permanent link">#</a></h3>
<p>API: <code>InfoDialog()</code></p>
<p><code>InfoDialog()</code> creates and returns a new instance of <code>MessageDialog</code> with an
<code>InfoDialogType</code>. This dialog is typically used to display informational
messages to the user.</p>
<h3 id="question">Question<a class="headerlink" href="#question" title="Permanent link">#</a></h3>
<p>API: <code>QuestionDialog()</code></p>
<p><code>QuestionDialog()</code> creates and returns a new instance of <code>MessageDialog</code> with a
<code>QuestionDialogType</code>. This dialog is often used to ask a question to the user
and expect a response.</p>
<h3 id="warning">Warning<a class="headerlink" href="#warning" title="Permanent link">#</a></h3>
<p>API: <code>WarningDialog()</code></p>
<p><code>WarningDialog()</code> creates and returns a new instance of <code>MessageDialog</code> with a
<code>WarningDialogType</code>. As the name suggests, this dialog is primarily used to
display warning messages to the user.</p>
<h3 id="error">Error<a class="headerlink" href="#error" title="Permanent link">#</a></h3>
<p>API: <code>ErrorDialog()</code></p>
<p><code>ErrorDialog()</code> creates and returns a new instance of <code>MessageDialog</code> with an
<code>ErrorDialogType</code>. This dialog is designed to be used when you need to display
an error message to the user.</p>
<h3 id="openfile">OpenFile<a class="headerlink" href="#openfile" title="Permanent link">#</a></h3>
<p>API: <code>OpenFileDialog()</code></p>
<p><code>OpenFileDialog()</code> creates and returns a new <code>OpenFileDialogStruct</code>. This dialog
prompts the user to select one or more files from their file system.</p>
<h3 id="savefile">SaveFile<a class="headerlink" href="#savefile" title="Permanent link">#</a></h3>
<p>API: <code>SaveFileDialog()</code></p>
<p><code>SaveFileDialog()</code> creates and returns a new <code>SaveFileDialogStruct</code>. This dialog
prompts the user to choose a location on their file system where a file should
be saved.</p>
<h3 id="opendirectory">OpenDirectory<a class="headerlink" href="#opendirectory" title="Permanent link">#</a></h3>
<p>API: <code>OpenDirectoryDialog()</code></p>
<p><code>OpenDirectoryDialog()</code> creates and returns a new instance of <code>MessageDialog</code>
with an <code>OpenDirectoryDialogType</code>. This dialog enables the user to choose a
directory from their file system.</p>
<h3 id="on">On<a class="headerlink" href="#on" title="Permanent link">#</a></h3>
<p>API:
<code>On(eventType events.ApplicationEventType, callback func(event *Event)) func()</code></p>
<p><code>On()</code> registers an event listener for specific application events. The callback
function provided will be triggered when the corresponding event occurs. The
function returns a function that can be called to remove the listener.</p>
<h3 id="registerhook">RegisterHook<a class="headerlink" href="#registerhook" title="Permanent link">#</a></h3>
<p>API:
<code>RegisterHook(eventType events.ApplicationEventType, callback func(event *Event)) func()</code></p>
<p><code>RegisterHook()</code> registers a callback to be run as a hook during specific
events. These hooks are run before listeners attached with <code>On()</code>. The function
returns a function that can be called to remove the hook.</p>
<h3 id="getprimaryscreen">GetPrimaryScreen<a class="headerlink" href="#getprimaryscreen" title="Permanent link">#</a></h3>
<p>API: <code>GetPrimaryScreen() (*Screen, error)</code></p>
<p><code>GetPrimaryScreen()</code> returns the primary screen of the system.</p>
<h3 id="getscreens">GetScreens<a class="headerlink" href="#getscreens" title="Permanent link">#</a></h3>
<p>API: <code>GetScreens() ([]*Screen, error)</code></p>
<p><code>GetScreens()</code> returns information about all screens attached to the system.</p>
<p>This is a brief summary of the exported methods in the provided <code>App</code> struct. Do
note that for more detailed functionality or considerations, refer to the actual
Go code or further internal documentation.</p>
<h2 id="options">Options<a class="headerlink" href="#options" title="Permanent link">#</a></h2>
<div class="highlight"><span class="filename">pkg/application/application_options.go</span><pre><span></span><code><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="kn">package</span><span class="w"> </span><span class="nx">application</span>
<a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a>
<a id="__codelineno-17-3" name="__codelineno-17-3" href="#__codelineno-17-3"></a><span class="kn">import</span><span class="w"> </span><span class="p">(</span>
<a id="__codelineno-17-4" name="__codelineno-17-4" href="#__codelineno-17-4"></a><span class="w"> </span><span class="s">&quot;io/fs&quot;</span>
<a id="__codelineno-17-5" name="__codelineno-17-5" href="#__codelineno-17-5"></a><span class="w"> </span><span class="s">&quot;log/slog&quot;</span>
<a id="__codelineno-17-6" name="__codelineno-17-6" href="#__codelineno-17-6"></a><span class="w"> </span><span class="s">&quot;net/http&quot;</span>
<a id="__codelineno-17-7" name="__codelineno-17-7" href="#__codelineno-17-7"></a>
<a id="__codelineno-17-8" name="__codelineno-17-8" href="#__codelineno-17-8"></a><span class="w"> </span><span class="s">&quot;github.com/wailsapp/wails/v3/internal/assetserver&quot;</span>
<a id="__codelineno-17-9" name="__codelineno-17-9" href="#__codelineno-17-9"></a><span class="p">)</span>
<a id="__codelineno-17-10" name="__codelineno-17-10" href="#__codelineno-17-10"></a>
<a id="__codelineno-17-11" name="__codelineno-17-11" href="#__codelineno-17-11"></a><span class="c1">// Options contains the options for the application</span>
<a id="__codelineno-17-12" name="__codelineno-17-12" href="#__codelineno-17-12"></a><span class="kd">type</span><span class="w"> </span><span class="nx">Options</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-17-13" name="__codelineno-17-13" href="#__codelineno-17-13"></a><span class="w"> </span><span class="c1">// Name is the name of the application (used in the default about box)</span>
<a id="__codelineno-17-14" name="__codelineno-17-14" href="#__codelineno-17-14"></a><span class="w"> </span><span class="nx">Name</span><span class="w"> </span><span class="kt">string</span>
<a id="__codelineno-17-15" name="__codelineno-17-15" href="#__codelineno-17-15"></a>
<a id="__codelineno-17-16" name="__codelineno-17-16" href="#__codelineno-17-16"></a><span class="w"> </span><span class="c1">// Description is the description of the application (used in the default about box)</span>
<a id="__codelineno-17-17" name="__codelineno-17-17" href="#__codelineno-17-17"></a><span class="w"> </span><span class="nx">Description</span><span class="w"> </span><span class="kt">string</span>
<a id="__codelineno-17-18" name="__codelineno-17-18" href="#__codelineno-17-18"></a>
<a id="__codelineno-17-19" name="__codelineno-17-19" href="#__codelineno-17-19"></a><span class="w"> </span><span class="c1">// Icon is the icon of the application (used in the default about box)</span>
<a id="__codelineno-17-20" name="__codelineno-17-20" href="#__codelineno-17-20"></a><span class="w"> </span><span class="nx">Icon</span><span class="w"> </span><span class="p">[]</span><span class="kt">byte</span>
<a id="__codelineno-17-21" name="__codelineno-17-21" href="#__codelineno-17-21"></a>
<a id="__codelineno-17-22" name="__codelineno-17-22" href="#__codelineno-17-22"></a><span class="w"> </span><span class="c1">// Mac is the Mac specific configuration for Mac builds</span>
<a id="__codelineno-17-23" name="__codelineno-17-23" href="#__codelineno-17-23"></a><span class="w"> </span><span class="nx">Mac</span><span class="w"> </span><span class="nx">MacOptions</span>
<a id="__codelineno-17-24" name="__codelineno-17-24" href="#__codelineno-17-24"></a>
<a id="__codelineno-17-25" name="__codelineno-17-25" href="#__codelineno-17-25"></a><span class="w"> </span><span class="c1">// Windows is the Windows specific configuration for Windows builds</span>
<a id="__codelineno-17-26" name="__codelineno-17-26" href="#__codelineno-17-26"></a><span class="w"> </span><span class="nx">Windows</span><span class="w"> </span><span class="nx">WindowsOptions</span>
<a id="__codelineno-17-27" name="__codelineno-17-27" href="#__codelineno-17-27"></a>
<a id="__codelineno-17-28" name="__codelineno-17-28" href="#__codelineno-17-28"></a><span class="w"> </span><span class="c1">// Linux is the Linux specific configuration for Linux builds</span>
<a id="__codelineno-17-29" name="__codelineno-17-29" href="#__codelineno-17-29"></a><span class="w"> </span><span class="nx">Linux</span><span class="w"> </span><span class="nx">LinuxOptions</span>
<a id="__codelineno-17-30" name="__codelineno-17-30" href="#__codelineno-17-30"></a>
<a id="__codelineno-17-31" name="__codelineno-17-31" href="#__codelineno-17-31"></a><span class="w"> </span><span class="c1">// Bind allows you to bind Go methods to the frontend.</span>
<a id="__codelineno-17-32" name="__codelineno-17-32" href="#__codelineno-17-32"></a><span class="w"> </span><span class="nx">Bind</span><span class="w"> </span><span class="p">[]</span><span class="kt">any</span>
<a id="__codelineno-17-33" name="__codelineno-17-33" href="#__codelineno-17-33"></a>
<a id="__codelineno-17-34" name="__codelineno-17-34" href="#__codelineno-17-34"></a><span class="w"> </span><span class="c1">// BindAliases allows you to specify alias IDs for your bound methods.</span>
<a id="__codelineno-17-35" name="__codelineno-17-35" href="#__codelineno-17-35"></a><span class="w"> </span><span class="c1">// Example: `BindAliases: map[uint32]uint32{1: 1411160069}` states that alias ID 1 maps to the Go method with ID 1411160069.</span>
<a id="__codelineno-17-36" name="__codelineno-17-36" href="#__codelineno-17-36"></a><span class="w"> </span><span class="nx">BindAliases</span><span class="w"> </span><span class="kd">map</span><span class="p">[</span><span class="kt">uint32</span><span class="p">]</span><span class="kt">uint32</span>
<a id="__codelineno-17-37" name="__codelineno-17-37" href="#__codelineno-17-37"></a>
<a id="__codelineno-17-38" name="__codelineno-17-38" href="#__codelineno-17-38"></a><span class="w"> </span><span class="c1">// Logger i a slog.Logger instance used for logging Wails system messages (not application messages).</span>
<a id="__codelineno-17-39" name="__codelineno-17-39" href="#__codelineno-17-39"></a><span class="w"> </span><span class="c1">// If not defined, a default logger is used.</span>
<a id="__codelineno-17-40" name="__codelineno-17-40" href="#__codelineno-17-40"></a><span class="w"> </span><span class="nx">Logger</span><span class="w"> </span><span class="o">*</span><span class="nx">slog</span><span class="p">.</span><span class="nx">Logger</span>
<a id="__codelineno-17-41" name="__codelineno-17-41" href="#__codelineno-17-41"></a>
<a id="__codelineno-17-42" name="__codelineno-17-42" href="#__codelineno-17-42"></a><span class="w"> </span><span class="c1">// LogLevel defines the log level of the Wails system logger.</span>
<a id="__codelineno-17-43" name="__codelineno-17-43" href="#__codelineno-17-43"></a><span class="w"> </span><span class="nx">LogLevel</span><span class="w"> </span><span class="nx">slog</span><span class="p">.</span><span class="nx">Level</span>
<a id="__codelineno-17-44" name="__codelineno-17-44" href="#__codelineno-17-44"></a>
<a id="__codelineno-17-45" name="__codelineno-17-45" href="#__codelineno-17-45"></a><span class="w"> </span><span class="c1">// Assets are the application assets to be used.</span>
<a id="__codelineno-17-46" name="__codelineno-17-46" href="#__codelineno-17-46"></a><span class="w"> </span><span class="nx">Assets</span><span class="w"> </span><span class="nx">AssetOptions</span>
<a id="__codelineno-17-47" name="__codelineno-17-47" href="#__codelineno-17-47"></a>
<a id="__codelineno-17-48" name="__codelineno-17-48" href="#__codelineno-17-48"></a><span class="w"> </span><span class="c1">// Plugins is a map of plugins used by the application</span>
<a id="__codelineno-17-49" name="__codelineno-17-49" href="#__codelineno-17-49"></a><span class="w"> </span><span class="nx">Plugins</span><span class="w"> </span><span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="nx">Plugin</span>
<a id="__codelineno-17-50" name="__codelineno-17-50" href="#__codelineno-17-50"></a>
<a id="__codelineno-17-51" name="__codelineno-17-51" href="#__codelineno-17-51"></a><span class="w"> </span><span class="c1">// Flags are key value pairs that are available to the frontend.</span>
<a id="__codelineno-17-52" name="__codelineno-17-52" href="#__codelineno-17-52"></a><span class="w"> </span><span class="c1">// This is also used by Wails to provide information to the frontend.</span>
<a id="__codelineno-17-53" name="__codelineno-17-53" href="#__codelineno-17-53"></a><span class="w"> </span><span class="nx">Flags</span><span class="w"> </span><span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kt">any</span>
<a id="__codelineno-17-54" name="__codelineno-17-54" href="#__codelineno-17-54"></a>
<a id="__codelineno-17-55" name="__codelineno-17-55" href="#__codelineno-17-55"></a><span class="w"> </span><span class="c1">// PanicHandler is called when a panic occurs</span>
<a id="__codelineno-17-56" name="__codelineno-17-56" href="#__codelineno-17-56"></a><span class="w"> </span><span class="nx">PanicHandler</span><span class="w"> </span><span class="kd">func</span><span class="p">(</span><span class="kt">any</span><span class="p">)</span>
<a id="__codelineno-17-57" name="__codelineno-17-57" href="#__codelineno-17-57"></a>
<a id="__codelineno-17-58" name="__codelineno-17-58" href="#__codelineno-17-58"></a><span class="w"> </span><span class="c1">// DisableDefaultSignalHandler disables the default signal handler</span>
<a id="__codelineno-17-59" name="__codelineno-17-59" href="#__codelineno-17-59"></a><span class="w"> </span><span class="nx">DisableDefaultSignalHandler</span><span class="w"> </span><span class="kt">bool</span>
<a id="__codelineno-17-60" name="__codelineno-17-60" href="#__codelineno-17-60"></a>
<a id="__codelineno-17-61" name="__codelineno-17-61" href="#__codelineno-17-61"></a><span class="w"> </span><span class="c1">// KeyBindings is a map of key bindings to functions</span>
<a id="__codelineno-17-62" name="__codelineno-17-62" href="#__codelineno-17-62"></a><span class="w"> </span><span class="nx">KeyBindings</span><span class="w"> </span><span class="kd">map</span><span class="p">[</span><span class="kt">string</span><span class="p">]</span><span class="kd">func</span><span class="p">(</span><span class="nx">window</span><span class="w"> </span><span class="o">*</span><span class="nx">WebviewWindow</span><span class="p">)</span>
<a id="__codelineno-17-63" name="__codelineno-17-63" href="#__codelineno-17-63"></a>
<a id="__codelineno-17-64" name="__codelineno-17-64" href="#__codelineno-17-64"></a><span class="w"> </span><span class="c1">// OnShutdown is called when the application is about to terminate.</span>
<a id="__codelineno-17-65" name="__codelineno-17-65" href="#__codelineno-17-65"></a><span class="w"> </span><span class="c1">// This is useful for cleanup tasks.</span>
<a id="__codelineno-17-66" name="__codelineno-17-66" href="#__codelineno-17-66"></a><span class="w"> </span><span class="c1">// The shutdown process blocks until this function returns</span>
<a id="__codelineno-17-67" name="__codelineno-17-67" href="#__codelineno-17-67"></a><span class="w"> </span><span class="nx">OnShutdown</span><span class="w"> </span><span class="kd">func</span><span class="p">()</span>
<a id="__codelineno-17-68" name="__codelineno-17-68" href="#__codelineno-17-68"></a>
<a id="__codelineno-17-69" name="__codelineno-17-69" href="#__codelineno-17-69"></a><span class="w"> </span><span class="c1">// ShouldQuit is a function that is called when the user tries to quit the application.</span>
<a id="__codelineno-17-70" name="__codelineno-17-70" href="#__codelineno-17-70"></a><span class="w"> </span><span class="c1">// If the function returns true, the application will quit.</span>
<a id="__codelineno-17-71" name="__codelineno-17-71" href="#__codelineno-17-71"></a><span class="w"> </span><span class="c1">// If the function returns false, the application will not quit.</span>
<a id="__codelineno-17-72" name="__codelineno-17-72" href="#__codelineno-17-72"></a><span class="w"> </span><span class="nx">ShouldQuit</span><span class="w"> </span><span class="kd">func</span><span class="p">()</span><span class="w"> </span><span class="kt">bool</span>
<a id="__codelineno-17-73" name="__codelineno-17-73" href="#__codelineno-17-73"></a><span class="p">}</span>
<a id="__codelineno-17-74" name="__codelineno-17-74" href="#__codelineno-17-74"></a>
<a id="__codelineno-17-75" name="__codelineno-17-75" href="#__codelineno-17-75"></a><span class="c1">// AssetOptions defines the configuration of the AssetServer.</span>
<a id="__codelineno-17-76" name="__codelineno-17-76" href="#__codelineno-17-76"></a><span class="kd">type</span><span class="w"> </span><span class="nx">AssetOptions</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-17-77" name="__codelineno-17-77" href="#__codelineno-17-77"></a><span class="w"> </span><span class="c1">// Handler which serves all the content to the WebView.</span>
<a id="__codelineno-17-78" name="__codelineno-17-78" href="#__codelineno-17-78"></a><span class="w"> </span><span class="nx">Handler</span><span class="w"> </span><span class="nx">http</span><span class="p">.</span><span class="nx">Handler</span>
<a id="__codelineno-17-79" name="__codelineno-17-79" href="#__codelineno-17-79"></a>
<a id="__codelineno-17-80" name="__codelineno-17-80" href="#__codelineno-17-80"></a><span class="w"> </span><span class="c1">// Middleware is a HTTP Middleware which allows to hook into the AssetServer request chain. It allows to skip the default</span>
<a id="__codelineno-17-81" name="__codelineno-17-81" href="#__codelineno-17-81"></a><span class="w"> </span><span class="c1">// request handler dynamically, e.g. implement specialized Routing etc.</span>
<a id="__codelineno-17-82" name="__codelineno-17-82" href="#__codelineno-17-82"></a><span class="w"> </span><span class="c1">// The Middleware is called to build a new `http.Handler` used by the AssetSever and it also receives the default</span>
<a id="__codelineno-17-83" name="__codelineno-17-83" href="#__codelineno-17-83"></a><span class="w"> </span><span class="c1">// handler used by the AssetServer as an argument.</span>
<a id="__codelineno-17-84" name="__codelineno-17-84" href="#__codelineno-17-84"></a><span class="w"> </span><span class="c1">//</span>
<a id="__codelineno-17-85" name="__codelineno-17-85" href="#__codelineno-17-85"></a><span class="w"> </span><span class="c1">// This middleware injects itself before any of Wails internal middlewares.</span>
<a id="__codelineno-17-86" name="__codelineno-17-86" href="#__codelineno-17-86"></a><span class="w"> </span><span class="c1">//</span>
<a id="__codelineno-17-87" name="__codelineno-17-87" href="#__codelineno-17-87"></a><span class="w"> </span><span class="c1">// If not defined, the default AssetServer request chain is executed.</span>
<a id="__codelineno-17-88" name="__codelineno-17-88" href="#__codelineno-17-88"></a><span class="w"> </span><span class="c1">//</span>
<a id="__codelineno-17-89" name="__codelineno-17-89" href="#__codelineno-17-89"></a><span class="w"> </span><span class="c1">// Multiple Middlewares can be chained together with:</span>
<a id="__codelineno-17-90" name="__codelineno-17-90" href="#__codelineno-17-90"></a><span class="w"> </span><span class="c1">// ChainMiddleware(middleware ...Middleware) Middleware</span>
<a id="__codelineno-17-91" name="__codelineno-17-91" href="#__codelineno-17-91"></a><span class="w"> </span><span class="nx">Middleware</span><span class="w"> </span><span class="nx">Middleware</span>
<a id="__codelineno-17-92" name="__codelineno-17-92" href="#__codelineno-17-92"></a>
<a id="__codelineno-17-93" name="__codelineno-17-93" href="#__codelineno-17-93"></a><span class="w"> </span><span class="c1">// DisableLogging disables logging of the AssetServer. By default, the AssetServer logs every request.</span>
<a id="__codelineno-17-94" name="__codelineno-17-94" href="#__codelineno-17-94"></a><span class="w"> </span><span class="nx">DisableLogging</span><span class="w"> </span><span class="kt">bool</span>
<a id="__codelineno-17-95" name="__codelineno-17-95" href="#__codelineno-17-95"></a><span class="p">}</span>
<a id="__codelineno-17-96" name="__codelineno-17-96" href="#__codelineno-17-96"></a>
<a id="__codelineno-17-97" name="__codelineno-17-97" href="#__codelineno-17-97"></a><span class="c1">// Middleware defines HTTP middleware that can be applied to the AssetServer.</span>
<a id="__codelineno-17-98" name="__codelineno-17-98" href="#__codelineno-17-98"></a><span class="c1">// The handler passed as next is the next handler in the chain. One can decide to call the next handler</span>
<a id="__codelineno-17-99" name="__codelineno-17-99" href="#__codelineno-17-99"></a><span class="c1">// or implement a specialized handling.</span>
<a id="__codelineno-17-100" name="__codelineno-17-100" href="#__codelineno-17-100"></a><span class="kd">type</span><span class="w"> </span><span class="nx">Middleware</span><span class="w"> </span><span class="kd">func</span><span class="p">(</span><span class="nx">next</span><span class="w"> </span><span class="nx">http</span><span class="p">.</span><span class="nx">Handler</span><span class="p">)</span><span class="w"> </span><span class="nx">http</span><span class="p">.</span><span class="nx">Handler</span>
<a id="__codelineno-17-101" name="__codelineno-17-101" href="#__codelineno-17-101"></a>
<a id="__codelineno-17-102" name="__codelineno-17-102" href="#__codelineno-17-102"></a><span class="c1">// ChainMiddleware allows chaining multiple middlewares to one middleware.</span>
<a id="__codelineno-17-103" name="__codelineno-17-103" href="#__codelineno-17-103"></a><span class="kd">func</span><span class="w"> </span><span class="nx">ChainMiddleware</span><span class="p">(</span><span class="nx">middleware</span><span class="w"> </span><span class="o">...</span><span class="nx">Middleware</span><span class="p">)</span><span class="w"> </span><span class="nx">Middleware</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-17-104" name="__codelineno-17-104" href="#__codelineno-17-104"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="kd">func</span><span class="p">(</span><span class="nx">h</span><span class="w"> </span><span class="nx">http</span><span class="p">.</span><span class="nx">Handler</span><span class="p">)</span><span class="w"> </span><span class="nx">http</span><span class="p">.</span><span class="nx">Handler</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-17-105" name="__codelineno-17-105" href="#__codelineno-17-105"></a><span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nb">len</span><span class="p">(</span><span class="nx">middleware</span><span class="p">)</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="w"> </span><span class="o">&gt;=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="nx">i</span><span class="o">--</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-17-106" name="__codelineno-17-106" href="#__codelineno-17-106"></a><span class="w"> </span><span class="nx">h</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="nx">middleware</span><span class="p">[</span><span class="nx">i</span><span class="p">](</span><span class="nx">h</span><span class="p">)</span>
<a id="__codelineno-17-107" name="__codelineno-17-107" href="#__codelineno-17-107"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-17-108" name="__codelineno-17-108" href="#__codelineno-17-108"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">h</span>
<a id="__codelineno-17-109" name="__codelineno-17-109" href="#__codelineno-17-109"></a><span class="w"> </span><span class="p">}</span>
<a id="__codelineno-17-110" name="__codelineno-17-110" href="#__codelineno-17-110"></a><span class="p">}</span>
<a id="__codelineno-17-111" name="__codelineno-17-111" href="#__codelineno-17-111"></a>
<a id="__codelineno-17-112" name="__codelineno-17-112" href="#__codelineno-17-112"></a><span class="c1">// AssetFileServerFS returns a http handler which serves the assets from the fs.FS.</span>
<a id="__codelineno-17-113" name="__codelineno-17-113" href="#__codelineno-17-113"></a><span class="c1">// If an external devserver has been provided &#39;FRONTEND_DEVSERVER_URL&#39; the files are being served</span>
<a id="__codelineno-17-114" name="__codelineno-17-114" href="#__codelineno-17-114"></a><span class="c1">// from the external server, ignoring the `assets`.</span>
<a id="__codelineno-17-115" name="__codelineno-17-115" href="#__codelineno-17-115"></a><span class="kd">func</span><span class="w"> </span><span class="nx">AssetFileServerFS</span><span class="p">(</span><span class="nx">assets</span><span class="w"> </span><span class="nx">fs</span><span class="p">.</span><span class="nx">FS</span><span class="p">)</span><span class="w"> </span><span class="nx">http</span><span class="p">.</span><span class="nx">Handler</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-17-116" name="__codelineno-17-116" href="#__codelineno-17-116"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">assetserver</span><span class="p">.</span><span class="nx">NewAssetFileServer</span><span class="p">(</span><span class="nx">assets</span><span class="p">)</span>
<a id="__codelineno-17-117" name="__codelineno-17-117" href="#__codelineno-17-117"></a><span class="p">}</span>
<a id="__codelineno-17-118" name="__codelineno-17-118" href="#__codelineno-17-118"></a>
<a id="__codelineno-17-119" name="__codelineno-17-119" href="#__codelineno-17-119"></a><span class="c1">// BundledAssetFileServer returns a http handler which serves the assets from the fs.FS.</span>
<a id="__codelineno-17-120" name="__codelineno-17-120" href="#__codelineno-17-120"></a><span class="c1">// If an external devserver has been provided &#39;FRONTEND_DEVSERVER_URL&#39; the files are being served</span>
<a id="__codelineno-17-121" name="__codelineno-17-121" href="#__codelineno-17-121"></a><span class="c1">// from the external server, ignoring the `assets`.</span>
<a id="__codelineno-17-122" name="__codelineno-17-122" href="#__codelineno-17-122"></a><span class="c1">// It also serves the compiled runtime.js file at `/wails/runtime.js`.</span>
<a id="__codelineno-17-123" name="__codelineno-17-123" href="#__codelineno-17-123"></a><span class="c1">// It will provide the production runtime.js file from the embedded assets if the `production` tag is used.</span>
<a id="__codelineno-17-124" name="__codelineno-17-124" href="#__codelineno-17-124"></a><span class="kd">func</span><span class="w"> </span><span class="nx">BundledAssetFileServer</span><span class="p">(</span><span class="nx">assets</span><span class="w"> </span><span class="nx">fs</span><span class="p">.</span><span class="nx">FS</span><span class="p">)</span><span class="w"> </span><span class="nx">http</span><span class="p">.</span><span class="nx">Handler</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-17-125" name="__codelineno-17-125" href="#__codelineno-17-125"></a><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nx">assetserver</span><span class="p">.</span><span class="nx">NewBundledAssetFileServer</span><span class="p">(</span><span class="nx">assets</span><span class="p">)</span>
<a id="__codelineno-17-126" name="__codelineno-17-126" href="#__codelineno-17-126"></a><span class="p">}</span>
<a id="__codelineno-17-127" name="__codelineno-17-127" href="#__codelineno-17-127"></a>
<a id="__codelineno-17-128" name="__codelineno-17-128" href="#__codelineno-17-128"></a><span class="cm">/******** Mac Options ********/</span>
<a id="__codelineno-17-129" name="__codelineno-17-129" href="#__codelineno-17-129"></a>
<a id="__codelineno-17-130" name="__codelineno-17-130" href="#__codelineno-17-130"></a><span class="c1">// ActivationPolicy is the activation policy for the application.</span>
<a id="__codelineno-17-131" name="__codelineno-17-131" href="#__codelineno-17-131"></a><span class="kd">type</span><span class="w"> </span><span class="nx">ActivationPolicy</span><span class="w"> </span><span class="kt">int</span>
<a id="__codelineno-17-132" name="__codelineno-17-132" href="#__codelineno-17-132"></a>
<a id="__codelineno-17-133" name="__codelineno-17-133" href="#__codelineno-17-133"></a><span class="kd">const</span><span class="w"> </span><span class="p">(</span>
<a id="__codelineno-17-134" name="__codelineno-17-134" href="#__codelineno-17-134"></a><span class="w"> </span><span class="c1">// ActivationPolicyRegular is used for applications that have a user interface,</span>
<a id="__codelineno-17-135" name="__codelineno-17-135" href="#__codelineno-17-135"></a><span class="w"> </span><span class="nx">ActivationPolicyRegular</span><span class="w"> </span><span class="nx">ActivationPolicy</span><span class="w"> </span><span class="p">=</span><span class="w"> </span><span class="kc">iota</span>
<a id="__codelineno-17-136" name="__codelineno-17-136" href="#__codelineno-17-136"></a><span class="w"> </span><span class="c1">// ActivationPolicyAccessory is used for applications that do not have a main window,</span>
<a id="__codelineno-17-137" name="__codelineno-17-137" href="#__codelineno-17-137"></a><span class="w"> </span><span class="c1">// such as system tray applications or background applications.</span>
<a id="__codelineno-17-138" name="__codelineno-17-138" href="#__codelineno-17-138"></a><span class="w"> </span><span class="nx">ActivationPolicyAccessory</span>
<a id="__codelineno-17-139" name="__codelineno-17-139" href="#__codelineno-17-139"></a><span class="w"> </span><span class="nx">ActivationPolicyProhibited</span>
<a id="__codelineno-17-140" name="__codelineno-17-140" href="#__codelineno-17-140"></a><span class="p">)</span>
<a id="__codelineno-17-141" name="__codelineno-17-141" href="#__codelineno-17-141"></a>
<a id="__codelineno-17-142" name="__codelineno-17-142" href="#__codelineno-17-142"></a><span class="c1">// MacOptions contains options for macOS applications.</span>
<a id="__codelineno-17-143" name="__codelineno-17-143" href="#__codelineno-17-143"></a><span class="kd">type</span><span class="w"> </span><span class="nx">MacOptions</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-17-144" name="__codelineno-17-144" href="#__codelineno-17-144"></a><span class="w"> </span><span class="c1">// ActivationPolicy is the activation policy for the application. Defaults to</span>
<a id="__codelineno-17-145" name="__codelineno-17-145" href="#__codelineno-17-145"></a><span class="w"> </span><span class="c1">// applicationActivationPolicyRegular.</span>
<a id="__codelineno-17-146" name="__codelineno-17-146" href="#__codelineno-17-146"></a><span class="w"> </span><span class="nx">ActivationPolicy</span><span class="w"> </span><span class="nx">ActivationPolicy</span>
<a id="__codelineno-17-147" name="__codelineno-17-147" href="#__codelineno-17-147"></a><span class="w"> </span><span class="c1">// If set to true, the application will terminate when the last window is closed.</span>
<a id="__codelineno-17-148" name="__codelineno-17-148" href="#__codelineno-17-148"></a><span class="w"> </span><span class="nx">ApplicationShouldTerminateAfterLastWindowClosed</span><span class="w"> </span><span class="kt">bool</span>
<a id="__codelineno-17-149" name="__codelineno-17-149" href="#__codelineno-17-149"></a><span class="p">}</span>
<a id="__codelineno-17-150" name="__codelineno-17-150" href="#__codelineno-17-150"></a>
<a id="__codelineno-17-151" name="__codelineno-17-151" href="#__codelineno-17-151"></a><span class="cm">/****** Windows Options *******/</span>
<a id="__codelineno-17-152" name="__codelineno-17-152" href="#__codelineno-17-152"></a>
<a id="__codelineno-17-153" name="__codelineno-17-153" href="#__codelineno-17-153"></a><span class="c1">// WindowsOptions contains options for Windows applications.</span>
<a id="__codelineno-17-154" name="__codelineno-17-154" href="#__codelineno-17-154"></a><span class="kd">type</span><span class="w"> </span><span class="nx">WindowsOptions</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-17-155" name="__codelineno-17-155" href="#__codelineno-17-155"></a>
<a id="__codelineno-17-156" name="__codelineno-17-156" href="#__codelineno-17-156"></a><span class="w"> </span><span class="c1">// WndProcInterceptor is a function that will be called for every message sent in the application.</span>
<a id="__codelineno-17-157" name="__codelineno-17-157" href="#__codelineno-17-157"></a><span class="w"> </span><span class="c1">// Use this to hook into the main message loop. This is useful for handling custom window messages.</span>
<a id="__codelineno-17-158" name="__codelineno-17-158" href="#__codelineno-17-158"></a><span class="w"> </span><span class="c1">// If `shouldReturn` is `true` then `returnCode` will be returned by the main message loop.</span>
<a id="__codelineno-17-159" name="__codelineno-17-159" href="#__codelineno-17-159"></a><span class="w"> </span><span class="c1">// If `shouldReturn` is `false` then returnCode will be ignored and the message will be processed by the main message loop.</span>
<a id="__codelineno-17-160" name="__codelineno-17-160" href="#__codelineno-17-160"></a><span class="w"> </span><span class="nx">WndProcInterceptor</span><span class="w"> </span><span class="kd">func</span><span class="p">(</span><span class="nx">hwnd</span><span class="w"> </span><span class="kt">uintptr</span><span class="p">,</span><span class="w"> </span><span class="nx">msg</span><span class="w"> </span><span class="kt">uint32</span><span class="p">,</span><span class="w"> </span><span class="nx">wParam</span><span class="p">,</span><span class="w"> </span><span class="nx">lParam</span><span class="w"> </span><span class="kt">uintptr</span><span class="p">)</span><span class="w"> </span><span class="p">(</span><span class="nx">returnCode</span><span class="w"> </span><span class="kt">uintptr</span><span class="p">,</span><span class="w"> </span><span class="nx">shouldReturn</span><span class="w"> </span><span class="kt">bool</span><span class="p">)</span>
<a id="__codelineno-17-161" name="__codelineno-17-161" href="#__codelineno-17-161"></a>
<a id="__codelineno-17-162" name="__codelineno-17-162" href="#__codelineno-17-162"></a><span class="w"> </span><span class="c1">// DisableQuitOnLastWindowClosed disables the auto quit of the application if the last window has been closed.</span>
<a id="__codelineno-17-163" name="__codelineno-17-163" href="#__codelineno-17-163"></a><span class="w"> </span><span class="nx">DisableQuitOnLastWindowClosed</span><span class="w"> </span><span class="kt">bool</span>
<a id="__codelineno-17-164" name="__codelineno-17-164" href="#__codelineno-17-164"></a>
<a id="__codelineno-17-165" name="__codelineno-17-165" href="#__codelineno-17-165"></a><span class="w"> </span><span class="c1">// Path where the WebView2 stores the user data. If empty %APPDATA%\[BinaryName.exe] will be used.</span>
<a id="__codelineno-17-166" name="__codelineno-17-166" href="#__codelineno-17-166"></a><span class="w"> </span><span class="c1">// If the path is not valid, a messagebox will be displayed with the error and the app will exit with error code.</span>
<a id="__codelineno-17-167" name="__codelineno-17-167" href="#__codelineno-17-167"></a><span class="w"> </span><span class="nx">WebviewUserDataPath</span><span class="w"> </span><span class="kt">string</span>
<a id="__codelineno-17-168" name="__codelineno-17-168" href="#__codelineno-17-168"></a>
<a id="__codelineno-17-169" name="__codelineno-17-169" href="#__codelineno-17-169"></a><span class="w"> </span><span class="c1">// Path to the directory with WebView2 executables. If empty WebView2 installed in the system will be used.</span>
<a id="__codelineno-17-170" name="__codelineno-17-170" href="#__codelineno-17-170"></a><span class="w"> </span><span class="nx">WebviewBrowserPath</span><span class="w"> </span><span class="kt">string</span>
<a id="__codelineno-17-171" name="__codelineno-17-171" href="#__codelineno-17-171"></a><span class="p">}</span>
<a id="__codelineno-17-172" name="__codelineno-17-172" href="#__codelineno-17-172"></a>
<a id="__codelineno-17-173" name="__codelineno-17-173" href="#__codelineno-17-173"></a><span class="cm">/********* Linux Options *********/</span>
<a id="__codelineno-17-174" name="__codelineno-17-174" href="#__codelineno-17-174"></a>
<a id="__codelineno-17-175" name="__codelineno-17-175" href="#__codelineno-17-175"></a><span class="c1">// LinuxOptions contains options for Linux applications.</span>
<a id="__codelineno-17-176" name="__codelineno-17-176" href="#__codelineno-17-176"></a><span class="kd">type</span><span class="w"> </span><span class="nx">LinuxOptions</span><span class="w"> </span><span class="kd">struct</span><span class="w"> </span><span class="p">{</span>
<a id="__codelineno-17-177" name="__codelineno-17-177" href="#__codelineno-17-177"></a><span class="w"> </span><span class="c1">// DisableQuitOnLastWindowClosed disables the auto quit of the application if the last window has been closed.</span>
<a id="__codelineno-17-178" name="__codelineno-17-178" href="#__codelineno-17-178"></a><span class="w"> </span><span class="nx">DisableQuitOnLastWindowClosed</span><span class="w"> </span><span class="kt">bool</span>
<a id="__codelineno-17-179" name="__codelineno-17-179" href="#__codelineno-17-179"></a>
<a id="__codelineno-17-180" name="__codelineno-17-180" href="#__codelineno-17-180"></a><span class="w"> </span><span class="c1">// ProgramName is used to set the program&#39;s name for the window manager via GTK&#39;s g_set_prgname().</span>
<a id="__codelineno-17-181" name="__codelineno-17-181" href="#__codelineno-17-181"></a><span class="w"> </span><span class="c1">//This name should not be localized. [see the docs]</span>
<a id="__codelineno-17-182" name="__codelineno-17-182" href="#__codelineno-17-182"></a><span class="w"> </span><span class="c1">//</span>
<a id="__codelineno-17-183" name="__codelineno-17-183" href="#__codelineno-17-183"></a><span class="w"> </span><span class="c1">//When a .desktop file is created this value helps with window grouping and desktop icons when the .desktop file&#39;s Name</span>
<a id="__codelineno-17-184" name="__codelineno-17-184" href="#__codelineno-17-184"></a><span class="w"> </span><span class="c1">//property differs form the executable&#39;s filename.</span>
<a id="__codelineno-17-185" name="__codelineno-17-185" href="#__codelineno-17-185"></a><span class="w"> </span><span class="c1">//</span>
<a id="__codelineno-17-186" name="__codelineno-17-186" href="#__codelineno-17-186"></a><span class="w"> </span><span class="c1">//[see the docs]: https://docs.gtk.org/glib/func.set_prgname.html</span>
<a id="__codelineno-17-187" name="__codelineno-17-187" href="#__codelineno-17-187"></a><span class="w"> </span><span class="nx">ProgramName</span><span class="w"> </span><span class="kt">string</span>
<a id="__codelineno-17-188" name="__codelineno-17-188" href="#__codelineno-17-188"></a><span class="p">}</span>
</code></pre></div>
</article>
</div>
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var tab,labels=set.querySelector(".tabbed-labels");for(tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12Z"/></svg>
Back to top
</button>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer" >
<a href="../../whats-new/" class="md-footer__link md-footer__link--prev" aria-label="Previous: What&#39;s New in v3?">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</div>
<div class="md-footer__title">
<span class="md-footer__direction">
Previous
</span>
<div class="md-ellipsis">
What's New in v3?
</div>
</div>
</a>
<a href="../window/" class="md-footer__link md-footer__link--next" aria-label="Next: Window">
<div class="md-footer__title">
<span class="md-footer__direction">
Next
</span>
<div class="md-ellipsis">
Window
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright © 2023 Lea Anthony
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs Insiders
</a>
</div>
<div class="md-social">
<a href="https://github.com/wailsapp/wails" target="_blank" rel="noopener" title="github.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"/></svg>
</a>
<a href="https://twitter.com/wailsapp" target="_blank" rel="noopener" title="twitter.com" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"/></svg>
</a>
<a href="https://discord.gg/JDdSxwjhGf" target="_blank" rel="noopener" title="discord.gg" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M524.531 69.836a1.5 1.5 0 0 0-.764-.7A485.065 485.065 0 0 0 404.081 32.03a1.816 1.816 0 0 0-1.923.91 337.461 337.461 0 0 0-14.9 30.6 447.848 447.848 0 0 0-134.426 0 309.541 309.541 0 0 0-15.135-30.6 1.89 1.89 0 0 0-1.924-.91 483.689 483.689 0 0 0-119.688 37.107 1.712 1.712 0 0 0-.788.676C39.068 183.651 18.186 294.69 28.43 404.354a2.016 2.016 0 0 0 .765 1.375 487.666 487.666 0 0 0 146.825 74.189 1.9 1.9 0 0 0 2.063-.676A348.2 348.2 0 0 0 208.12 430.4a1.86 1.86 0 0 0-1.019-2.588 321.173 321.173 0 0 1-45.868-21.853 1.885 1.885 0 0 1-.185-3.126 251.047 251.047 0 0 0 9.109-7.137 1.819 1.819 0 0 1 1.9-.256c96.229 43.917 200.41 43.917 295.5 0a1.812 1.812 0 0 1 1.924.233 234.533 234.533 0 0 0 9.132 7.16 1.884 1.884 0 0 1-.162 3.126 301.407 301.407 0 0 1-45.89 21.83 1.875 1.875 0 0 0-1 2.611 391.055 391.055 0 0 0 30.014 48.815 1.864 1.864 0 0 0 2.063.7A486.048 486.048 0 0 0 610.7 405.729a1.882 1.882 0 0 0 .765-1.352c12.264-126.783-20.532-236.912-86.934-334.541ZM222.491 337.58c-28.972 0-52.844-26.587-52.844-59.239s23.409-59.241 52.844-59.241c29.665 0 53.306 26.82 52.843 59.239 0 32.654-23.41 59.241-52.843 59.241Zm195.38 0c-28.971 0-52.843-26.587-52.843-59.239s23.409-59.241 52.843-59.241c29.667 0 53.307 26.82 52.844 59.239 0 32.654-23.177 59.241-52.844 59.241Z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": ["navigation.tabs", "navigation.sections", "navigation.expand", "navigation.instant.prefetch", "navigation.top", "navigation.footer", "navigation.path", "navigation.prune", "toc.integrate", "toc.follow", "search.suggest", "search.highlight", "search.share", "content.tabs.link", "content.tabs.annotation", "content.tabs.copy", "content.code.copy", "content.action.edit"], "search": "../../assets/javascripts/workers/search.1e90e0fb.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.13690f9d.min.js"></script>
<!-- Extra JavaScript (can't be set in mkdocs.yml due to content hash) -->
<script src="../../assets/javascripts/custom.js"></script>
</body>
</html>