strata
A fast, keyboard-first file manager for Linux
01README
Strata
Navigate every layer.
Strata is an experimental, keyboard-first file manager for Linux. It is designed primarily for Omarchy while remaining portable to other modern Linux environments.
Browser modes
List

Explorer

Grid

Vision
- Miller-column navigation
- Folder peeking on hover
- Ultra-fast search
- Rich file previews
- Collapsible sidebar
- Compact and airy density modes
- List, Explorer, and Grid views
- Omarchy and system theming
- Complete keyboard navigation
Documentation
- Product requirements — product specification
- Roadmap — milestone sequence and exit criteria
- Work breakdown — actionable project checklist
- Architecture principles — boundaries and customization strategy
- Prototype design reference — visual tokens, motion, and interaction baseline
- Themes — custom theme schema and Omarchy Quattro integration
- Unsafe code policy — exception requirements and current inventory
- Initial technical direction — original technical assessment
Technology
- Rust
- GTK4
- GIO
- Native Wayland support
Install a precompiled release
Strata is not yet available through Arch's package repositories. Download the archive and matching .sha256 file for your CPU from the latest release:
x86_64-unknown-linux-gnufor Intel and AMD PCsaarch64-unknown-linux-gnufor ARM64 PCs
Install the runtime libraries and optional video preview tools on Arch or Omarchy:
sudo pacman -S --needed bubblewrap ffmpeg ffmpegthumbnailer fontconfig gst-libav gst-plugins-good gtk4 gtksourceview5 poppler-glib
Then verify, extract, and install the downloaded archive (replace the filename with the release you downloaded). The gh attestation check verifies the archive's signed GitHub Actions provenance:
cd ~/Downloads
sha256sum --check strata-<version>-<target>.tar.gz.sha256
gh attestation verify strata-<version>-<target>.tar.gz --repo LGSE/strata
tar -xzf strata-<version>-<target>.tar.gz
install -Dm755 strata-<version>-<target>/strata ~/.local/bin/strata
Each archive also contains SOURCE_COMMIT, which records the exact commit used for the build.
Ensure ~/.local/bin is on PATH, then run strata. Image thumbnails work without ffmpegthumbnailer; when ffmpegthumbnailer or ffmpeg is unavailable, video files fall back to their video icon or an unavailable preview. Bubblewrap is required: preview parsing fails closed rather than running untrusted native parsers without a sandbox. See Preview sandbox for the providers, permissions, and resource limits.
Optional RAW photo thumbnails
Strata recognizes common camera RAW formats, including DNG, CR2/CR3, NEF, ARW, RAF, ORF, RW2, PEF, and X3F. RAW decoding is provided by tools already installed on the host rather than bundled into Strata. It tries, in order:
- an installed GDK Pixbuf loader;
- ImageMagick (
magickorconvert); and - the LibRaw-compatible
dcraw_emuordcrawthumbnail extractor.
On Arch or Omarchy, the recommended setup is:
sudo pacman -S --needed imagemagick libraw
Available formats depend on how those host packages were built and on whether a particular camera model is supported. Unsupported or malformed RAW files continue to display the normal image icon.
Desktop integration
Create a per-user desktop entry so launchers and xdg-open can discover Strata:
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/io.github.lgse.Strata.desktop <<EOF
[Desktop Entry]
Name=Strata
Comment=Navigate every layer
Exec=$HOME/.local/bin/strata %U
Icon=system-file-manager
Terminal=false
Type=Application
Categories=Utility;FileManager;
MimeType=inode/directory;
StartupNotify=true
EOF
update-desktop-database ~/.local/share/applications
xdg-mime default io.github.lgse.Strata.desktop inode/directory
Confirm the association with:
xdg-mime query default inode/directory
It should print io.github.lgse.Strata.desktop.
Make Strata the Omarchy file manager
The XDG association above makes folders opened by desktop applications use Strata. To also replace Omarchy's Super+Shift+F shortcut, use the instructions for your Omarchy generation.
Omarchy Quattro
Add these overrides to ~/.config/hypr/bindings.lua:
hl.unbind("SUPER + SHIFT + F")
hl.unbind("SUPER + ALT + SHIFT + F")
o.bind("SUPER + SHIFT + F", "File manager", "uwsm app -- strata")
o.bind("SUPER + ALT + SHIFT + F", "File manager (cwd)",
"uwsm app -- strata \"$(omarchy-cmd-terminal-cwd)\"")
Apply and validate the configuration:
hyprctl reload
hyprctl configerrors
Omarchy 3
In ~/.config/hypr/bindings.conf, replace the existing Nautilus file-manager binding with:
bindd = SUPER SHIFT, F, File manager, exec, uwsm app -- strata
Optionally add a shortcut that opens the active terminal's working directory:
bindd = SUPER SHIFT ALT, F, File manager (cwd), exec, uwsm app -- strata "$(omarchy-cmd-terminal-cwd)"
Then run hyprctl reload and hyprctl configerrors.
Technical highlights
Strata is built around a small application model rather than placing filesystem logic in GTK widgets:
- Native paths stay native. Invalid UTF-8 names retain their original Linux path bytes and are converted only for display.
- Navigation and peeking are separate. Committed Miller columns participate in history; temporary hover peeks never mutate it.
- Filesystem work is cancellable. Directory requests carry generations, stream bounded batches, and reject stale results after rapid navigation.
- Large directories stay virtualized. Rows render through GTK list models and are exercised against deterministic fixtures containing up to 100,000 entries.
- Monitoring is incremental. Coalesced create, remove, move, and metadata events update sorted columns in place while ambiguous events safely fall back to a rescan.
- Selection survives change. Sorting, monitoring, and reloads preserve selection by native location rather than fragile row index.
- Motion avoids layout churn. Columns reserve their final width before animating, and horizontal reveal targets remain stable during deep navigation.
- Failure is explicit. Loading, empty, unavailable, and error states are distinct, with retry support that does not rewrite navigation history.
The architectural boundaries and performance workflow are documented in docs/architecture.md and docs/performance-baseline.md.
Development
Requirements
- The latest stable Rust release
- GTK 4.12 or newer
- GtkSourceView 5
- Poppler GLib
- Fontconfig
- A C toolchain and
pkg-config
On Arch Linux:
sudo pacman -S --needed base-devel rust bubblewrap fontconfig gtk4 gtksourceview5 poppler-glib
Run Strata:
cargo run
For development, run Strata in auto-reload mode. The app rebuilds and restarts
when code or bundled assets change. On Arch, Debian/Ubuntu, and Fedora,
start-dev installs missing native dependencies (prompting for sudo) and
installs cargo-watch automatically when needed:
make start-dev
Run the standard quality checks:
./scripts/check.sh
The script always runs formatting, compilation, Clippy, and tests. It also runs dependency-policy and spelling checks when cargo-deny and typos are installed. CI runs the complete suite on the latest stable Rust release.
Creating a release
Maintainers can run the Release workflow from GitHub's Actions tab on the default branch and choose a patch, minor, or major version bump. After both Linux targets build successfully, the workflow:
- commits the new version to
Cargo.tomlandCargo.lock; - creates an annotated
vX.Y.Ztag; and - publishes x86-64 and ARM64 archives, SHA-256 checksum files, signed build-provenance attestations, and generated release notes.
The final publishing job uses the protected release GitHub environment and is the only job granted write permissions. Repository administrators must configure that environment with required reviewers; prevent self-review when a separate maintainer is available to approve releases. The release workflow stops without publishing if the default branch changes while binaries are building. Run it again from the new head in that case.
Bundled assets
Strata includes a curated Lucide icon subset and the regular JetBrains Mono variable font. See third-party notices for versions, modifications, and complete attribution.
Status
Strata is at the technical-spike stage. The first objective is to validate responsive Miller columns, cancellable hover peeking, incremental directory enumeration, and previews in very large directories.
License
Strata is licensed under the GNU General Public License v3.0 or later.