Skip to content

Status#

Status of features in v3.

Note

This list is a mixture of public and internal API support.<br/>
It is not complete and probably not up to date.

Known Issues#

  • Linux is not yet up to feature parity with Windows/Mac

Application#

Application interface methods

Method Windows Linux Mac Notes
run() error Y Y Y
destroy() Y Y
setApplicationMenu(menu *Menu) Y Y Y
name() string Y Y
getCurrentWindowID() uint Y Y Y
showAboutDialog(name string, description string, icon []byte) Y Y
setIcon(icon []byte) - Y Y
on(id uint) Y
dispatchOnMainThread(fn func()) Y Y Y
hide() Y Y Y
show() Y Y Y
getPrimaryScreen() (*Screen, error) Y Y
getScreens() ([]*Screen, error) Y Y

Webview Window#

Webview Window Interface Methods

Method Windows Linux Mac Notes
center() Y Y Y
close() y Y Y
destroy() Y Y
execJS(js string) y Y Y
focus() Y Y
forceReload() Y Y
fullscreen() Y Y Y
getScreen() (*Screen, error) y Y Y
getZoom() float64 Y Y
height() int Y Y Y
hide() Y Y Y
isFullscreen() bool Y Y Y
isMaximised() bool Y Y Y
isMinimised() bool Y Y Y
maximise() Y Y Y
minimise() Y Y Y
nativeWindowHandle() (uintptr, error) Y Y Y
on(eventID uint) y Y
openContextMenu(menu Menu, data ContextMenuData) y Y Y
relativePosition() (int, int) Y Y Y
reload() y Y Y
run() Y Y Y
setAlwaysOnTop(alwaysOnTop bool) Y Y Y
setBackgroundColour(color RGBA) Y Y Y
setEnabled(bool) Y Y
setFrameless(bool) Y Y
setFullscreenButtonEnabled(enabled bool) - Y Y There is no fullscreen button in Windows
setHTML(html string) Y Y Y
setMaxSize(width, height int) Y Y Y
setMinSize(width, height int) Y Y Y
setRelativePosition(x int, y int) Y Y Y
setResizable(resizable bool) Y Y Y
setSize(width, height int) Y Y Y
setTitle(title string) Y Y Y
setURL(url string) Y Y Y
setZoom(zoom float64) Y Y Y
show() Y Y Y
size() (int, int) Y Y Y
toggleDevTools() Y Y Y
unfullscreen() Y Y Y
unmaximise() Y Y Y
unminimise() Y Y Y
width() int Y Y Y
zoom() Y Y
zoomIn() Y Y Y
zoomOut() Y Y Y
zoomReset() Y Y Y

Runtime#

Application#

Feature Windows Linux Mac Notes
Quit Y Y Y
Hide Y Y Y
Show Y Y

Dialogs#

Feature Windows Linux Mac Notes
Info Y Y Y
Warning Y Y Y
Error Y Y Y
Question Y Y Y
OpenFile Y Y Y
SaveFile Y Y Y

Clipboard#

Feature Windows Linux Mac Notes
SetText Y Y Y
Text Y Y Y

ContextMenu#

Feature Windows Linux Mac Notes
OpenContextMenu Y Y Y
On By Default
Control via HTML Y

The default context menu is enabled by default for all elements that are contentEditable: true, <input> or <textarea> tags or have the --default-contextmenu: true style set. The --default-contextmenu: show style will always show the context menu The --default-contextmenu: hide style will always hide the context menu

Anything nested under a tag with --default-contextmenu: hide style will not show the context menu unless it is explicitly set with --default-contextmenu: show.

Screens#

Feature Windows Linux Mac Notes
GetAll Y Y Y
GetPrimary Y Y Y
GetCurrent Y Y Y

System#

Feature Windows Linux Mac Notes
IsDarkMode Y

Window#

Y = Supported U = Untested

  • = Not available
Feature Windows Linux Mac Notes
Center Y Y Y
Focus Y Y
FullScreen Y Y Y
GetZoom Y Y Y Get current view scale
Height Y Y Y
Hide Y Y Y
Maximise Y Y Y
Minimise Y Y Y
RelativePosition Y Y Y
Screen Y Y Y Get screen for window
SetAlwaysOnTop Y Y Y
SetBackgroundColour Y Y Y https://github.com/MicrosoftEdge/WebView2Feedback/issues/1621#issuecomment-938234294
SetEnabled Y U - Set the window to be enabled/disabled
SetMaxSize Y Y Y
SetMinSize Y Y Y
SetRelativePosition Y Y Y
SetResizable Y Y Y
SetSize Y Y Y
SetTitle Y Y Y
SetZoom Y Y Y Set view scale
Show Y Y Y
Size Y Y Y
UnFullscreen Y Y Y
UnMaximise Y Y Y
UnMinimise Y Y Y
Width Y Y Y
ZoomIn Y Y Y Increase view scale
ZoomOut Y Y Y Decrease view scale
ZoomReset Y Y Y Reset view scale

Window Options#

A 'Y' in the table below indicates that the option has been tested and is applied when the window is created. An 'X' indicates that the option is not supported by the platform.

Feature Windows Linux Mac Notes
AlwaysOnTop Y Y
BackgroundColour Y Y
BackgroundType Acrylic seems to work but the others don't
CSS Y Y
DevToolsEnabled Y Y Y
DisableResize Y Y
EnableDragAndDrop Y
EnableFraudulentWebsiteWarnings
Focused Y Y
Frameless Y Y
FullscreenButtonEnabled Y
Height Y Y
Hidden Y Y
HTML Y Y
JS Y Y
Mac - -
MaxHeight Y Y
MaxWidth Y Y
MinHeight Y Y
MinWidth Y Y
Name Y Y
OpenInspectorOnStartup
StartState Y
Title Y Y
URL Y Y
Width Y Y
Windows Y - -
X Y Y
Y Y Y
Zoom
ZoomControlEnabled

Log#

To log or not to log? System logger vs custom logger.

Event Windows Linux Mac Notes
Default Application Menu Y Y Y

Tray Menus#

Feature Windows Linux Mac Notes
Icon Y Y Y Windows has default icons for light/dark mode & supports PNG or ICO.
Label - Y Y
Label (ANSI Codes) -
Menu Y Y Y

Methods#

Method Windows Linux Mac Notes
setLabel(label string) - Y Y
run() Y Y Y
setIcon(icon []byte) Y Y Y
setMenu(menu *Menu) Y Y Y
setIconPosition(position int) - Y Y
setTemplateIcon(icon []byte) - Y Y
destroy() Y Y Y
setDarkModeIcon(icon []byte) Y Y Y Darkmode isn't handled yet (linux)

Cross Platform Events#

Mapping native events to cross-platform events.

Event Windows Linux Mac Notes
WindowWillClose WindowWillClose
WindowDidClose
WindowDidResize
WindowDidHide
ApplicationWillTerminate

... Add more

Bindings Generation#

Working well.

Models Generation#

Working well.

Task file#

Contains a lot needed for development.

Theme#

Mode Windows Linux Mac Notes
Dark Y
Light Y
System Y

NSIS Installer#

TBD

Templates#

All templates are working.

Plugins#

Built-in plugin support:

Plugin Windows Linux Mac Notes
Browser Y Y
KV Store Y Y Y
Log Y Y Y
Single Instance Y Y
SQLite Y Y Y
Start at login Y Y
Server

TODO:

  • Ensure each plugin has a JS wrapper that can be injected into the window.

Packaging#

Windows Linux Mac Notes
Icon Generation Y Y
Icon Embedding Y Y
Info.plist - Y
NSIS Installer -
Mac bundle - Y
Windows exe Y -

Frameless Windows#

Feature Windows Linux Mac Notes
Resize Y Y
Drag Y Y Y Linux - can always drag with Meta+left mouse

Mac Specific#

  • Translucency

Mac Options#

Feature Default Notes
Backdrop MacBackdropNormal Standard solid window
DisableShadow false
TitleBar Standard window decorations by default
Appearance DefaultAppearance
InvisibleTitleBarHeight 0 Creates an invisible title bar for frameless windows
DisableShadow false Disables the window drop shadow

Windows Specific#

  • Translucency
  • Custom Themes

Windows Options#

Feature Default Notes
BackdropType Solid
DisableIcon false
Theme SystemDefault
CustomTheme nil
DisableFramelessWindowDecorations false
WindowMask nil Makes the window the contents of the bitmap

Linux Specific#

Implementation details for the functions utilized by the *_linux.go files are located in the following files:

  • linux_cgo.go: CGo implementation
  • linux_purego.go: PureGo implementation

CGO#

By default CGO is utilized to compile the Linux port. This prevents easy cross-compilation and so the PureGo implementation is also being simultaneously developed.

Purego#

The examples can be compiled using the following command:

CGO_ENABLED=0 go build -tags purego

Note: things are currently not working after the refactor