Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 6 additions & 0 deletions extensions/kill-it-with-fire/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"root": true,
"extends": [
"@raycast"
]
}
20 changes: 20 additions & 0 deletions extensions/kill-it-with-fire/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Dependencies
node_modules/

# Raycast build output
.ray/

# OS files
.DS_Store
Thumbs.db

# Editor & IDE
.vscode/
.idea/
*.swp
*.swo
*~

# Logs
*.log
npm-debug.log*
11 changes: 11 additions & 0 deletions extensions/kill-it-with-fire/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Kill It With Fire Changelog

## [Initial Release] - {PR_MERGE_DATE}
- Full-screen flame animation via native macOS transparent overlay.
- Canvas particle system with flame and smoke particles.
- Fire grows from the bottom of the screen to midscreen over ~3 seconds.
- Smoke rises from the flame front to the top of the viewport.
- Click-through overlay — interact with your apps while it burns.
- Auto-close after ~6 seconds.
- Raycast "no-view" command: search **"Kill It With Fire!"** and press Enter.
- Swift overlay source with build script (`scripts/build-overlay.sh`).
63 changes: 63 additions & 0 deletions extensions/kill-it-with-fire/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Contributing to Kill It With Fire 🔥

Thanks for your interest in contributing! This project is a fun Raycast extension that sets your screen on fire, and contributions of all kinds are welcome.

## Getting Started

### Prerequisites

- **macOS** (required — the overlay relies on native macOS APIs)
- **Node.js** ≥ 18
- **Xcode Command Line Tools** (`xcode-select --install`)
- **Raycast** installed on your Mac

### Setup

```bash
git clone https://github.com/tylerlotz/raycast-kill-it-with-fire.git
cd raycast-kill-it-with-fire
npm install # installs deps + compiles the Swift overlay binary
npm run dev # starts the Raycast dev server
```

Open Raycast and search for **"Kill It With Fire!"** to test.

## Project Structure

| Path | Purpose |
|------|---------|
| `src/kill-it-with-fire.tsx` | Raycast command entry point |
| `swift/overlay.swift` | Native macOS overlay (transparent window + WebView) |
| `assets/flame.html` | Self-contained flame animation (loaded by the overlay) |
| `scripts/build-overlay.sh` | Compiles the Swift source into `assets/overlay` |

## Development Workflow

1. **Modify the flame animation** → Edit `assets/flame.html`. Reload from Raycast to see changes.
2. **Modify the overlay window** → Edit `swift/overlay.swift`, then run `npm run build-overlay` to recompile.
3. **Modify the Raycast command** → Edit `src/kill-it-with-fire.tsx`. The dev server (`npm run dev`) picks up changes automatically.

## Submitting Changes

1. Fork the repository and create a feature branch from `main`.
2. Make your changes with clear, descriptive commits.
3. Test locally via `npm run dev` in Raycast.
4. Open a pull request against `main`.

## Code Style

- **TypeScript** (Raycast command): Follow the existing Raycast ESLint config. Run `npm run lint` before submitting.
- **Swift** (overlay): Keep it minimal — the overlay is intentionally a single-file CLI.
- **JavaScript** (flame engine): Use JSDoc comments for public APIs.

## Reporting Issues

Found a bug or have a feature idea? [Open an issue](https://github.com/tylerlotz/raycast-kill-it-with-fire/issues) with:

- macOS version
- Raycast version
- Steps to reproduce (if applicable)

## License

By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).
21 changes: 21 additions & 0 deletions extensions/kill-it-with-fire/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Tyler Lotz

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
102 changes: 102 additions & 0 deletions extensions/kill-it-with-fire/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# Raycast Kill It With Fire
Kill it with fire! Set your screen on fire and watch it burn. A chaotic alternative to Raycast's confetti.

[Raycast](https://raycast.com) has confetti. That's nice. But what do you do when you need to express your frustration?

Kill It With Fire is a chaotic alternative to Raycast's confetti for when you need to **kill something with fire!**

## Features

- **Full-screen transparent overlay** — renders on top of your desktop and all apps
- **Growing flame wall** — fire rises from the bottom to midscreen over ~3 seconds
- **Billowing smoke** — smoke particles float from the flame front to the top of the viewport
- **Click-through** — interact with your apps while the screen burns
- **Lightweight** — canvas particle system with zero runtime dependencies
- **Auto-close** — the overlay disappears after ~6 seconds

## Install

### From the Raycast Store

Search for **"Kill It With Fire"** in the Raycast Store and click Install.

### From Source

> **Requirements:** macOS 12+, Node.js ≥ 18, Xcode Command Line Tools

```bash
git clone https://github.com/tylerlotz/raycast-kill-it-with-fire.git
cd raycast-kill-it-with-fire
npm install # installs deps + compiles the Swift overlay binary
npm run dev # starts the Raycast dev server
```

Open Raycast → search **"Kill It With Fire!"** → press Enter.

## How It Works

The extension has two main pieces:

1. **Raycast command** (`src/kill-it-with-fire.tsx`) — a "no-view" command that spawns the native overlay binary as a detached child process.
2. **Native macOS overlay** (`swift/overlay.swift`) — a minimal Swift CLI that:
- Creates a borderless, always-on-top, transparent `NSWindow` covering the main screen
- Loads the flame animation (`assets/flame.html`) inside a `WKWebView`
- Sets `ignoresMouseEvents = true` so clicks pass through
- Auto-terminates after the configured duration

The flame animation itself is a canvas-based particle system with two particle types (flame & smoke) driven by a `FullWidthGrowingEmitter` that ramps spawn rate and vertical coverage over time.

## Project Structure

```
kill-it-with-fire/
├── src/
│ └── kill-it-with-fire.tsx Raycast "no-view" command entry point
├── swift/
│ └── overlay.swift Native transparent-window overlay (Swift)
├── assets/
│ ├── flame.html Self-contained flame animation page
│ ├── command-icon.png Extension icon
│ └── overlay Compiled macOS binary (git-ignored, built on install)
├── scripts/
│ └── build-overlay.sh Compiles overlay.swift → assets/overlay
├── package.json Raycast extension manifest & npm scripts
├── tsconfig.json TypeScript configuration
├── LICENSE MIT License
├── CONTRIBUTING.md Contribution guidelines
└── CHANGELOG.md Release notes
```

## Development

### Modifying the flame animation

Edit `assets/flame.html` directly.

### Rebuilding the overlay binary

After modifying `swift/overlay.swift`:

```bash
npm run build-overlay
```

This compiles the Swift source and places the binary at `assets/overlay`. The binary is also automatically compiled on `npm install` via the `postinstall` hook.

### Scripts

| Command | Description |
|---------|-------------|
| `npm run dev` | Start the Raycast dev server |
| `npm run build` | Build the extension for publishing |
| `npm run lint` | Run ESLint |
| `npm run fix-lint` | Auto-fix lint issues |
| `npm run build-overlay` | Recompile the Swift overlay binary |

## Contributing

See [CONTRIBUTING.md](CONTRIBUTING.md) for setup instructions, development workflow, and submission guidelines.

## License

[MIT](LICENSE) © Tyler Lotz
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue: inconsistent

The extension icon is not working well in both appearances; could you look into this? If you struggle to do so, then you can use our generator

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading