MCPcopy Index your code
hub / github.com/acsandmann/rift

github.com/acsandmann/rift @v0.4.3

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.4.3 ↗ · + Follow
2,605 symbols 9,393 edges 104 files 90 documented · 3%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Rift

Rift is a tiling window manager for macOS that focuses on performance and usability.

Rift demo

<a href="https://github.com/acsandmann/rift/actions/workflows/rust.yml">
  <img src="https://img.shields.io/github/actions/workflow/status/acsandmann/rift/rust.yml?style=flat-square" alt="Rust CI Status" />
</a>
<a href="https://github.com/acsandmann/rift/commits/main">
  <img src="https://img.shields.io/github/last-commit/acsandmann/rift?style=flat-square" alt="Last Commit" />
</a>
<a href="https://github.com/acsandmann/rift/issues">
  <img src="https://img.shields.io/github/issues/acsandmann/rift?style=flat-square" alt="Open Issues" />
</a>
<a href="https://github.com/acsandmann/rift/stargazers">
  <img src="https://img.shields.io/github/stars/acsandmann/rift?style=flat-square" alt="GitHub stars" />
</a>

Features

  • Multiple layout styles
  • Tiling (i3/sway-like)
  • Binary Space Partitioning (bspwm-like)
  • Master-stack (dwm-like)
  • Scrolling columns (niri-style)
  • Stack (accordion)
  • Menubar icon that opens a menu for switching workspaces, changing layouts, and accessing quick Rift controls

click to see the menu bar icon

Rift menu bar icon

  • MacOS-style mission control that allows you to visually navigate between workspaces

click to see mission control

Rift Mission Control view

  • Focus follows the mouse with auto raise
  • Drag windows over one another to swap positions
  • Performant animations (as seen in the demo)
  • Switch to next/previous workspace with trackpad gestures (just like native macOS)
  • Hot reloadable configuration
  • Interop with third-party programs (ie Sketchybar)
  • Requests can be made to rift via the cli or the mach port exposed (lua client here)
  • Signals can be sent on startup, workspace switches, and when the windows within a workspace change. These signals can be sent via a command(cli) or through a mach connection
  • Does not require disabling SIP
  • Works with “Displays have separate Spaces” enabled (unlike all other major WMs)

Quick Start

Get up and running via the wiki:

[

config

]config_link

[

quick start

]quick_start

Status

Rift is in active development but is still generally stable. There is no official release yet; expect ongoing changes.

Issues and PRs are very welcome.

Community

Join the Rift community on Matrix for discussion, support, and announcements: #rift:matrix.org

Motivation

Aerospace worked well for me, but I missed animations and the ability to use fullscreen on one display while working on the other. I also prefer leveraging private/undocumented APIs as they tend to be more reliable (due to the OS being built on them and all the public APIs) and performant. for more on why rift exists and what rift strives to do, see the manifesto

Credits

Rift began as a fork (and is licensed as such) of glide-wm but has since diverged significantly. It uses private APIs reverse engineered by yabai and other projects. It is not affiliated with glide-wm or yabai.

Extension points exported contracts — how you extend this code

LayoutSystem (Interface)
(no doc) [5 implementers]
src/layout_engine/systems.rs
IsWithin (Interface)
(no doc) [4 implementers]
src/sys/geometry.rs
Observer (Interface)
(no doc) [4 implementers]
src/model/tree.rs
BTreeExt (Interface)
(no doc) [2 implementers]
src/common/collections.rs
CliExecutor (Interface)
(no doc) [1 implementers]
src/ipc/cli_exec.rs
System (Interface)
(no doc) [3 implementers]
src/sys/screen.rs
Round (Interface)
(no doc) [3 implementers]
src/sys/geometry.rs
SameAs (Interface)
(no doc) [3 implementers]
src/sys/geometry.rs

Core symbols most depended-on inside this repo

map
called by 401
src/layout_engine/systems/traditional.rs
clone
called by 318
src/actor/window_notify.rs
get
called by 298
src/sys/screen.rs
insert
called by 205
src/sys/hotkey.rs
is_empty
called by 142
src/model/tree.rs
handle_event
called by 134
src/actor/reactor/main_window.rs
to_string
called by 116
src/sys/screen.rs
w
called by 113
src/layout_engine/systems/traditional.rs

Shape

Method 1,555
Function 630
Class 302
Enum 104
Interface 14

Languages

Rust100%

Modules by API surface

src/layout_engine/systems/traditional.rs183 symbols
src/actor/reactor.rs128 symbols
src/layout_engine/systems/scrolling.rs103 symbols
src/layout_engine/engine.rs99 symbols
src/model/virtual_workspace.rs96 symbols
src/model/tree.rs86 symbols
src/ui/mission_control.rs84 symbols
src/common/config.rs81 symbols
src/layout_engine/systems/bsp.rs79 symbols
src/sys/window_server.rs73 symbols
src/layout_engine/systems/master_stack.rs68 symbols
src/actor/app.rs67 symbols

For agents

$ claude mcp add rift \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact