Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shelfly

Shelfly banner

Shelfly is a native Windows 11 shelf app, built with WinUI 3 (Windows App SDK). It's a small, always-on-top panel you drag files onto to stage them temporarily, then drag back out into another app, or move/copy/act on them in place - the same idea as macOS shelf apps like Dropover or Yoink, done natively for Windows.

Features

  • Floating shelf window - borderless, always-on-top, Mica/ Acrylic backdrop, rounded corners, position and size remembered between runs.
  • Multiple shelves - not just one panel. Create, name, hide, close, and recall shelves independently, each with its own file stack. Shelf Center gives you an overview of every shelf (open or saved-but-closed) with a live preview strip and item counts.
  • Native drag in / drag out - drop files from Explorer or the desktop onto a shelf, and drag them back out to any other app using a real OS- level drag (not a clipboard workaround). Dropped URLs/text are kept as link entries, with a best-effort favicon fetched for them.
  • Shake to summon - start dragging a file, shake the mouse, and a shelf pops up under the cursor so you don't have to aim for the tray icon or remember a hotkey.
  • Global hotkey - a configurable shortcut (default Ctrl+Shift+D) toggles the shelf from anywhere.
  • Quick actions - a set of built-in, one-click file actions available from the shelf, all runnable on single files or a whole selection:
    • Copy to / Move to / Move to Recycle Bin
    • Compress to .zip
    • Copy paths to clipboard
    • Share (native Windows share flyout)
    • Convert image format / Compress image / Strip metadata
    • Rename batch (sequential numbering, prefix/suffix, find & replace)
    • Combine images into a PDF / Export PDF pages as images
    • Checksum (MD5/SHA-1/SHA-256/SHA-512)
    • OCR (extract and select text right off an image, Snipping-Tool style)
    • Convert video to GIF
  • Plugin system - every quick action above is written against the same public interface a third-party plugin uses. Anyone can add new actions without touching Shelfly's source. See plugins.md.
  • QuickLook-style preview - hit space on a selected file for a full-size preview panel (images, video, and common document types).
  • System tray integration - tray icon with a per-shelf menu (show/hide/ recall), and the app keeps running with nothing open until you explicitly exit.
  • Settings - theme (light/dark/system) and corner style, hotkey recording, start-on-sign-in, enable/disable individual quick actions (built-in or plugin), and a GitHub-releases-based update check.

Requirements

  • Windows 11 (or Windows 10 1809+ with the Windows App SDK runtime).
  • To build: Visual Studio 2022 (17.8+) with the .NET Desktop Development and Windows application development workloads, which bring in the Windows App SDK tooling.

Building

  1. Clone the repo and open Shelfly.sln in Visual Studio.

  2. Let NuGet restore on first build (WindowsAppSDK, CommunityToolkit.Mvvm, the SettingsControls package, and H.NotifyIcon.WinUI for the tray icon).

  3. Set the platform to x64 or ARM64 - WinUI 3 doesn't build for Any CPU/x86 here.

  4. F5 to run, or from the command line:

    dotnet build Shelfly.sln -c Release
    

The shelf should appear near the bottom-right of the screen on first run, along with a tray icon.

Project layout

Shelfly.sln
Shelfly/                       Main app (WinUI 3)
  App.xaml(.cs)                 Startup: shelves, tray, hotkey, plugin discovery
  app.manifest                  DPI awareness / OS compatibility
  Views/
    ShelfWindow.xaml(.cs)        The floating shelf UI, drag/drop, action flyouts
    ShelfCenterWindow.xaml(.cs)  Overview of every shelf, with previews
    SettingsWindow.xaml(.cs)     Appearance / Shortcuts / Plugins / About
    PreviewWindow.xaml(.cs)      Quick Look-style file preview
    OcrOverlayWindow.xaml(.cs)   Selectable-text overlay for the OCR action
    PluginPromptWindow.xaml(.cs) Native prompts (choice/value/text) plugins use
  Services/
    ShelfManager.cs               Owns every open/closed shelf
    ShelfStore.cs                 Persists shelves to shelves.json
    FileStackManager.cs           Per-shelf file stack: add/remove/move/copy
    SettingsService.cs            JSON settings persistence
    TrayIconService.cs            System tray icon + per-shelf menu
    HotkeyService.cs              Global hotkey (RegisterHotKey)
    DragShakeDetector.cs          Shake-to-summon gesture detection
    FaviconService.cs             Favicon fetching for dropped links
    BuiltInQuickActions.cs        Shelfly's own actions, as IQuickActions
    PluginLoader.cs / PluginManager.cs   Third-party plugin discovery/loading
    PluginHost.cs                 IPluginHost implementation
    UpdateChecker.cs              GitHub-releases update check
  Models/                        Shelf, StackedFile, settings, view models
  Helpers/                       Win32/window interop helpers
  Assets/                        App icon
Shelfly.PluginSdk/              Public interfaces third-party plugins target

Plugins

Shelfly ships with a small set of built-in actions, but the same interface they're built on (IQuickAction) is public. If you want to add your own file action - a custom converter, an integration with another tool, a niche batch operation - you can build it as a standalone plugin without forking or rebuilding Shelfly itself.

See plugins.md for the full guide.

Data locations

Shelfly is unpackaged (no MSIX), so it stores its own data under %LocalAppData%\Shelfly\ rather than relying on ApplicationData.Current:

Path Contents
%LocalAppData%\Shelfly\settings.json App settings
%LocalAppData%\Shelfly\shelves.json Saved shelves and their contents
%LocalAppData%\Shelfly\Plugins\ Installed third-party plugins
%LocalAppData%\Shelfly\Scratch\ Cached favicons and temp files

Contributing

Issues and pull requests are welcome. If you're building a plugin rather than modifying the app itself, you generally don't need to touch this repo at all - see plugins.md.

About

A new way to organize your files.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages