Skip to content

elel-code/fika

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,247 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fika

License: MIT Rust Edition

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.

中文版 / Chinese

Current Runtime

  • fika is the default run target and the only in-tree file-manager UI.
  • wayland-client-runtime is the reusable SCTK-based protocol, surface and event layer. Fika itself has no direct winit or SCTK dependency.
  • wgpu comes from the official crates.io release.
  • fika-core stays 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.

Source Layout

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

Build And Run

cargo run --bin fika -- --view compact /etc
cargo test --bin fika
scripts/check-rust-file-lines.sh

Every 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

Architecture Notes

  • 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.

Reference Docs

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages