From 3784746ddb15a417196a60cd3965a460d450c978 Mon Sep 17 00:00:00 2001 From: Travis McLane Date: Tue, 2 May 2023 16:02:22 -0500 Subject: [PATCH] [linux] STATUS.md --- v3/STATUS.md | 308 ++++++++++++++++++++++++++------------------------- 1 file changed, 155 insertions(+), 153 deletions(-) diff --git a/v3/STATUS.md b/v3/STATUS.md index 3f1e3678..eee2f79e 100644 --- a/v3/STATUS.md +++ b/v3/STATUS.md @@ -6,74 +6,74 @@ Status of features in v3. Incomplete - please add as you see fit. Application interface methods -| Method | Windows | Linux | Mac | Notes | -|---------------------------------------------------------------|---------|-------|-----|-------| -| run() error | | | Y | | -| destroy() | | | Y | | -| setApplicationMenu(menu *Menu) | | | Y | | -| name() string | | | Y | | -| getCurrentWindowID() uint | | | Y | | -| showAboutDialog(name string, description string, icon []byte) | | | Y | | -| setIcon(icon []byte) | | | Y | | -| on(id uint) | | | Y | | -| dispatchOnMainThread(fn func()) | Y | | Y | | -| hide() | Y | | Y | | -| show() | Y | | Y | | -| getPrimaryScreen() (*Screen, error) | | | Y | | -| getScreens() ([]*Screen, error) | | | Y | | +| Method | Windows | Linux | Mac | Notes | +|---------------------------------------------------------------|---------|-------|-----|------------------------------| +| run() error | | Y | Y | | +| destroy() | | Y | Y | | +| setApplicationMenu(menu *Menu) | | | Y | | +| name() string | | | Y | | +| getCurrentWindowID() uint | | Y | Y | | +| showAboutDialog(name string, description string, icon []byte) | | Y | Y | [linux] No icon possible yet | +| setIcon(icon []byte) | | | Y | | +| on(id uint) | | | Y | | +| dispatchOnMainThread(fn func()) | Y | Y | Y | | +| hide() | Y | | Y | | +| show() | 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 | | -| close() | | | Y | | -| destroy() | | | Y | | -| execJS(js string) | | | Y | | -| focus() | Y | | | | -| forceReload() | | | Y | | -| fullscreen() | Y | | Y | | -| getScreen() (*Screen, error) | | | Y | | -| getZoom() float64 | | | Y | | -| height() int | Y | | Y | | -| hide() | Y | | Y | | -| isFullscreen() bool | Y | | Y | | -| isMaximised() bool | Y | | Y | | -| isMinimised() bool | Y | | Y | | -| maximise() | Y | | Y | | -| minimise() | Y | | Y | | -| nativeWindowHandle() (uintptr, error) | Y | | | | +| Method | Windows | Linux | Mac | Notes | +|----------------------------------------------------|---------|-------|-----|------------------------------------------| +| center() | Y | Y | Y | | +| close() | | Y | Y | | +| destroy() | | Y | Y | | +| execJS(js string) | | Y | Y | | +| focus() | Y | Y | | | +| forceReload() | | Y | Y | | +| fullscreen() | Y | Y | Y | | +| getScreen() (*Screen, error) | | 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 | | | | on(eventID uint) | | | Y | | | openContextMenu(menu *Menu, data *ContextMenuData) | | | Y | | -| position() (int, int) | Y | | Y | | -| reload() | | | Y | | -| run() | Y | | Y | | -| setAlwaysOnTop(alwaysOnTop bool) | Y | | Y | | -| setBackgroundColour(color RGBA) | Y | | Y | | -| setFrameless(bool) | | | Y | | -| setFullscreenButtonEnabled(enabled bool) | - | | Y | There is no fullscreen button in Windows | -| setHTML(html string) | | | Y | | -| setMaxSize(width, height int) | Y | | Y | | -| setMinSize(width, height int) | Y | | Y | | -| setPosition(x int, y int) | Y | | Y | | -| setResizable(resizable bool) | Y | | Y | | -| setSize(width, height int) | Y | | Y | | -| setTitle(title string) | Y | | Y | | -| setURL(url string) | | | Y | | -| setZoom(zoom float64) | | | Y | | -| show() | Y | | Y | | -| size() (int, int) | Y | | Y | | -| toggleDevTools() | | | Y | | -| unfullscreen() | Y | | Y | | -| unmaximise() | Y | | Y | | -| unminimise() | Y | | Y | | -| width() int | Y | | Y | | -| zoom() | | | Y | | -| zoomIn() | | | Y | | -| zoomOut() | | | Y | | -| zoomReset() | | | Y | | +| position() (int, int) | Y | Y | Y | | +| reload() | | Y | Y | | +| run() | Y | Y | Y | | +| setAlwaysOnTop(alwaysOnTop bool) | Y | Y | Y | | +| setBackgroundColour(color RGBA) | Y | Y | Y | | +| setFrameless(bool) | | Y | Y | | +| setFullscreenButtonEnabled(enabled bool) | - | Y | Y | There is no fullscreen button in Windows | +| setHTML(html string) | | Y | Y | | +| setMaxSize(width, height int) | Y | Y | Y | | +| setMinSize(width, height int) | Y | Y | Y | | +| setPosition(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 | | +| setZoom(zoom float64) | | Y | Y | | +| show() | Y | Y | Y | | +| size() (int, int) | Y | Y | Y | | +| toggleDevTools() | | 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 | | +| zoomOut() | | Y | Y | | +| zoomReset() | | Y | Y | | ## Runtime @@ -81,7 +81,7 @@ Webview Window Interface Methods | Feature | Windows | Linux | Mac | Notes | |---------|---------|-------|-----|-------| -| Quit | | | Y | | +| Quit | | Y | Y | | | Hide | Y | | Y | | | Show | Y | | Y | | @@ -113,79 +113,80 @@ Webview Window Interface Methods | Feature | Windows | Linux | Mac | Notes | |------------|---------|-------|-----|-------| -| GetAll | Y | | Y | | -| GetPrimary | | | Y | | -| GetCurrent | | | Y | | +| GetAll | | Y | Y | | +| GetPrimary | | Y | Y | | +| GetCurrent | | Y | Y | | ### Window | Feature | Windows | Linux | Mac | Notes | |---------------------|---------|-------|-----|--------------------------------------------------------------------------------------| -| SetTitle | Y | | Y | | -| SetSize | Y | | Y | | -| Size | Y | | Y | | -| SetPosition | Y | | Y | | -| Position | Y | | Y | | -| Focus | Y | | | | -| FullScreen | Y | | Y | | -| UnFullscreen | Y | | Y | | -| Minimise | Y | | Y | | -| UnMinimise | Y | | Y | | -| Maximise | Y | | Y | | -| UnMaximise | Y | | Y | | -| Show | Y | | Y | | -| Hide | Y | | Y | | -| Center | Y | | Y | | -| SetBackgroundColour | Y | | Y | https://github.com/MicrosoftEdge/WebView2Feedback/issues/1621#issuecomment-938234294 | -| SetAlwaysOnTop | Y | | Y | | -| SetResizable | Y | | Y | | -| SetMinSize | Y | | Y | | -| SetMaxSize | Y | | Y | | -| Width | Y | | Y | | -| Height | Y | | Y | | -| ZoomIn | | | Y | Increase view scale | -| ZoomOut | | | Y | Decrease view scale | -| ZoomReset | | | Y | Reset view scale | -| GetZoom | | | Y | Get current view scale | -| SetZoom | | | Y | Set view scale | -| Screen | | | Y | Get screen for window | +| | | | | | +| SetTitle | Y | Y | Y | | +| SetSize | Y | Y | Y | | +| Size | Y | Y | Y | | +| SetPosition | Y | Y | Y | | +| Position | Y | Y | Y | | +| Focus | Y | Y | | | +| FullScreen | Y | Y | Y | | +| UnFullscreen | Y | Y | Y | | +| Minimise | Y | Y | Y | | +| UnMinimise | Y | Y | Y | | +| Maximise | Y | Y | Y | | +| UnMaximise | Y | Y | Y | | +| Show | Y | Y | Y | | +| Hide | Y | Y | Y | | +| Center | Y | Y | Y | | +| SetBackgroundColour | Y | Y | Y | https://github.com/MicrosoftEdge/WebView2Feedback/issues/1621#issuecomment-938234294 | +| SetAlwaysOnTop | Y | Y | Y | | +| SetResizable | Y | Y | Y | | +| SetMinSize | Y | Y | Y | | +| SetMaxSize | Y | Y | Y | | +| Width | Y | Y | Y | | +| Height | Y | Y | Y | | +| ZoomIn | | Y | Y | Increase view scale | +| ZoomOut | | Y | Y | Decrease view scale | +| ZoomReset | | Y | Y | Reset view scale | +| GetZoom | | Y | Y | Get current view scale | +| SetZoom | | Y | Y | Set view scale | +| Screen | | Y | Y | Get screen for window | ### 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 | -|---------------------------------|---------|-------|-----|--------------------------------------------| -| Name | | | | | -| Title | Y | | | | -| Width | Y | | | | -| Height | Y | | | | -| AlwaysOnTop | Y | | | | -| URL | | | | | -| DisableResize | Y | | | | -| Frameless | | | | | -| MinWidth | Y | | | | -| MinHeight | Y | | | | -| MaxWidth | Y | | | | -| MaxHeight | Y | | | | -| StartState | Y | | | | -| Mac | - | - | | | -| BackgroundType | | | | Acrylic seems to work but the others don't | -| BackgroundColour | Y | | | | -| HTML | | | | | -| JS | | | | | -| CSS | | | | | -| X | | | | | -| Y | | | | | -| HideOnClose | | | | | -| FullscreenButtonEnabled | | | | | -| Hidden | Y | | | | -| EnableFraudulentWebsiteWarnings | | | | | -| Zoom | | | | | -| EnableDragAndDrop | | | | | -| Windows | Y | - | - | | -| Focused | Y | | | | +| Feature | Windows | Linux | Mac | Notes | +|---------------------------------|---------|-------|-----|---------------------------------------------------| +| Name | | | | | +| Title | Y | | | | +| Width | Y | Y | | | +| Height | Y | Y | | | +| AlwaysOnTop | Y | Y | | | +| URL | | | | | +| DisableResize | Y | Y | | | +| Frameless | | Y | | | +| MinWidth | Y | Y | | | +| MinHeight | Y | Y | | | +| MaxWidth | Y | Y | | | +| MaxHeight | Y | Y | | | +| StartState | Y | | | | +| Mac | - | - | | | +| BackgroundType | | | | Acrylic seems to work but the others don't | +| BackgroundColour | Y | Y | | | +| HTML | | Y | | | +| JS | | Y | | | +| CSS | | Y | | | +| X | | Y | | | +| Y | | Y | | | +| HideOnClose | | Y | | | +| FullscreenButtonEnabled | | ? | | [linux] How is this different from DisableResize? | +| Hidden | Y | | | | +| EnableFraudulentWebsiteWarnings | | | | | +| Zoom | | Y | | | +| EnableDragAndDrop | | Y | | | +| Windows | Y | - | - | | +| Focused | Y | | | | ### Log @@ -195,7 +196,7 @@ To log or not to log? System logger vs custom logger. | Event | Windows | Linux | Mac | Notes | |--------------------------|---------|-------|-----|-------| -| Default Application Menu | | | Y | | +| Default Application Menu | | Y | Y | | ## Tray Menus @@ -255,30 +256,31 @@ Built-in plugin support: | Plugin | Windows | Linux | Mac | Notes | |-----------------|---------|-------|-----|-------| | Browser | | | Y | | -| KV Store | | | Y | | -| Log | | | Y | | +| KV Store | | Y | Y | | +| Log | | Y | Y | | | Single Instance | | | Y | | -| SQLite | | | Y | | +| SQLite | | Y | Y | | | Start at login | | | Y | | | Server | | | | | ## Packaging -| | Windows | Linux | Mac | Notes | -|-----------------|---------|-------|-----|-------| -| Icon Generation | | | Y | | -| Icon Embedding | | | Y | | -| Info.plist | | | Y | | -| NSIS Installer | | | - | | -| Mac bundle | | | Y | | -| Windows exe | | | - | | +| | Windows | Linux | Mac | Notes | +|-----------------|---------|-------|-----|-------| +| Icon Generation | | | Y | | +| Icon Embedding | | | Y | | +| Info.plist | | | Y | | +| NSIS Installer | | | - | | +| Mac bundle | | | Y | | +| Windows exe | | | - | | ## Frameless Windows -| Feature | Windows | Linux | Mac | Notes | -|---------|---------|-------|-----|-------| -| Resize | | | | | -| Drag | | | | | +| Feature | Windows | Linux | Mac | Notes | +|---------|---------|-------|-----|-----------------------------------------------| +| Resize | | | | | +| Drag | | Y | | Linux - can always drag with `Alt`+left mouse | + ## Mac Specific @@ -300,20 +302,20 @@ Built-in plugin support: | DisableFramelessWindowDecorations | | | | WindowMask | nil | Makes the window the contents of the bitmap | - // Select the type of translucent backdrop. Requires Windows 11 22621 or later. - BackdropType BackdropType - // Disable the icon in the titlebar - DisableIcon bool - // Theme. Defaults to SystemDefault which will use whatever the system theme is. The application will follow system theme changes. - Theme Theme - // Custom colours for dark/light mode - CustomTheme *ThemeSettings + // Select the type of translucent backdrop. Requires Windows 11 22621 or later. + BackdropType BackdropType + // Disable the icon in the titlebar + DisableIcon bool + // Theme. Defaults to SystemDefault which will use whatever the system theme is. The application will follow system theme changes. + Theme Theme + // Custom colours for dark/light mode + CustomTheme *ThemeSettings - // Disable all window decorations in Frameless mode, which means no "Aero Shadow" and no "Rounded Corner" will be shown. - // "Rounded Corners" are only available on Windows 11. - DisableFramelessWindowDecorations bool + // Disable all window decorations in Frameless mode, which means no "Aero Shadow" and no "Rounded Corner" will be shown. + // "Rounded Corners" are only available on Windows 11. + DisableFramelessWindowDecorations bool - // WindowMask is used to set the window shape. Use a PNG with an alpha channel to create a custom shape. - WindowMask []byte + // WindowMask is used to set the window shape. Use a PNG with an alpha channel to create a custom shape. + WindowMask []byte ## Linux Specific