Skip to content

A modern Rust library and CLI tool for managing macOS Finder sidebar favourites.

License

Notifications You must be signed in to change notification settings

screwyprof/favkit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FavKit

Build Status codecov Minimum Rust Version License: MIT

A modern Rust library and CLI tool for managing macOS Finder favorites. This project is a modern replacement for the abandoned mysides tool.

Installation

  1. Download the latest release from the releases page
  2. Unzip the downloaded file:
    unzip favkit-macos.zip
  3. Remove quarantine:
    sudo xattr -d com.apple.quarantine favkit
  4. Move to a directory in your PATH (optional):
    sudo mv favkit /usr/local/bin/

Project Goals

  1. Primary Goal: Create a maintained alternative to mysides for managing macOS Finder favorites
  2. Learning: Serve as a Rust programming kata exploring:
    • Clean Architecture principles
    • Outside-In TDD (London School)
    • Domain-Driven Design
    • Modern development practices with nix + direnv

Status: 🚧 Under Development

This project is currently in alpha stage. Progress and next steps:

Completed:

  • Basic viewing of Finder favorites
  • Proper display names for special locations:
    • AirDrop: Shows as "AirDrop" without exposing internal URL
    • Recents: Shows as "Recents" without exposing internal URL
    • Applications: Shows as "Applications" without exposing internal URL
    • Desktop: Shows as "~/Desktop" for user's desktop folder
    • Downloads: Shows as "~/Downloads" for user's downloads folder
  • User-friendly path formatting (show regular paths instead of raw URLs)

🚧 In Progress:

  • Support for custom folder locations

🔜 Planned:

  • Add/remove favorites

  • Command-line interface improvements

  • Configuration options

Documentation

Development

The project uses nix + direnv for reproducible development environment:

# Setup development environment
direnv allow

# See all available commands
make
# or
make help

# Run development tools
make all # run linters, tests and build project

Contributing

See our Contributing Guide for details on how to get involved with the project.

License

MIT