Skip to content

Latest commit

History

28 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

BetterMSFile

Visit the website — Learn more and download the app.

A lightweight native macOS app for fast, unified access to Microsoft 365 files across OneDrive and SharePoint.

Why

Microsoft's default apps (OneDrive, SharePoint, Teams) scatter files across fragmented interfaces. Finding a file means knowing which app to open and which site to check. BetterMSFile merges everything into a single, fast, keyboard-first file browser.

Features

  • Unified file view — OneDrive, SharePoint, and shared files in one place
  • Fast search — Global search across all sources via Microsoft Graph Search API
  • Scoped search — Filter search to a specific team, site, or your OneDrive
  • Favorites — Pin frequently used files and folders for instant access (Cmd+D)
  • Frequently Used — Smart suggestions based on your usage patterns (frecency)
  • Drag-and-drop reorder — Custom file ordering per folder, persisted across sessions
  • Keyboard-first — Navigate entirely with keyboard shortcuts (Cmd+K search, arrow keys, Space for Quick Look)
  • Native macOS — Built with SwiftUI, feels like a system app
  • Instant startup — Local cache with background refresh
  • Quick Look — Preview files without downloading
  • Open anywhere — Open in browser, download, copy link, drag & drop

Requirements

  • macOS 26.2+
  • Microsoft 365 work/school account
  • Azure AD app registration with delegated permissions:
    • User.Read
    • Files.ReadWrite.All
    • Sites.Read.All

Setup

  1. Clone the repository
  2. Copy BetterMSFile/Config.swift.example to BetterMSFile/Config.swift
  3. Fill in your Azure AD app registration values (client ID, tenant ID)
  4. Open BetterMSFile.xcodeproj in Xcode
  5. Build and run

Architecture

SwiftUI Views → ViewModels → Services → GraphClient → Microsoft Graph API
↕
SwiftData (cache)
↕
MSAL (auth/tokens)

MVVM with service layer:

  • Views — SwiftUI, NavigationSplitView (sidebar + file list + detail)
  • ViewModels — State management, business logic
  • Services — File fetching, search, site discovery
  • GraphClient — Authenticated HTTP with pagination and throttle handling
  • SwiftData — Local metadata cache for instant startup
  • MSAL — Microsoft authentication, token management via Keychain

Project Structure

BetterMSFile/
├── App/ # App entry point, global state
├── Auth/ # MSAL authentication service
├── Networking/ # Graph API client, endpoints, response types
├── Services/ # File, search, and site services
├── Models/ # SwiftData models (UnifiedFile, FileSource)
├── ViewModels/ # View state management
├── Views/ # SwiftUI views (sidebar, file list, search, auth)
└── Extensions/ # Utility extensions

Keyboard Shortcuts

ShortcutAction
Cmd+KGlobal search
↑ / ↓Navigate file list
EnterOpen file / enter folder
Cmd+OOpen in browser
Cmd+DToggle favorite
SpaceQuick Look preview
EscapeDismiss search / go back
Cmd+[ / Cmd+]Back / forward

Dependencies

Graph API Scopes

ScopePurpose
User.ReadUser profile
Files.ReadWrite.AllOneDrive + SharePoint file access + move
Sites.Read.AllSharePoint site discovery

About

An explorer App for OneDrive and sharepoint

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages