Fika is a Wayland-focused Rust file manager. The UI mainline is the default
fika binary, with a Fika-specific wgpu shell over a reusable native Wayland
runtime; the previous UI runtimes have been removed from the source tree.
fikais the default run target and the only in-tree file-manager UI.wayland-client-runtimeis the reusable SCTK-based protocol, surface and event layer. Fika itself has no direct winit or SCTK dependency.wgpucomes from the official crates.io release.fika-corestays UI-neutral and owns filesystem/domain behavior.- Clipboard and DnD use Wayland
wl_data_device; rendering handles can be consumed by wgpu or direct Vulkan, and KDE blur keeps full region semantics. - Parented dialogs, popup positioning/repositioning, cursor-shape fallback and drag icons are owned by the reusable Wayland layer.
- Local and inter-application drag-and-drop share the same Wayland source/offer, MIME-pipe and drop lifecycle after the local press threshold; scene state only owns the pre-protocol gesture, preview and target policy.
- Portal and privileged-helper binaries remain separate integration pieces.
src/
lib.rs UI-neutral core exports
main.rs Wayland/wgpu shell entry point
platform.rs Fika adapter over the reusable runtime
platform_event_loop.rs Fika scheduling and event translation
platform_types.rs Fika-owned platform vocabulary
core.rs Core module re-exports
cli.rs Shared CLI parsing entry point
cli/
args.rs Manager/chooser argument parsing
core/ Directory, pane, operations, launcher,
Places, devices, thumbnails, trash, D-Bus
shell/ Extracted shell modules
bin/
fika-xdp-filechooser.rs XDG Desktop Portal FileChooser backend
fika-privileged-helper.rs D-Bus helper for privileged operations
crates/
wayland-client-runtime/ Reusable SCTK Wayland protocol/event crate
cargo run --bin fika -- --view compact /etc
cargo test --bin fika
scripts/check-rust-file-lines.shEvery Rust source file has a strict 1000-line limit. The line gate has no legacy exceptions and must pass before changes are merged.
Because default-run is fika, this also starts the current shell:
cargo run -- /etc- Pane state is routed by stable pane identity and stored through reusable pane containers, so split panes use the same state/projection/slot-pool path.
- Hot item views are retained and virtualized: visible-slot reuse, cached projection, cached text/icon atlas work, and explicit scroll metrics.
- The shell hot path uses MIME/icon role reuse by role + size, queued read-ahead, dirty-subrect atlas uploads, and tighter icon theme cache ownership.
- Core behavior follows Dolphin as the first reference for file-manager semantics, while the shell owns rendering, hit testing, DPI, input routing, overlays, and telemetry.
- docs/DEVICES_REFERENCE.md — devices and Places behavior.
- docs/NETWORK_REFERENCE.md — network locations behavior.
- docs/PERFORMANCE_ALIGNMENT.md — Dolphin-first performance reference policy.
- docs/TRASH_REFERENCE.md — trash behavior.