Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
6af192c
feat(contrib): add a Raycast extension
qeude Nov 11, 2026
f79e1ff
fix(contrib): build the Raycast extension into its own dist folder
qeude Nov 11, 2026
509cec9
feat(contrib): show the strip and take arguments in the Raycast exten…
qeude Nov 11, 2026
44b9c67
feat(contrib): build the Raycast extension straight into Tinycast
qeude Nov 11, 2026
0a1da26
feat(contrib): rework the Raycast extension's lists
qeude Nov 11, 2026
874ca7c
feat(contrib): bring the Raycast extension to Store quality
qeude Nov 11, 2026
2708706
feat(contrib): steady shortcuts, live lists, and command help in Raycast
qeude Nov 11, 2026
6c95aa5
feat(contrib): fix state gaps and teach shortcuts in the Raycast exte…
qeude Nov 11, 2026
decc825
feat(contrib): open workspaces' windows and tighten the Raycast exten…
qeude Nov 11, 2026
a1b3011
fix(contrib): act on fresh state and keep the Raycast extension honest
qeude Nov 11, 2026
9fa1851
fix(contrib): move windows through a pushed list and describe every row
qeude Nov 11, 2026
bfeaeef
fix(contrib): one vocabulary and fresh move targets in the Raycast ex…
qeude Nov 11, 2026
db0d6bc
fix(contrib): rebuild recent suggestions from live state in Raycast
qeude Nov 11, 2026
fe20e28
fix(contrib): run the Raycast extension tests on Node 22.6 and mark s…
qeude Nov 11, 2026
dcef38c
fix(contrib): skip empty metadata in Search Commands and quiet Node 2…
qeude Nov 11, 2026
da05d80
feat(contrib): preview the selected window in Search Windows
qeude Nov 11, 2026
50f85da
fix(contrib): say when a window picture is refused and link Screen Re…
qeude Nov 11, 2026
c908e26
feat(contrib): show Defi's own window pictures instead of capturing
qeude Nov 11, 2026
dbfe98d
Revert "feat(contrib): show Defi's own window pictures instead of cap…
qeude Nov 11, 2026
2b6f20e
Revert "fix(contrib): say when a window picture is refused and link S…
qeude Nov 11, 2026
49d42c2
Revert "feat(contrib): preview the selected window in Search Windows"
qeude Nov 11, 2026
4769790
feat(contrib): lighter Search Workspaces rows
qeude Nov 11, 2026
14e23f6
chore(contrib): prepare the Raycast extension for the Store
qeude Nov 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,9 @@ Defi is in alpha, so behavior and configuration may still change.
- **Smooth motion**: windows glide on an overlay, then move once underneath.
- **App rules**: send apps to a workspace, float them, or set their width.
- **Keyboard and mouse**: custom shortcuts with a cheatsheet, and drag to reorder.
- **Scriptable**: live TOML config, a CLI, and a
[SketchyBar integration](contrib/sketchybar/README.md).
- **Scriptable**: live TOML config, a CLI, a
[SketchyBar integration](contrib/sketchybar/README.md), and a
[Raycast extension](contrib/raycast/README.md).

Window borders, gaps, and every other option are in the
[configuration reference](CONFIGURATION.md).
Expand Down
2 changes: 2 additions & 0 deletions contrib/raycast/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
node_modules/
raycast-env.d.ts
4 changes: 4 additions & 0 deletions contrib/raycast/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"printWidth": 120,
"singleQuote": false
}
7 changes: 7 additions & 0 deletions contrib/raycast/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Defi Changelog

## [Initial Version] - {PR_MERGE_DATE}

- Search Windows: focus any managed window, bring it to the current workspace, move it, float it, or copy its title or ID.
- Search Workspaces: jump to a workspace on any display, or move the focused window or column there.
- Search Commands: run any Defi command; the search text sets widths and heights and targets workspaces.
61 changes: 61 additions & 0 deletions contrib/raycast/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Defi

Reach [Defi](https://github.com/qeude/Defi), the scrolling-columns window
manager for macOS, from Raycast: switch windows, jump between workspaces, and
run any Defi command. The extension only runs the `defi` command line tool
inside Defi.app and makes no network calls, so window titles stay on your Mac.

Requires [Defi.app](https://github.com/qeude/Defi/releases/latest) in
`/Applications` or `~/Applications`, or picked in the extension's preferences.

## Commands

**Search Windows** finds any window Defi manages by title, app, or workspace;
the dropdown narrows it to one workspace. Windows you pick often come first,
and the focused one comes last. Acting on a window from another workspace shows
that workspace for a moment, because Defi focuses the window first.

| Key | Action |
| --- | --- |
| ↵ | Focus the window |
| ⌘↵ | Pick a workspace to move it to |
| ⇧↵ | Bring it to the current workspace |
| ⌘⇧F | Float or tile it |
| ⌘⇧C / ⌘⇧I | Copy its title or ID |

**Search Workspaces** lists the workspaces of every display with their window
count and apps; search by name, number, or app.

| Key | Action |
| --- | --- |
| ↵ | Go to the workspace |
| ⌘↵ / ⌘⇧↵ | Move the focused window there, or send it without following |
| ⌥↵ / ⌥⇧↵ | Move or send the focused column |
| ⌘O | List the workspace's windows |

**Search Commands** runs any Defi command, with the ones you ran last on top.
The side pane says what each one does, its default shortcut, and the line to
paste into `[keys]`. The search text also works as an argument:

| Type | To |
| --- | --- |
| `60`, `+10`, `-10`, `960` | Set or change the column width, in percent or points |
| `h50`, `h+10` | Set or change a stacked window's height |
| `2`, `web` | Go to a workspace, or move the focused window or column there |

Type the same text after the command in the root search, as in
`Search Commands 60`. ⌘↵ copies a command in the form `[keys]` accepts. See
[Commands](https://github.com/qeude/Defi/blob/main/CONFIGURATION.md#commands).

In every list, ⌘Y shows or hides the side pane and ⌘R reloads. Shortcuts shown
are Defi's defaults, with `mod` as ⌃⌥; your own `[keys]` may differ. Give Search
Windows a hotkey or an alias such as `w` to reach it in one keystroke.

## Troubleshooting

- **Defi Is Not Installed**: install Defi, or pick Defi.app in **Defi App** in
the extension's preferences.
- **Defi Is Not Running**: press Enter to launch it; the list fills in once
Defi starts.
- **Update Defi** or **Update This Extension**: Defi and the extension read
different versions of the JSON format. Update the older one.
Binary file added contrib/raycast/assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added contrib/raycast/assets/icon@dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions contrib/raycast/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { defineConfig } from "eslint/config";
import raycastConfig from "@raycast/eslint-config";

export default defineConfig([...raycastConfig]);
Loading
Loading