gpui-context

longbridge/gpui-component · updated Apr 8, 2026

$npx skills add https://github.com/longbridge/gpui-component --skill gpui-context
0 commentsdiscussion
summary

GPUI uses different context types for different scenarios:

skill.md

Overview

GPUI uses different context types for different scenarios:

Context Types:

  • App: Global app state, entity creation
  • Window: Window-specific operations, painting, layout
  • Context<T>: Entity-specific context for component T
  • AsyncApp: Async context for foreground tasks
  • AsyncWindowContext: Async context with window access

Quick Start

Context - Component Context

impl MyComponent {
    fn update_state(&mut self, cx: &mut Context<Self>) {
        self.value = 42;
        cx.notify(); // Trigger re-render

        // Spawn async task
        cx.spawn(async move |cx| {
            // Async work
        }).detach();

        // Get current entity
        let entity = cx.entity();
    }
}

App - Global Context

fn main() {
    let app = Application::new();
    app.run(|cx: &mut App| {
        // Create entities
        let entity = cx.new(|cx| MyState::default());

        // Open windows
        cx.open_window(WindowOptions::default(), |window, cx| {
            cx.new(|cx| Root::new(view, window, cx))
        });
    });
}

Window - Window Context

impl Render for MyView {
    fn render(&mut self, window: &mut Window, cx: &mut Context<Self>) -> impl IntoElement {
        // Window operations
        let is_focused = window.is_window_focused();
        let bounds = window.bounds();

        div().child("Content")
    }
}

AsyncApp - Async Context

cx.spawn(async move |cx: &mut AsyncApp| {
    let data = fetch_data().await;

    entity.update(cx, |state, inner_cx| {
        state.data = data;
        inner_cx.notify();
    }).ok();
}).detach();

Common Operations

Entity Operations

// Create entity
let entity = cx.new(|cx| MyState::default());

// Update entity
entity.update(cx, |state, cx| {
    state.value = 42;
    cx.notify();
});

// Read entity
let value = entity.read(cx).value;

Notifications and Events

// Trigger re-render
cx.notify();

// Emit event
cx.emit(MyEvent::Updated);

// Observe entity
cx.observe(&entity, |this, observed, cx| {
    // React to changes
}).detach();

// Subscribe to events
cx.subscribe(&entity, |this, source, event, cx| {
    // Handle event
}).detach();

Window Operations

// Window state
let focused = window.is_window_focused();
let bounds = window.bounds();
let scale = window.scale_factor();

// Close window
window.remove_window();

Async Operations

// Spawn foreground task
cx.spawn(async move |cx| {
    // Async work with entity access
}).detach();

// Spawn background task
cx.background_spawn(async move {
    // Heavy computation
}).detach();

Context Hierarchy

App (Global)
  └─ Window (Per-window)
       └─ Context<T> (Per-component)
            └─ AsyncApp (In async tasks)
                 └─ AsyncWindowContext (Async + Window)

Reference Documentation

  • API Reference: See api-reference.md
    • Complete context API, methods, conversions
    • Entity operations, window operations
    • Async contexts, best practices

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.674 reviews
  • Nikhil Smith· Dec 28, 2024

    gpui-context is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Layla Brown· Dec 28, 2024

    Registry listing for gpui-context matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Chaitanya Patil· Dec 12, 2024

    I recommend gpui-context for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Anika Bansal· Dec 12, 2024

    Keeps context tight: gpui-context is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Anika Gill· Dec 4, 2024

    Keeps context tight: gpui-context is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Anika Rao· Nov 23, 2024

    gpui-context is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Layla Bhatia· Nov 19, 2024

    Keeps context tight: gpui-context is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Diego Gill· Nov 19, 2024

    gpui-context reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Piyush G· Nov 3, 2024

    Solid pick for teams standardizing on skills: gpui-context is focused, and the summary matches what you get after install.

  • Anika Menon· Nov 3, 2024

    gpui-context is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

showing 1-10 of 74

1 / 8