๐Ÿ“ฆ tauri-apps / cef-rs

โ˜… 245 stars โ‘‚ 40 forks ๐Ÿ‘ 245 watching โš–๏ธ Apache License 2.0
๐Ÿ“ฅ Clone https://github.com/tauri-apps/cef-rs.git
HTTPS git clone https://github.com/tauri-apps/cef-rs.git
SSH git clone git@github.com:tauri-apps/cef-rs.git
CLI gh repo clone tauri-apps/cef-rs
Bill Avery Bill Avery Merge pull request #327 from tauri-apps/release-plz-2026-01-13T16-02-53Z 00ed6c3 6 days ago ๐Ÿ“ History
๐Ÿ“‚ dev View all commits โ†’
๐Ÿ“ .github
๐Ÿ“ cef
๐Ÿ“ download-cef
๐Ÿ“ examples
๐Ÿ“ export-cef-dir
๐Ÿ“ get-latest
๐Ÿ“ sys
๐Ÿ“ update-bindings
๐Ÿ“„ .gitignore
๐Ÿ“„ Cargo.toml
๐Ÿ“„ CODE_OF_CONDUCT.md
๐Ÿ“„ CONTRIBUTING.md
๐Ÿ“„ LICENSE-APACHE
๐Ÿ“„ LICENSE-MIT
๐Ÿ“„ README.md
๐Ÿ“„ release-plz.toml
๐Ÿ“„ renovate.json
๐Ÿ“„ SECURITY.md
๐Ÿ“„ README.md

cef-rs

Use CEF in Rust.

Supported Targets

TargetLinuxmacOSWindows
x86_64โœ…โœ…โœ…
ARM64โœ…โœ…โœ…

Usage

Install Shared CEF Binaries

This step is optional, but it will make all other builds of the cef crate much faster. If you don't do this, the cef-dll-sys crate build.rs script will download and extract the same files under its OUT_DIR directory. You should repeat this step each time you upgrade to a new version of the cef crate.

Linux or macOS:

cargo run -p export-cef-dir -- --force $HOME/.local/share/cef

Windows (using PowerShell)

cargo run -p export-cef-dir -- --force $env:USERPROFILE/.local/share/cef

Set Environment Variables

Linux

export CEF_PATH="$HOME/.local/share/cef"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$CEF_PATH"

macOS

export CEF_PATH="$HOME/.local/share/cef"
export DYLD_FALLBACK_LIBRARY_PATH="$DYLD_FALLBACK_LIBRARY_PATH:$CEF_PATH:$CEF_PATH/Chromium Embedded Framework.framework/Libraries"

Windows (using PowerShell)

$env:CEF_PATH="$env:USERPROFILE/.local/share/cef"
$env:PATH="$env:PATH;$env:CEF_PATH"

Run the cefsimple Example

This command should work with each platform:

cargo run --bin bundle-cef-app -- cefsimple -o target/bundle

You can configure the name of the macOS helper in the Cargo.toml file, as well as a resource directory that will be copied into the bundle in a platform-appropriate location:

[package.metadata.cef.bundle]
helper_name = "cefsimple_helper"
resources_path = "resources"

Linux

There's an extra --release flag to build a much smaller bundle on Linux:

cargo run --bin bundle-cef-app -- cefsimple -o target/bundle --release
./target/bundle/cefsimple.exe

macOS

The macOS utility creates an application bundle directory at the target location, you can run it with the open command:

cargo run --bin bundle-cef-app -- cefsimple -o target/bundle
open target/bundle/cefsimple.app

On macOS, the bundle-cef-app utility also supports several additional bundle options, most of which default to the name of the application (e.g. cefsimple):

Usage: bundle-cef-app [OPTIONS] <NAME>

Arguments:
  <NAME>

Options:
  -o, --output <OUTPUT>
  -i, --identifier <IDENTIFIER>
  -d, --display-name <DISPLAY_NAME>
  -r, --region <REGION>              [default: English]
  -v, --version <VERSION>            [default: 1.0.0]
  -h, --help                         Print help

Windows (using PowerShell)

The Windows utility supports the --release flag, but it makes much less difference in the binary size than on Linux. It also does not copy the resources directory to the bundle, because the preferred mechanism on Windows is to link binary resources directly into the executable.

However, the utility will emit an executable manifest file, and if the sandbox feature is enabled, it will build the DLL (cdylib) target instead of the executable (bin) target, and copy that with a renamed bootstrap.exe file to the bundle directory, so you can run it from there directly:

cargo run --bin bundle-cef-app -- cefsimple -o ./target/bundle
./target/bundle/cefsimple.exe

Contributing

Please see CONTRIBUTING.md for details.