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"]