メインコンテンツにスキップ
バージョン: v2.3.0

オプション

アプリケーションオプション

Options.App構造体には、アプリケーションの構成設定が含まれています。 これをwails.Run()メソッドに渡してください:

Example
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",
ZoomFactor: 1.0,
IsZoomControlEnabled: false,
Bind: []interface{}{
app,
},
Windows: &windows.Options{
WebviewIsTransparent: false,
WindowIsTranslucent: false,
BackdropType: windows.Mica,
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),
},
// ユーザへのメッセージをカスタマイズします
Messages *windows.Messages
// OnSuspendはWindowsが省電力モードに移行した場合に呼び出されます
OnSuspend func()
// OnResumeはWindowsが省電力モードから復帰した場合に呼び出されます
OnResume func()
},
Mac: &mac.Options{
TitleBar: &mac.TitleBar{
TitlebarAppearsTransparent: true,
HideTitle: false,
HideTitleBar: false,
FullSizeContent: false,
UseToolbar: false,
HideToolbarSeparator: true,
},
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,
},
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

起動時にウィンドウをどのように表示させるかを定義します。

WinMacLin
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のすべての機能がサポートされているわけではありません。次の機能マトリクスを確認してください:

機能WinMacLin
GET
POST1
PUT1
PATCH1
DELETE1
Request Headers1
Request Body
Request Body Streaming
Response StatusCodes1
Response Headers1
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

注意: フロントエンド側の開発サーバと組み合わせて使用すると、一部制限がかかる場合があります。 Viteは、拡張子を含まないパスに対して、常にindex.htmlを返します。

名前: AssetsHandler
データ型: http.Handler

Middleware

MiddlewareはHTTPミドルウェアで、AssetServerのリクエストチェーンをフックすることができます。 例えば、特殊なルーティングを実装したいときなど、デフォルトのリクエストハンドラを動的にスキップさせることができます。 Middlewareは、AssetSeverが使用する新しいhttp.Handlerを生成するために呼び出されます。引数では、AssetServerがデフォルトで使用するハンドラを受け取ります。

Middlewareが定義されていない場合、デフォルトのAssetServerのリクエストチェーンが実行されます。

名前: Middleware
データ型: assetserver.Middleware

アプリケーションで使用されるメニューです。 メニューについて詳しくは、メニューのリファレンスをご覧ください。

備考

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を返すと通常どおりシャットダウンされます。 ユーザに対してプログラムの終了を確認したいときは、このコールバックを使うのが良いでしょう。

例:

windowsapp.go
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

ZoomFactor

名前: ZoomFactor
データ型: float64

WebView2の拡大率を定義します。 これは、Edgeのユーザによるズームインまたはズームアウトに対応するオプションです。

IsZoomControlEnabled

名前: IsZoomControlEnabled
データ型: bool

このオプションを有効にすると、拡大率をユーザによって変更することができます。 拡大率の変更がユーザに許可されていない間は、オプションで拡大率を設定することができますのでご注意ください (例: キオスクアプリケーションなど)。

Bind

フロントエンドにバインドする必要があるメソッドが定義された、構造体インスタンスのスライスです。

名前: Bind
データ型: []interface{}

Windows

Windows固有のオプションを定義します。

名前: Windows
データ型: *windows.Options

WebviewIsTransparent

この値をtrueに設定すると、アルファ値が0の際に、WebViewの背景が透明になります。 つまり、CSSでbackground-colorrgba(0,0,0,0)を設定すると、ホストウィンドウが透けて見えるようになります。 多くの場合、WindowIsTranslucentと組み合わて、霜のように見えるアプリケーションを作成する際に使用します。

名前: WebviewIsTransparent
データ型: bool

WindowIsTranslucent

この値をtrueに設定すると、ウィンドウの背景が半透明になります。 多くの場合、WebviewIsTransparentと組み合わせて使用されます。

ビルド22621より前のWindows 11の場合、半透明を実現させるためにBlurBehindメソッドを使用するため、処理が遅くなる可能性があります。 ビルド22621以降のWindows 11では、より高速な、新しい半透明タイプが有効になります。 デフォルトで使用される半透明タイプは、Windowsにより決定されます。 このタイプを設定するには、BackdropTypeオプションを使用してください。

名前: WindowIsTranslucent
データ型: bool

BackdropType

備考

この設定を適用するには、Windows 11 ビルド22621以降が必要です。

ウィンドウの半透明タイプを設定します。 この設定は、WindowIsTranslucenttrueに設定されている場合にのみ適用されます。

名前: BackdropType
データ型: windows.BackdropType

値は次のいずれかを指定してください:

説明
AutoWindowsに背景を決定させる
None半透明にしない
Acrylicアクリルの効果を使用する
Micaマイカの効果を使用する
Tabbedタブを使用する。 これはマイカに似ている背景です。

DisableWindowIcon

この設定をtrueにすると、タイトルバーの左上隅のアイコンが消去されます。

名前: DisableWindowIcon
データ型: bool

DisableFramelessWindowDecorations

この設定をtrueにすると、フレームレスモードでのウィンドウデコレーションが消去されます。 つまり、'Aero Shadow'および'Rounded Corners'がウィンドウに適用されなくなります。 なお、'Rounded Corners'はWindows 11でのみサポートされていますのでご注意ください。

名前: DisableFramelessWindowDecorations
データ型: bool

WebviewUserDataPath

WebView2が、ユーザデータを格納するパスを設定します。 空の場合は、%APPDATA%\[BinaryName.exe]が使用されます。

名前: WebviewUserDataPath
データ型: string

WebviewBrowserPath

WebView2の実行ファイルおよびライブラリが存在するディレクトリへのパスを設定します。 空の場合、システムにインストールされているWebView2が使用されます。

固定バージョンランタイムディストリビューションに関する重要情報:

名前: WebviewBrowserPath
データ型: string

Theme

サポートされるWindowsの最小バージョン: Windows 10 2004/20H1

アプリケーションが使用するテーマを設定します:

説明
SystemDefaultデフォルト値です。 テーマは、システムのデフォルト設定に基づきます。 ユーザがシステムのテーマ設定を変更した場合、アプリケーションは新しい設定を使用するように更新されます。
Darkアプリケーションはダークテーマのみを使用します。
Lightアプリケーションはライトテーマのみを使用します。

名前: Theme
データ型: windows.Theme

CustomTheme

備考

サポートされるWindowsの最小バージョン: Windows 10/11 2009/21H2 ビルド22000

ウィンドウがアクティブまたは非アクティブのときに、ライトモード・ダークモードのそれぞれにおいて、タイトルバー、タイトルテキスト、ボーダーのカスタムカラーを設定できます。

名前: CustomTheme
データ型: windows.CustomTheme

CustomTheme 型

CustomTheme構造体は、int32型で色の値を指定します。 これは0x00BBGGAAで表されるWindowsの標準フォーマットで指定します。 RGBの値をこのフォーマットに変換するために、windows.RGB(r,g,b uint8)のようなヘルパー関数が用意されています。

注意: 指定されていない値はデフォルトで黒色になります。

type ThemeSettings struct {
DarkModeTitleBar int32
DarkModeTitleBarInactive int32
DarkModeTitleText int32
DarkModeTitleTextInactive int32
DarkModeBorder int32
DarkModeBorderInactive int32
LightModeTitleBar int32
LightModeTitleBarInactive int32
LightModeTitleText int32
LightModeTitleTextInactive int32
LightModeBorder int32
LightModeBorderInactive int32
}

例:

    CustomTheme: &windows.ThemeSettings{
// Theme to use when window is active
DarkModeTitleBar: windows.RGB(255, 0, 0), // Red
DarkModeTitleText: windows.RGB(0, 255, 0), // Green
DarkModeBorder: windows.RGB(0, 0, 255), // Blue
LightModeTitleBar: windows.RGB(200, 200, 200),
LightModeTitleText: windows.RGB(20, 20, 20),
LightModeBorder: windows.RGB(200, 200, 200),
// Theme to use when window is inactive
DarkModeTitleBarInactive: windows.RGB(128, 0, 0),
DarkModeTitleTextInactive: windows.RGB(0, 128, 0),
DarkModeBorderInactive: windows.RGB(0, 0, 128),
LightModeTitleBarInactive: windows.RGB(100, 100, 100),
LightModeTitleTextInactive: windows.RGB(10, 10, 10),
LightModeBorderInactive: windows.RGB(100, 100, 100),
},

Messages

利用可能なWebView2ランタイムが見つからなかったときに表示する、WebView2インストーラに関するメッセージ文字列を設定します。

名前: Messages
データ型: *windows.Messages

プロジェクトがサポートする言語にあわせて、この設定をカスタマイズしてください。

ResizeDebounceMS

ResizeDebounceMSは、ウィンドウサイズが変更されたときに、WebView2の再描画を実行するまでの時間です。 デフォルト値(0) は、できるだけ早く再描画を実行します。

名前: ResizeDebounceMS
データ型: uint16

OnSuspend

Windowsがローパワーモード(サスペンド/休止状態) に切り替わると呼び出されるコールバックを設定します。

名前: OnSuspend
データ型: func()

OnResume

Windowsがローパワーモード(サスペンド/休止状態) から復帰したときに呼び出されるコールバックを設定します。

名前: OnResume
データ型: func()

Mac

Mac固有のオプションを定義します。

名前: Mac
データ定義: *mac.Options

TitleBar

TitleBar構造体は、タイトルバーのルック・アンド・フィールを設定する機能を提供します。

名前: TitleBar
データ型: *mac.TitleBar

Titlebar 構造体

アプリケーションのタイトルバーは、TitleBarオプションを使用することでカスタマイズできます:

type TitleBar struct {
TitlebarAppearsTransparent bool
HideTitle bool
HideTitleBar bool
FullSizeContent bool
UseToolbar bool
HideToolbarSeparator bool
}
名前説明
TitlebarAppearsTransparentタイトルバーを透明にします。 これにより、タイトルバーが非表示になり、コンテンツがウィンドウ全体に表示されます。 Appleドキュメント
HideTitleウィンドウタイトルを非表示にします。 Appleドキュメント
HideTitleBarスタイルマスクからNSWindowStyleMaskTitledを消去します。
FullSizeContentWebViewをウィンドウ全体に表示します。 Appleドキュメント
UseToolbarウィンドウにデフォルトツールバーを追加します。 Appleドキュメント
HideToolbarSeparatorツールバーの下側の線を消去します。 Appleドキュメント

事前設定されたタイトルバー構成を利用することも可能です:

設定
mac.TitleBarDefault()
mac.TitleBarHidden()
mac.TitleBarHiddenInset()

例:

Mac: &mac.Options{
TitleBar: mac.TitleBarHiddenInset(),
}

タイトルバーのカスタマイズに関してインスピレーションを得たい場合はこちらをご覧ください。

Appearance

Appearanceは、AppleのNSAppearanceNameに従って、アプリケーションのスタイルを設定するために使用します。

名前: Appearance
データ型: mac.AppearanceType

Appearance 型

アプリケーションの外観を指定します。

説明
DefaultAppearanceDefaultAppearanceは、システムのデフォルト値を使用します。
NSAppearanceNameAquaシステムの標準的なライト外観
NSAppearanceNameDarkAquaシステムの標準的なダーク外観
NSAppearanceNameVibrantLightより鮮やかなライト外観
NSAppearanceNameAccessibilityHighContrastAquaシステムの標準的なライト外観のハイコントラスト版
NSAppearanceNameAccessibilityHighContrastDarkAquaシステムの標準的なダーク外観のハイコントラスト版
NSAppearanceNameAccessibilityHighContrastVibrantLightより鮮やかなライト外観のハイコントラスト版
NSAppearanceNameAccessibilityHighContrastVibrantDarkより鮮やかなダーク外観のハイコントラスト版

例:

Mac: &mac.Options{
Appearance: mac.NSAppearanceNameDarkAqua,
}

WebviewIsTransparent

この値をtrueに設定すると、アルファ値が0の際に、WebViewの背景が透明になります。 つまり、CSSでbackground-colorrgba(0,0,0,0)を設定すると、ホストウィンドウが透けて見えるようになります。 多くの場合、WindowIsTranslucentと組み合わて、霜のように見えるアプリケーションを作成する際に使用します。

名前: WebviewIsTransparent
データ型: bool

WindowIsTranslucent

この値をtrueに設定すると、ウィンドウの背景が半透明になります。 多くの場合、WebviewIsTransparentと組み合わて、霜のように見えるアプリケーションを作成する際に使用します。

名前: WindowIsTranslucent
データ型: bool

About

"AppMenu"ロールで作成されたアプリケーションメニューの中にある"About"メニュー項目において、タイトル、メッセージ、アイコンを設定できます。

名前: About
データ型: *mac.AboutInfo

About 構造体

type AboutInfo struct {
Title string
Message string
Icon []byte
}

これらの設定が定義されている場合、AppMenuロールが使用されていれば、アプリケーションメニュー内に"About"メニューが表示されます。 例えば以下のように設定すると:

//go:embed build/appicon.png
var icon []byte

func main() {
err := wails.Run(&options.App{
...
Mac: &mac.Options{
About: &mac.AboutInfo{
Title: "My Application",
Message: "© 2021 Me",
Icon: icon,
},
},
})

アプリケーションメニューに"About"メニュー項目が表示されます:


クリックすると、アプリケーション概要メッセージボックスが開かれます:


Linux

Linux固有のオプションを定義します。

名前: Linux
データ型: *linux.Options

Icon

ウィンドウを示すアイコンを設定します。 このアイコンは、ウィンドウが最小化されたときに使用されます(iconifiedと呼ばれます)。

名前: Icon
データ型: []byte

一部のウィンドウマネージャやデスクトップ環境では、ウィンドウフレームに配置されたり、他のコンテキストで表示される場合もあります。 反対に、環境によっては全くアイコンが使用されないこともありますのでご注意ください。

注意: 少なくともWayland上のGnomeでは、このアイコンは表示されません。 アプリケーションアイコンを表示させるには、.desktopファイルを使用する必要があります。 KDEの場合は正常に表示されるはずです。

アイコンは、何の加工もされていないサイズで用意してください。つまり、拡大/縮小された画像は使用しないでください。 最高品質を確保するために、拡大/縮小は、最終的な目的サイズがはっきりするまで待ってください。

WindowIsTranslucent

この値をtrueに設定すると、ウィンドウの背景が半透明になります。 ウィンドウマネージャによっては、この設定を無視したり、ブラックウィンドウになる場合があります。

名前: WindowIsTranslucent
データ型: bool

Debug

デバッグビルド時に適用されるデバッグ固有のオプションを定義します。

名前: Debug
データ型: options.Debug

OpenInspectorOnStartup

このオプションをtrueに設定すると、アプリケーション起動時にWeb開発者ツールが表示されます。

名前: OpenInspectorOnStartup
データ型: bool


  1. この機能の動作には、WebKit2GTK 2.36以上が必要となるため、機能を確実に対応させたい場合は、アプリビルド時にビルドタグwebkit2_36を付与してください。 これにより、アプリに必要なWebKit2GTKの最小バージョン要件が2.36に引き上げられます。