Skip to content

Repository files navigation

desktop_webview

Native desktop webview host for elixir-desktop.

The host is a stand-alone native binary per platform. It listens on localhost TCP and speaks JSON-RPC 2.0 (length-prefixed frames). The Elixir package implements Desktop.Platform behaviours and connects as the client. In packaged apps the host spawns the BEAM release; in development an existing BEAM can launch the host with --edw-no-beam.

Platform Engine Status
macOS WKWebView Primary — see docs/status/macos.md
Windows WebView2 Done — docs/status/windows.md
Linux WebKitGTK Usable — docs/status/linux.md

HTML <input type="file"> support and file-manager drag-and-drop are required on all three hosts. Finder, Explorer, and Linux file-manager drops must reach the page as normal web drag events with a usable DataTransfer.files list. The shared E2E checks the fixture's DOM contract; native picker and file-drop checks remain manual. These features are separate from the dialog.choose_file RPC. See docs/protocol.md.

Quick start (development)

# mix.exs
{:desktop_webview, "~> 0.1"}

# config/config.exs
config :desktop, :backend, DesktopWebview.Backend
config :desktop, :menu_adapter, DesktopWebview.Menu.Adapter

Build the native host for your OS (or use a vendored/CI binary):

./scripts/build_macos.sh   # macOS → priv/native/macos/DesktopWebView
./scripts/build_linux.sh   # Linux → priv/native/linux/DesktopWebView
mix test          # unit
mix test.e2e      # needs host binary; starts with --edw-test-rpc

Packaged layout (macOS)

MyApp.app/
  Contents/MacOS/DesktopWebView
  Contents/Resources/DesktopWebView.ini   # optional
  Contents/Resources/beam/bin/<app>

Host flags use the --edw-* prefix; all other argv is forwarded to the BEAM app. See docs/packaging.md.

Documentation

License

MIT

About

Standalone Webview Kiosk for elixir-desktop

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages