git.lucas.co / cce-browser
web browser (Servo)
git clone https://git.lucas.co/cce-browser.git

Cargo.toml (3.9K)

  1 [package]
  2 name = "cce-browser"
  3 version = "0.1.0"
  4 edition = "2021"
  5 # Only runs bindgen when the `wpe` feature is on, so a default build needs
  6 # no WPE headers and stays exactly as it was.
  7 build = "build.rs"
  8 
  9 [features]
 10 # WPE WebKit is the engine as of 2026-08-30 (see WPE-PORT.md). Default, so a
 11 # plain `cargo build` — including another session's sweep or reinstall —
 12 # ships the right engine instead of silently reverting to Servo, which is
 13 # exactly what happened two days after the port landed. Needs
 14 # `pacman -S wpewebkit`.
 15 default = ["wpe"]
 16 wpe = ["dep:rustix"]
 17 # The retired Servo backend, kept buildable for comparison:
 18 #   cargo build --release -p cce-browser --no-default-features --features servo
 19 servo = ["dep:servo", "dep:dpi", "dep:euclid", "dep:rustls", "dep:http"]
 20 
 21 [dependencies]
 22 cce-ui = { git = "https://github.com/lsgalante/cce-ui.git", rev = "af44d09a8050ab74bf9d3498530a31e4f911f99f", features = ["a11y"] }
 23 # For `cce-browser-open`: the instance client, from the GUI-free half of the
 24 # toolkit, so the launcher links no Wayland, Vulkan or WebKit.
 25 cce-core = { git = "https://github.com/lsgalante/cce-core.git", rev = "ea9d65d5e0ea4ec3849b65b7394817637d1d9f05" }
 26 calloop = "0.13.0"
 27 wayland-client = { version = "0.31", features = ["system"] }
 28 servo = { version = "0.4", optional = true }
 29 url = "2"
 30 http = { version = "1", optional = true }
 31 # Downloads on the Servo backend, and Raindrop bookmark sync on both. The same
 32 # version and features cce-map and cce-calendar build, so the shared target/
 33 # already holds it.
 34 reqwest = { version = "0.12", features = ["blocking"] }
 35 dpi = { version = "0.1", optional = true }
 36 euclid = { version = "0.22", optional = true }
 37 rustls = { version = "0.23", features = ["aws-lc-rs"], optional = true }
 38 log = "0.4"
 39 env_logger = "0.11"
 40 # Accounts from cce-secrets: the same Secret Service store cce-secrets
 41 # fronts (gnome-keyring here), read over D-Bus. The *blocking* API on a
 42 # worker thread, deliberately — an unlock prompt can block for as long as it
 43 # takes and must never be on the frame path — so no async runtime is pulled
 44 # into the browser: async-io, not tokio.
 45 secret-service = { version = "5", features = ["rt-async-io-crypto-rust"] }
 46 # The account watcher's page messages are JSON, and cce-ui parses config
 47 # through serde_json already — this only names the parser directly.
 48 serde_json = "1"
 49 # Naming a Secret Service object path (the handle a picked account's secret is
 50 # fetched by). Already in the tree under secret-service; this only names it.
 51 zbus = "5"
 52 # Only used by the `wpe` backend, to hold GLib's changing pollfd set in one
 53 # epoll fd that calloop can watch. Optional so a default build skips it.
 54 rustix = { version = "0.38", features = ["event"], optional = true }
 55 
 56 [build-dependencies]
 57 bindgen = "0.72"
 58 pkg-config = "0.3"
 59 
 60 # The desktop entry's Exec target: a forwarder that links (almost) nothing,
 61 # so the click-to-tab path skips the ~20ms of library loading the full
 62 # binary pays before main(). Explicit [[bin]] only for the name — src/bin/
 63 # autodiscovery would call it `open`. ccebuild installs it automatically
 64 # via cargo metadata; no Makefile involvement.
 65 [[bin]]
 66 name = "cce-browser-open"
 67 path = "src/bin/open.rs"
 68 
 69 # The WPE examples need the generated bindings, so they only build with
 70 # the feature — otherwise `cargo test` would try them on a default build.
 71 
 72 [[example]]
 73 name = "wpe_spike"
 74 required-features = ["wpe"]
 75 
 76 [[example]]
 77 name = "wpe_host"
 78 required-features = ["wpe"]
 79 
 80 [[example]]
 81 name = "wpe_input"
 82 required-features = ["wpe"]
 83 
 84 [[example]]
 85 name = "wpe_loop"
 86 required-features = ["wpe"]
 87 
 88 [[example]]
 89 name = "wpe_tabs"
 90 required-features = ["wpe"]
 91 
 92 [[example]]
 93 name = "wpe_dark"
 94 required-features = ["wpe"]
 95 
 96 [[example]]
 97 name = "wpe_paste"
 98 required-features = ["wpe"]
 99 
100 [[example]]
101 name = "wpe_ctx"
102 required-features = ["wpe"]
103 
104 [[example]]
105 name = "wpe_middle"
106 required-features = ["wpe"]
107 
108 [[example]]
109 name = "wpe_options"
110 required-features = ["wpe"]