Skip to content

elel-code/fika

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

170 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fika

Fika is a lightweight Rust + Slint file manager prototype aimed at modern Wayland desktops. The current implementation focuses on a small, usable core:

  • browse local directories
  • jump to home, parent, filesystem root, and directory history
  • refresh the current directory, including debounced directory monitoring
  • switch between light and dark UI modes
  • resize the window with guarded minimum dimensions to avoid content overflow
  • open files through the desktop default application without shelling out to xdg-open
  • run file operations asynchronously, including copy, move, link, trash, rename, conflict handling, and one-step undo
  • run as a lightweight chooser with --chooser, and as an experimental xdg-desktop-portal FileChooser backend
cargo run
cargo run -- --chooser ~/Downloads
cargo run -- --diagnose-devices

Packaged desktop integration installs D-Bus, Polkit, and portal metadata in addition to the binaries. The metadata can be staged and checked without root:

DESTDIR=/tmp/fika-root PREFIX=/usr BINDIR=/usr/lib/fika scripts/install-data.sh
DESTDIR=/tmp/fika-root PREFIX=/usr BINDIR=/usr/lib/fika \
  scripts/check-runtime-integration.sh --metadata-only

After a real install, run scripts/check-runtime-integration.sh to verify the installed system-bus helper, Polkit action, and portal backend metadata. The script also prints a runtime context summary for distro/desktop comparison and reports which portals.conf file currently controls FileChooser backend selection. Add --activate-system-helper to confirm D-Bus activation of the privileged helper without invoking a privileged file-operation method.

The Fika portal backend is independent of GNOME/KDE/COSMIC/GTK portal backends. Installing fika.portal only registers the backend; it does not make Fika the active FileChooser. To validate the backend, opt in through xdg-desktop-portal configuration, for example by copying the shape shown in docs/examples/fika-portals.conf into an appropriate user or system portals.conf.

For Devices sidebar validation without starting the GUI, run fika --diagnose-devices. It prints the same Rust-discovered device rows and Mount/Unmount/Eject capabilities used by the UI, without performing any device operation.

The UI is defined in ui/app.slint and compiled from build.rs with slint-build. Both slint and slint-build are pinned to 1.16.1. Default application launching is implemented locally: Fika guesses the MIME type, reads XDG mimeapps.list files, resolves the matching .desktop file, and expands its Exec= command.

In chooser mode, selecting an item and pressing Choose prints the selected path to stdout and exits. The fika-xdp-filechooser binary exposes the experimental org.freedesktop.impl.portal.FileChooser backend and launches fika --chooser as its UI frontend.

Architecture Notes

The GUI process is intentionally non-privileged. Protected operations go through a constrained D-Bus helper on the system bus; the helper performs per-method Polkit checks before running fixed file operations or protected external-editor writeback.

Detailed planning lives in:

  • docs/DESIGN.md for architecture and subsystem design
  • docs/TODO.md for the implementation roadmap and acceptance criteria

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors