Skip to content

heath-toby/wayfinder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Wayfinder

An accessible GTK4 file manager built in Rust, designed for tiled window managers and screen reader users.

Wayfinder puts accessibility first. Every element is navigable with a keyboard, announced by Orca, and designed for users who may never touch a mouse.

Features

  • Full keyboard navigation with arrow keys, Tab cycling, type-ahead file search, and wrapping menus
  • Screen reader support via Orca with contextual announcements for every action
  • Sidebar with places, bookmarks (Ctrl+D), mounted volumes, and editable layout
  • Context menu with accessible roles, submenu navigation (Right/Left arrows), and dynamic actions
  • Custom actions loaded from .desktop files -- extract archives, compress files, GPG encrypt/decrypt, and more
  • Nautilus scripts support (~/.local/share/nautilus/scripts/)
  • FMA compatibility (FileManager-Actions .desktop files from /usr/share/file-manager/actions/)
  • Drag and drop between Wayfinder and other applications
  • Tab path completion in the location bar with ~ expansion
  • Volume management -- mount, unmount, and eject removable media from the sidebar
  • D-Bus FileManager1 service so other applications can open folders in Wayfinder
  • Copy/move with progress dialog including time estimates and cancellation
  • Replace/Skip/Rename conflict dialog when pasting over existing files
  • FUSE mount support -- rclone, sshfs, and other FUSE mounts work without freezing. Async file monitoring, trash fallback to permanent delete, cross-device directory move
  • Session restore -- all open windows and their directories are remembered on exit and restored on next launch
  • Font zoom -- Ctrl+Plus/Minus/0 to zoom in, out, or reset (50%–300%, persisted)
  • Breadcrumb path bar -- clickable path segments for quick navigation, F4 or header button to toggle
  • Recent files -- sidebar entry showing recently opened files
  • Batch rename -- find/replace across multiple selected files with live preview
  • Permission editor -- interactive chmod in the Properties dialog with checkboxes and octal entry
  • List and grid views switchable with Ctrl+1 / Ctrl+2
  • Bin integration -- move to bin, restore, empty, with accessible confirmation dialogs

Requirements

  • GTK 4.14 or later
  • Rust 1.70+
  • gvfs and udisks2 for volume management
  • Optional: bsdtar, zip, gpg, seahorse, zenity for context menu actions

Building

cargo build --release --bin wayfinder

The binary is at target/release/wayfinder. Copy it to ~/.local/bin/ or /usr/bin/.

To install the bundled context menu actions:

mkdir -p ~/.local/share/wayfinder/actions
cp data/actions/*.desktop ~/.local/share/wayfinder/actions/

Or for system-wide installation:

install -Dm755 target/release/wayfinder /usr/bin/wayfinder
install -Dm644 data/actions/*.desktop -t /usr/share/wayfinder/actions/

Usage

wayfinder                    # Restores previous session (or opens home directory)
wayfinder /path/to/folder    # Opens a specific directory

Keyboard shortcuts

Key Action
Enter Open file or folder
Backspace Go to parent directory
Alt+Left Go back
Alt+Right Go forward
Alt+Up Go to parent directory
Ctrl+L Focus location bar
Tab (in location bar) Path completion
Ctrl+D Bookmark current folder
Delete (on bookmark) Remove bookmark
Ctrl+Up/Down (on bookmark) Reorder bookmark
Ctrl+H Toggle hidden files
Ctrl+1 / Ctrl+2 Switch to grid / list view
F3 Toggle sidebar
F4 Toggle breadcrumb bar
Ctrl+F Search files
Ctrl+A Select all
Space Toggle selection on focused file
Shift+Space Range selection
Escape Clear selection
Ctrl+C Copy (all windows)
Ctrl+X Cut (all windows)
Ctrl+V Paste (all windows)
Ctrl+Shift+C Copy (this window only)
Ctrl+Shift+X Cut (this window only)
Ctrl+Shift+V Paste (this window only)
F2 Rename
Ctrl+Shift+F2 Batch rename (multiple selected files)
Ctrl+Shift+N New folder
Delete Move to Bin
Shift+Delete Delete permanently
Ctrl+Z Undo trash (restore last trashed)
Ctrl+N New window
Ctrl+` Open terminal in current directory
Ctrl+I Properties
Shift+F10 / Menu Context menu
Ctrl+Plus / Ctrl+= Zoom in
Ctrl+Minus Zoom out
Ctrl+0 Reset zoom
Ctrl+? Keyboard shortcuts window
Tab Cycle focus: file list → navigation buttons → location bar
Type any letters Jump to matching file

Custom actions

Wayfinder loads context menu actions from .desktop files in these directories (first match wins):

  1. ~/.local/share/wayfinder/actions/ -- user actions
  2. ~/.local/share/file-manager/actions/ -- FMA user actions
  3. /usr/share/file-manager/actions/ -- FMA system actions (apps install here)
  4. /usr/share/wayfinder/actions/ -- system Wayfinder actions
  5. /usr/local/share/wayfinder/actions/ -- system Wayfinder actions (alternate prefix)
  6. ~/.local/share/nautilus/scripts/ -- Nautilus scripts

Action file format:

[Desktop Entry]
Name=Extract Here
TryExec=bsdtar
Exec=sh -c 'cd "$(dirname "$1")" && bsdtar xf "$1"' _ %f
MimeType=application/zip;application/x-tar;

TryExec makes the action invisible if the command is not installed. MimeType restricts which files the action appears for (omit for all files). Exec supports %f (single file), %F (multiple files), %u (single URI), %U (multiple URIs).

D-Bus integration

Wayfinder registers as org.freedesktop.FileManager1. Other applications can open folders:

gdbus call --session \
  -d org.freedesktop.FileManager1 \
  -o /org/freedesktop/FileManager1 \
  -m org.freedesktop.FileManager1.ShowFolders \
  "['file:///home']" ""

Sidebar configuration

Right-click or press Menu on the sidebar to access "Edit Sidebar". Toggle places on or off, and reorder with Ctrl+Up/Down. Configuration is saved in ~/.config/wayfinder/sidebar.

Bookmarks are stored in ~/.config/gtk-3.0/bookmarks, compatible with Nautilus and other GTK file managers.

Architecture

Wayfinder is a pure Rust GTK4 application using the gtk-rs bindings. No libadwaita dependency.

src/
  app/           Application subclass, D-Bus startup
  window/        Main window, keyboard navigation, actions
  context_menu/  Accessible popover menu with submenu support
  sidebar/       Places, bookmarks, volumes, edit dialog
  file_model/    Directory loading, sorting, filtering, file monitor
  file_object/   GObject data model for file entries
  file_ops/      Copy, move, trash, delete with progress and conflict dialogs
  views/         List view (ColumnView) and grid view with drag sources
  actions/       Custom action loading and execution
  dbus/          org.freedesktop.FileManager1 service
  navigation/    Back/forward/up history stack
  search/        File name search/filter
  shortcuts/     Keyboard shortcut registration
  properties/    File properties and permission editor
  clipboard/     Global and window-local clipboard
  state.rs       Persistent state (window size, sort, zoom, sidebar, session restore)
  portal/        XDG Desktop Portal file chooser backend (separate binary)

Licence

GPL-3.0-or-later

About

Accessible GTK4 file manager for tiled window managers, with Orca screen reader support

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages