Optimize shell startup and include demo artwork
This commit is contained in:
1 parent
2f8ba908a5
commit
956c739940
3 files changed
+20
-6
No files matched your search
@@ -159,9 +159,9 @@ The shell provides an edge-to-edge libcosmic menu bar backed
|
|||||||
by the private shell-control connection. Build and preview it nested with:
|
by the private shell-control connection. Build and preview it nested with:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cargo build -p ferese -p ferese-shell
|
cargo build --release -p ferese -p ferese-shell
|
||||||
target/debug/ferese --backend nested --grant-effects --grant-shell-control -- \
|
target/release/ferese --backend nested --grant-effects --grant-shell-control -- \
|
||||||
target/debug/ferese-shell
|
target/release/ferese-shell
|
||||||
```
|
```
|
||||||
|
|
||||||
The Ferese mark enters overview, where workspace indicators become available.
|
The Ferese mark enters overview, where workspace indicators become available.
|
||||||
@@ -171,6 +171,12 @@ shadow. Window spacing uses the workspace outer gap; `top_bar_window_gap` under
|
|||||||
`[theme.geometry]` adds optional extra space (default 0). Solid and translucent
|
`[theme.geometry]` adds optional extra space (default 0). Solid and translucent
|
||||||
shell surfaces also omit outlines. The dark startup fallback matches the material palette.
|
shell surfaces also omit outlines. The dark startup fallback matches the material palette.
|
||||||
|
|
||||||
|
The shell decodes wallpaper in parallel with startup and prefers the lightweight
|
||||||
|
software renderer, with GPU rendering available as a fallback. Glass effects
|
||||||
|
still run on the compositor GPU. Set `ICED_BACKEND=wgpu` to explicitly use GPU
|
||||||
|
rendering for shell content. Use release builds when evaluating startup and
|
||||||
|
animation performance; debug image processing is considerably slower.
|
||||||
|
|
||||||
Keyboard and direct-session touchpad settings are applied at startup:
|
Keyboard and direct-session touchpad settings are applied at startup:
|
||||||
|
|
||||||
```toml
|
```toml
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ rust-version = "1.93"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
ferese-protocols = { path = "../../crates/ferese-protocols", default-features = false, features = ["client"] }
|
ferese-protocols = { path = "../../crates/ferese-protocols", default-features = false, features = ["client"] }
|
||||||
jiff.workspace = true
|
jiff.workspace = true
|
||||||
# Wallpaper resampling must not block the bar on iced's shared UI thread.
|
# Keep GPU rendering available as a fallback/override. The shell defaults to
|
||||||
# Keep tiny-skia available as libcosmic's fallback, but prefer GPU rendering.
|
# tiny-skia to avoid a second GPU initialization during desktop startup.
|
||||||
libcosmic = { workspace = true, features = ["wgpu"] }
|
libcosmic = { workspace = true, features = ["wgpu"] }
|
||||||
serde.workspace = true
|
serde.workspace = true
|
||||||
toml.workspace = true
|
toml.workspace = true
|
||||||
|
|||||||
@@ -79,6 +79,13 @@ impl From<ShellTheme> for BarMetrics {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn main() -> cosmic::iced::Result {
|
fn main() -> cosmic::iced::Result {
|
||||||
|
// Small shell surfaces do not need a second GPU device and shader setup.
|
||||||
|
// Keep wgpu as a fallback and honor an explicit renderer preference.
|
||||||
|
if std::env::var_os("ICED_BACKEND").is_none() {
|
||||||
|
// SAFETY: this is the process entry point, before any worker or
|
||||||
|
// toolkit threads are started.
|
||||||
|
unsafe { std::env::set_var("ICED_BACKEND", "tiny-skia,wgpu") };
|
||||||
|
}
|
||||||
let config = config::load();
|
let config = config::load();
|
||||||
// Decode alongside toolkit/GPU initialization, never during a UI draw.
|
// Decode alongside toolkit/GPU initialization, never during a UI draw.
|
||||||
let wallpaper = config.wallpaper.path.clone().map(|path| {
|
let wallpaper = config.wallpaper.path.clone().map(|path| {
|
||||||
@@ -227,7 +234,8 @@ impl cosmic::Application for FereseShell {
|
|||||||
Some(Box::new(Self::view_layer)),
|
Some(Box::new(Self::view_layer)),
|
||||||
);
|
);
|
||||||
|
|
||||||
let tasks = [wallpaper_action, bar_action]
|
// Submit the small interactive surface before the full-screen image.
|
||||||
|
let tasks = [bar_action, wallpaper_action]
|
||||||
.map(cosmic::Action::Surface)
|
.map(cosmic::Action::Surface)
|
||||||
.map(cosmic::task::message);
|
.map(cosmic::task::message);
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user