Dialog
Overviewโ
This part of the runtime provides access to native dialogs, such as File Selectors and Message boxes.
Dialog is currently unsupported in the JS runtime.
OpenDirectoryDialogโ
Opens a dialog that prompts the user to select a directory. Can be customised using OpenDialogOptions.
Go Signature: OpenDirectoryDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)
Returns: Selected directory (blank if the user cancelled) or an error
OpenFileDialogโ
Opens a dialog that prompts the user to select a file. Can be customised using OpenDialogOptions.
Go Signature: OpenFileDialog(ctx context.Context, dialogOptions OpenDialogOptions) (string, error)
Returns: Selected file (blank if the user cancelled) or an error
OpenMultipleFilesDialogโ
Opens a dialog that prompts the user to select multiple files. Can be customised using OpenDialogOptions.
Go Signature: OpenMultipleFilesDialog(ctx context.Context, dialogOptions OpenDialogOptions) ([]string, error)
Returns: Selected files (nil if the user cancelled) or an error
SaveFileDialogโ
Opens a dialog that prompts the user to select a filename for the purposes of saving. Can be customised using SaveDialogOptions.
Go Signature: SaveFileDialog(ctx context.Context, dialogOptions SaveDialogOptions) (string, error)
Returns: The selected file (blank if the user cancelled) or an error
MessageDialogโ
Displays a message using a message dialog. Can be customised using MessageDialogOptions.
Go Signature: MessageDialog(ctx context.Context, dialogOptions MessageDialogOptions) (string, error)
Returns: The text of the selected button or an error
Optionsโ
OpenDialogOptionsโ
type OpenDialogOptions struct {
DefaultDirectory string
DefaultFilename string
Title string
Filters []FileFilter
ShowHiddenFiles bool
CanCreateDirectories bool
ResolvesAliases bool
TreatPackagesAsDirectories bool
}
Field | Description | Win | Mac | Lin |
---|---|---|---|---|
DefaultDirectory | The directory the dialog will show when opened | โ | โ | โ |
DefaultFilename | The default filename | โ | โ | โ |
Title | Title for the dialog | โ | โ | โ |
Filters | A list of file filters | โ | โ | โ |
ShowHiddenFiles | Show files hidden by the system | โ | โ | |
CanCreateDirectories | Allow user to create directories | โ | ||
ResolvesAliases | If true, returns the file not the alias | โ | ||
TreatPackagesAsDirectories | Allow navigating into packages | โ |
SaveDialogOptionsโ
type SaveDialogOptions struct {
DefaultDirectory string
DefaultFilename string
Title string
Filters []FileFilter
ShowHiddenFiles bool
CanCreateDirectories bool
TreatPackagesAsDirectories bool
}
Field | Description | Win | Mac | Lin |
---|---|---|---|---|
DefaultDirectory | The directory the dialog will show when opened | โ | โ | โ |
DefaultFilename | The default filename | โ | โ | โ |
Title | Title for the dialog | โ | โ | โ |
Filters | A list of file filters | โ | โ | โ |
ShowHiddenFiles | Show files hidden by the system | โ | โ | |
CanCreateDirectories | Allow user to create directories | โ | ||
TreatPackagesAsDirectories | Allow navigating into packages | โ |
MessageDialogOptionsโ
type MessageDialogOptions struct {
Type DialogType
Title string
Message string
Buttons []string
DefaultButton string
CancelButton string
}
Field | Description | Win | Mac | Lin |
---|---|---|---|---|
Type | The type of message dialog, eg question, info... | โ | โ | โ |
Title | Title for the dialog | โ | โ | โ |
Message | The message to show the user | โ | โ | โ |
Buttons | A list of button titles | โ | ||
DefaultButton | The button with this text should be treated as default. Bound to return | โ | ||
CancelButton | The button with this text should be treated as cancel. Bound to escape | โ |
Windowsโ
Windows has standard dialog types in which the buttons are not customisable. The value returned will be one of: "Ok", "Cancel", "Abort", "Retry", "Ignore", "Yes", "No", "Try Again" or "Continue"
Linuxโ
Linux has standard dialog types in which the buttons are not customisable. The value returned will be one of: "Ok", "Cancel", "Yes", "No"
Macโ
A message dialog on Mac may specify up to 4 buttons. If no DefaultButton
or CancelButton
is given, the first button
is considered default and is bound to the return
key.
For the following code:
selection, err := runtime.MessageDialog(b.ctx, runtime.MessageDialogOptions{
Title: "It's your turn!",
Message: "Select a number",
Buttons: []string{"one", "two", "three", "four"},
})
the first button is shown as default:

And if we specify DefaultButton
to be "two":
selection, err := runtime.MessageDialog(b.ctx, runtime.MessageDialogOptions{
Title: "It's your turn!",
Message: "Select a number",
Buttons: []string{"one", "two", "three", "four"},
DefaultButton: "two",
})
the second button is shown as default. When return
is pressed, the value "two" is returned.

If we now specify CancelButton
to be "three":
selection, err := runtime.MessageDialog(b.ctx, runtime.MessageDialogOptions{
Title: "It's your turn!",
Message: "Select a number",
Buttons: []string{"one", "two", "three", "four"},
DefaultButton: "two",
CancelButton: "three",
})
the button with "three" is shown at the bottom of the dialog. When escape
is pressed, the value "three" is returned:

DialogTypeโ
const (
InfoDialog DialogType = "info"
WarningDialog DialogType = "warning"
ErrorDialog DialogType = "error"
QuestionDialog DialogType = "question"
)
FileFilterโ
type FileFilter struct {
DisplayName string // Filter information EG: "Image Files (*.jpg, *.png)"
Pattern string // semi-colon separated list of extensions, EG: "*.jpg;*.png"
}
Windowsโ
Windows allows you to use multiple file filters in dialog boxes. Each FileFilter will show up as a separate entry in the dialog:

Linuxโ
Linux allows you to use multiple file filters in dialog boxes. Each FileFilter will show up as a separate entry in the dialog:

Macโ
Mac dialogs only have the concept of a single set of patterns to filter files. If multiple FileFilters are provided, Wails will use all the Patterns defined.
Example:
selection, err := runtime.OpenFileDialog(b.ctx, runtime.OpenDialogOptions{
Title: "Select File",
Filters: []runtime.FileFilter{
{
DisplayName: "Images (*.png;*.jpg)",
Pattern: "*.png;*.jpg",
}, {
DisplayName: "Videos (*.mov;*.mp4)",
Pattern: "*.mov;*.mp4",
},
},
})
This will result in the Open File dialog using *.png,*.jpg,*.mov,*.mp4
as a filter.