オプション
アプリケーションオプション
Options.App構造体には、アプリケーションの構成設定が含まれています。 これをwails.Run()メソッドに渡してください:
import (
"github.com/wailsapp/wails/v2/pkg/options"
"github.com/wailsapp/wails/v2/pkg/options/assetserver"
"github.com/wailsapp/wails/v2/pkg/options/linux"
"github.com/wailsapp/wails/v2/pkg/options/mac"
"github.com/wailsapp/wails/v2/pkg/options/windows"
)
func main() {
err := wails.Run(&options.App{
Title: "Menus Demo",
Width: 800,
Height: 600,
DisableResize: false,
Fullscreen: false,
WindowStartState: options.Maximised,
Frameless: true,
MinWidth: 400,
MinHeight: 400,
MaxWidth: 1280,
MaxHeight: 1024,
StartHidden: false,
HideWindowOnClose: false,
BackgroundColour: &options.RGBA{R: 0, G: 0, B: 0, A: 255},
AlwaysOnTop: false,
AssetServer: &assetserver.Options{
Assets: assets,
Handler: assetsHandler,
Middleware: assetsMidldeware,
},
Menu: app.applicationMenu(),
Logger: nil,
LogLevel: logger.DEBUG,
LogLevelProduction: logger.ERROR,
OnStartup: app.startup,
OnDomReady: app.domready,
OnShutdown: app.shutdown,
OnBeforeClose: app.beforeClose,
CSSDragProperty: "--wails-draggable",
CSSDragValue: "drag",
EnableDefaultContextMenu: false,
EnableFraudulentWebsiteDetection: false,
Bind: []interface{}{
app,
},
EnumBind: []interface{}{
AllWeekdays,
},
ErrorFormatter: func(err error) any { return err.Error() },
SingleInstanceLock: &options.SingleInstanceLock{
UniqueId: "c9c8fd93-6758-4144-87d1-34bdb0a8bd60",
OnSecondInstanceLaunch: app.onSecondInstanceLaunch,
},
DragAndDrop: &options.DragAndDrop{
EnableFileDrop: false,
DisableWebViewDrop: false,
CSSDropProperty: "--wails-drop-target",
CSSDropValue: "drop",
},
Windows: &windows.Options{
WebviewIsTransparent: false,
WindowIsTranslucent: false,
BackdropType: windows.Mica,
DisablePinchZoom: false,
DisableWindowIcon: false,
DisableFramelessWindowDecorations: false,
WebviewUserDataPath: "",
WebviewBrowserPath: "",
Theme: windows.SystemDefault,
CustomTheme: &windows.ThemeSettings{
DarkModeTitleBar: windows.RGB(20, 20, 20),
DarkModeTitleText: windows.RGB(200, 200, 200),
DarkModeBorder: windows.RGB(20, 0, 20),
LightModeTitleBar: windows.RGB(200, 200, 200),
LightModeTitleText: windows.RGB(20, 20, 20),
LightModeBorder: windows.RGB(200, 200, 200),
},
// ZoomFactor is the zoom factor for the WebView2. これは、Edgeのユーザによるズームインまたはズームアウトに対応するオプションです。
ZoomFactor: float64,
// IsZoomControlEnabled enables the zoom factor to be changed by the user.
IsZoomControlEnabled: bool,
// User messages that can be customised
Messages: *windows.Messages
// OnSuspend is called when Windows enters low power mode
OnSuspend: func()
// OnResume is called when Windows resumes from low power mode
OnResume: func(),
// Disable GPU hardware acceleration for the webview
WebviewGpuDisabled: false,
// Class name for the window. If empty, 'wailsWindow' will be used.
WindowClassName: "MyWindow",
},
Mac: &mac.Options{
TitleBar: &mac.TitleBar{
TitlebarAppearsTransparent: true,
HideTitle: false,
HideTitleBar: false,
FullSizeContent: false,
UseToolbar: false,
HideToolbarSeparator: true,
OnFileOpen: app.onFileOpen,
OnUrlOpen: app.onUrlOpen,
},
Appearance: mac.NSAppearanceNameDarkAqua,
WebviewIsTransparent: true,
WindowIsTranslucent: false,
About: &mac.AboutInfo{
Title: "My Application",
Message: "© 2021 Me",
Icon: icon,
},
},
Linux: &linux.Options{
Icon: icon,
WindowIsTranslucent: false,
WebviewGpuPolicy: linux.WebviewGpuPolicyAlways,
ProgramName: "wails"
},
Debug: options.Debug{
OpenInspectorOnStartup: false,
},
})
if err != nil {
log.Fatal(err)
}
}
Title
ウィンドウのタイトルバーに表示されるテキストです。
名前: Title
データ型: string
Width
ウィンドウの初期幅です。
名前: Width
データ型: int
デフォルト値: 1024
Height
ウィンドウの初期の高さです。
名前: Height
データ型: int
デフォルト値: 768
DisableResize
デフォルトでは、メインウィンドウのサイズは自在に変更することができます。 この設定をtrueにすると、サイズが固定されます。
名前: DisableResize
データ型: bool
Fullscreen
非推奨: 代わりにWindowStartStateを使用してください。
WindowStartState
起動時にウィンドウをどのように表示させるかを定義します。
| 値 | Win | Mac | Lin |
|---|---|---|---|
| Fullscreen | ✅ | ✅ | ✅ |
| Maximised | ✅ | ✅ | ✅ |
| Minimised | ✅ | ❌ | ✅ |
名前: WindowStartState
データ型: options.WindowStartState
Frameless
この設定をtrueにす ると、ウィンドウに境界線やタイトルバーが表示されなくなります。 詳しくはフレームレスウィンドウをご覧ください。
名前: Frameless
データ型: bool
MinWidth
ウィンドウの最小幅を設定します。 Widthの値がこの値より小さい場合、ウィンドウ幅はデフォルトでMinWidthの値となります。
名前: MinWidth
データ型: int
MinHeight
ウィンドウの最小の高さを設定します。 Heightの値がこの値より小さい場合、ウィンドウの高さはデフォルトでMinHeightの値となります。
名前: MinHeight
データ型: int
MaxWidth
ウィンドウの最大幅を設定します。 Widthの値がこの値より大きい場合、ウィンドウ幅はデフォルトでMaxWidthの値となります。
名前: MaxWidth
データ型: int
MaxHeight
ウィンドウの最大の高さを設定します。 Heightの値がこの値より大きい場合、ウィンドウの高さはデフォルトでMaxHeightの値となります。
名前: MaxHeight
データ型: int
StartHidden
trueに設定すると、アプリケーションはWindowShowが呼び出されるまで非表示となります。
名前: StartHidden
データ型: bool
HideWindowOnClose
デフォルトでは、ウィンドウを閉じるとアプリケーションが終了します。 この設定をtrueにすると、ウィンドウを閉じる操作をした際に、
ウィンドウが非表示の状態になります。
名前: HideWindowOnClose
データ型: bool
BackgroundColour
ウィンドウのデフォルトの背景色です。 例: options.NewRGBA(255,0,0,128) - 50%透過された赤色
名前: BackgroundColour
データ型: *options.RGBA
デフォルト値: white
AlwaysOnTop
ウィンドウへのフォーカスが無くなっても、他ウィンドウより手前側に ウィンドウを表示させるかを設定します。
名前: AlwaysOnTop
データ型: bool
Assets
非推奨: 代わりにAssetServerの固有オプションであるAssetsオプションを使用してください。
AssetsHandler
非推奨: 代わりにAssetServerの固有オプションであるAssetsHandlerオプションを使用してください。
AssetServer
AssetServerの固有オプションを定義します。 静的なアセットでAssetServerをカスタマイズしたり、http.Handlerで動的なアセットを提供したり、assetserver.Middlewareでリクエストチェーンにフックしたりすることができます。
現在のところ、http.Requestのすべての機能がサポートされているわけではありません。次の機能マトリクスを確認してください:
| 機能 | Win | Mac | Lin |
|---|---|---|---|
| GET | ✅ | ✅ | ✅ |
| POST | ✅ | ✅ | ✅ 1 |
| PUT | ✅ | ✅ | ✅ 1 |
| PATCH | ✅ | ✅ | ✅ 1 |
| DELETE | ✅ | ✅ | ✅ 1 |
| Request Headers | ✅ | ✅ | ✅ 1 |
| Request Body | ✅ | ✅ | ✅ 2 |
| Request Body Streaming | ✅ | ✅ | ✅ 2 |
| Response StatusCodes | ✅ | ✅ | ✅ 1 |
| Response Headers | ✅ | ✅ | ✅ 1 |
| Response Body | ✅ | ✅ | ✅ |
| Response Body Streaming | ❌ | ✅ | ✅ |
| WebSockets | ❌ | ❌ | ❌ |
| HTTP Redirects 30x | ✅ | ❌ | ❌ |
名前: AssetServer
データ型: *assetserver.Options
Assets
アプリケーションのフロントエンドで使用される静的アセットです。
GETリクエストが要求された場合、まず初めに、このfs.FSからのアセット提供を試みます。 fs.FSから、当該ファイルが存在しない旨のos.ErrNotExistエラーが返された場合、このリクエストはHandlerへフォールバックされ、ハンドラ側でGETリクエストへの応答を試みます。
nilがセットされている場合、GETリクエストに常にHandlerへ転送されます。
名前: Assets
データ型: fs.FS
Handler
アセットハンドラは、アセットが見つからなかった場合のフォールバック処理を担う、ジェネリックなhttp.Handlerです。
Assets内でos.ErrNotExistエラーが発生したことにより、アセットを提供できないと判断されたすべてのGETリクエストによって、このハンドラが呼び出されます。 また、GET以外のすべての種類のリクエストは、常にこのハンドラから応答が返されます。 ハンドラが定義されていない状態で、ハンドラが呼び出された場合、次の応答が返されます:
- GETリクエ スト:
http.StatusNotFound - その他のリクエスト:
http.StatusMethodNotAllowed
This does not work with vite v5.0.0+ and wails v2 due to changes in vite. Changes are planned in v3 to support similar functionality under vite v5.0.0+. If you need this feature, stay with vite v4.0.0+. See issue 3240 for details
注意: フロントエンド側の開発サーバと組み合わせて使用すると、一部制限がかかる場合があります。 Viteは、拡張子を含まないパスに対して、常にindex.htmlを返します。
名前: AssetsHandler
データ型: http.Handler
Middleware
MiddlewareはHTTPミドルウェアで、AssetServerのリクエストチェーンをフックすることができます。 例えば、特殊なルーティングを実装したいときなど、デフォルトのリクエストハンドラを動的にスキップさせることができます。 Middlewareは、AssetSeverが使用する新しいhttp.Handlerを生成するために呼び出されます。引数では、AssetServerがデフォルトで使用するハンドラを受け取ります。
Middlewareが定義されてい ない場合、デフォルトのAssetServerのリクエストチェーンが実行されます。
名前: Middleware
データ型: assetserver.Middleware
Menu
アプリケーションで使用されるメニューです。 メニューについて詳しくは、メニューのリファレンスをご覧ください。
Macでは、メニューが指定されていない場合、デフォルトメニューが作成されます。
名前: Menu
データ型: *menu.Menu
Logger
アプリケーションで使用するロガーです。 ロギングについて詳しくは、ログのリファレンスをご覧ください。
名前: Logger
データ型: logger.Logger
デフォルト値: 標準出力へのロガー
LogLevel
デフォルトのログレベルです。 ロギングについて詳しくは、ログのリファレンスをご覧ください。
名前: LogLevel
データ型: logger.LogLevel
デフォルト値: 開発モードの場合はInfo、本番モードの場合はError
LogLevelProduction
本番ビルド時のデフォルトのログレベルです。 ロギングについて詳しくは、ログのリファレンスをご覧ください。
名前: LogLevelProduction
データ型: logger.LogLevel
デフォルト値: Error
OnStartup
フロントエンド作成後、index.htmlが読み込まれる前に呼び出されるコールバックです。 アプリケーションのcontextが渡されます。
名前: OnStartup
データ型: func(ctx context.Context)
OnDomReady
フロントエンドがindex.htmlとそのリソースを読み込んだ後に呼び出されるコールバックです。 アプリケーションのcontextが渡されます。
名前: OnDomReady
データ型: func(ctx context.Context)
OnShutdown
フロントエンドが破棄され、アプリケーションが終了する直前に呼び出されるコールバックです。 アプリケーションのcontextが渡されます。
名前: OnShutdown
データ型: func(ctx context.Context)
OnBeforeClose
ウィンドウの閉じるボタンをクリックするか、runtime.Quitが呼ばれて、アプリケーションが終了されそうになっているときに呼び出されるコールバックです。 trueを返すとアプリケーションはそのまま維持され、falseを返すと通常どおりシャットダウンされます。 ユーザに対してプログラムの終了を確認したいときは、このコールバックを使うのが良いでしょう。
例:
func (b *App) beforeClose(ctx context.Context) (prevent bool) {
dialog, err := runtime.MessageDialog(ctx, runtime.MessageDialogOptions{
Type: runtime.QuestionDialog,
Title: "Quit?",
Message: "Are you sure you want to quit?",
})
if err != nil {
return false
}
return dialog != "Yes"
}
名前: OnBeforeClose
データ型: func(ctx context.Context) bool
CSSDragProperty
ウィンドウをドラッグできる要素を特定するためのCSSプロパティ名を設定します。 デフォルト値: --wails-draggable
名前: CSSDragProperty
データ型: string
CSSDragValue
ウィンドウのドラッグを有効にするために、CSSDragPropertyスタイルが持つべき値を設定します。 デフォルト値: drag
名前: CSSDragValue
データ型: string