Expand description
§gpui - Community Edition
A community fork of GPUI, Zed’s GPU-accelerated UI framework.
§Usage
[dependencies]
gpui = { package = "gpui-ce", version = "0.3" }
# for test support...
[dev-dependencies]
gpui = { package = "gpui-ce", version = "0.3", features = ["test-support"] }Then use gpui::{import} as normal.
todo: rewrite below…
§Welcome to GPUI!
GPUI is a hybrid immediate and retained mode, GPU accelerated, UI framework for Rust, designed to support a wide variety of applications.
Everything in GPUI starts with an Application. You can create one with Application::new(), and kick off your application by passing a callback to Application::run(). Inside this callback, you can create a new window with App::open_window(), and register your first root view. See gpui.rs for a complete example.
§Dependencies
GPUI has various system dependencies that it needs in order to work.
§macOS
On macOS, GPUI uses Metal for rendering. In order to use Metal, you need to do the following:
- Install Xcode from the macOS App Store, or from the Apple Developer website. Note this requires a developer account.
Ensure you launch Xcode after installing, and install the macOS components, which is the default option.
-
Install Xcode command line tools
xcode-select --install -
Ensure that the Xcode command line tools are using your newly installed copy of Xcode:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
§The Big Picture
GPUI offers three different registers depending on your needs:
-
State management and communication with
Entity’s. Whenever you need to store application state that communicates between different parts of your application, you’ll want to use GPUI’s entities. Entities are owned by GPUI and are only accessible through an owned smart pointer similar to anRc. See theapp::contextmodule for more information. -
High level, declarative UI with views. All UI in GPUI starts with a view. A view is simply an
Entitythat can be rendered, by implementing theRendertrait. At the start of each frame, GPUI will call this render method on the root view of a given window. Views build a tree ofelements, lay them out and style them with a tailwind-style API, and then give them to GPUI to turn into pixels. See thedivelement for an all purpose swiss-army knife of rendering. -
Low level, imperative UI with Elements. Elements are the building blocks of UI in GPUI, and they provide a nice wrapper around an imperative API that provides as much flexibility and control as you need. Elements have total control over how they and their child elements are rendered and can be used for making efficient views into large lists, implement custom layouting for a code editor, and anything else you can think of. See the
elementmodule for more information.
Each of these registers has one or more corresponding contexts that can be accessed from all GPUI services. This context is your main interface to GPUI, and is used extensively throughout the framework.
§Other Resources
In addition to the systems above, GPUI provides a range of smaller services that are useful for building complex applications:
-
Actions are user-defined structs that are used for converting keystrokes into logical operations in your UI. Use this for implementing keyboard shortcuts, such as cmd-q. See the
actionmodule for more information. -
Platform services, such as
quit the apporopen a URLare available as methods on theapp::App. -
An async executor that is integrated with the platform’s event loop. See the
executormodule for more information., -
The
[gpui::test]macro provides a convenient way to write tests for your GPUI applications. Tests also have their own kind of context, aTestAppContextwhich provides ways of simulating common platform input. Seeapp::test_contextandtestmodules for more details.
Currently, the best way to learn about these APIs is to read the Zed source code or drop a question in the Zed Discord. We’re working on improving the documentation, creating more examples, and will be publishing more guides to GPUI on our blog.
Re-exports§
pub use http_client;
Modules§
- _ownership_
and_ data_ flow - In GPUI, every model or view in the application is actually owned by a single top-level object called the
App. When a new entity or view is created (referred to collectively as entities), the application is given ownership of their state to enable their participation in a variety of app services and interaction with other entities. - colors
- The default colors used by GPUI.
- inspector_
reflection - Provides definitions used by
#[derive_inspector_reflection]. - layer_
shell - Contains Types for configuring layer_shell surfaces.
- prelude
- The GPUI prelude is a collection of traits and types that are widely used throughout the library. It is recommended to import this prelude into your application to avoid having to import each trait individually.
- styled_
reflection - Implements function reflection
Macros§
- actions
- Defines and registers unit structs that can be used as actions. For more complex data types, derive
Action. - border_
style_ methods - Generates methods for border styles.
- box_
shadow_ style_ methods - Generates methods for box shadow styles.
- cursor_
style_ methods - Generates methods for cursor styles.
- margin_
style_ methods - Generates methods for margin styles.
- overflow_
style_ methods - Generates methods for overflow styles.
- padding_
style_ methods - Generates methods for padding styles.
- position_
style_ methods - Generates methods for position styles.
- register_
action - This can be used to register an action with the GPUI runtime when you want to manually implement
the
Actiontrait. Typically you should use theActionderive macro oractions!macro instead. - visibility_
style_ methods - Generates methods for visibility styles.
Structs§
- Anchored
- An anchored element that can be used to display UI that will avoid overflowing the window bounds.
- Anchored
State - The state that the anchored element element uses to track its children.
- Animation
- An animation that can be applied to an element.
- Animation
Element - A GPUI element that applies an animation to another element
- AnyDrag
- Contains state associated with an active drag operation, started by dragging an element within the window or by dragging into the app from the underlying platform.
- AnyElement
- A dynamically typed element that can be used to store any element type.
- AnyEntity
- A dynamically typed reference to a entity, which can be downcast into a
Entity<T>. - AnyImage
Cache - A dynamically typed image cache, which can be used to store any image cache
- AnyTooltip
- Contains state associated with a tooltip. You’ll only need this struct if you’re implementing tooltip behavior on a custom element. Otherwise, use Div::tooltip.
- AnyView
- A dynamically-typed handle to a view, which can be downcast to a Entity for a specific type.
- AnyWeak
Entity - A type erased, weak reference to a entity.
- AnyWeak
View - A weak, dynamically-typed view handle that does not prevent the view from being released.
- AnyWindow
Handle - A handle to a window with any root view type, which can be downcast to a window with a specific root view type.
- App
- Contains the state of the full application, and passed as a reference to a variety of callbacks.
Other Context derefs to this type.
You need a reference to an
Appto access the state of a Entity. - Application
- A reference to a GPUI application, typically constructed in the
mainfunction of your app. You won’t interact with this type much outside of initial configuration and startup. - Arena
Clear Needed - Returned when the element arena has been used and so must be cleared before the next draw.
- Async
App - An async-friendly version of App with a static lifetime so it can be held across
awaitpoints in async code. You’re provided with an instance when calling App::spawn, and you can also create one with App::to_async. Internally, this holds a weak reference to anApp, so its methods are fallible to protect against cases where the App is dropped. - Async
Window Context - A cloneable, owned handle to the application context, composed with the window associated with the current task.
- Background
- A background color, which can be either a solid color or a linear gradient.
- Background
Executor - A pointer to the executor that is currently running, for spawning background tasks.
- Binding
Index - Index of a binding within a keymap.
- Boundary
- A boundary between two lines of text.
- Bounds
- Represents a rectangular area in a 2D space with an origin point and a size.
- Bounds
Refinement - A refinable version of [
#ident], see that documentation for details. - BoxShadow
- The possible values of the box-shadow property
- Canvas
- A canvas element, meant for accessing the low level paint API without defining a whole custom element
- Capslock
- The state of the capslock key at some point in time
- Cascade
- A cascade of refinements that can be merged in priority order.
- Cascade
Slot - A handle to a specific slot in a cascade.
- Clipboard
Item - A clipboard item that should be copied to the clipboard
- Clipboard
String - A clipboard item that should be copied to the clipboard
- Content
Mask - Indicates which region of the window is visible. Content falling outside of this mask will not be rendered. Currently, only rectangular content masks are supported, but we give the mask its own type to leave room to support more complex shapes in the future.
- Context
- The app context, with specialized behavior for the given entity.
- Context
Entry - An entry in a KeyContext
- Corners
- Represents the corners of a box in a 2D space, such as border radius.
- Corners
Refinement - A refinable version of [
#ident], see that documentation for details. - Debug
Below - Use this struct for interfacing with the ‘debug_below’ styling from your own elements. If a parent element has this style set on it, then this struct will be set as a global in GPUI.
- Decoration
Run - Set the text decoration for a run of text.
- Deferred
- An element which delays the painting of its child until after all of its ancestors, while keeping its layout as part of the current element tree.
- Deferred
Scroll ToItem - Device
Pixels - Represents physical pixels on the display.
- Dismiss
Event - Emitted by implementers of
ManagedViewto indicate the view should be dismissed, such as when a view is presented as a modal. - Display
Id - An opaque identifier for a hardware display
- Div
- A
Divelement, the all-in-one element for building complex UIs in GPUI - DivFrame
State - A frame state for a
Divelement, which contains layout IDs for its children. - DivInspector
State - Interactivity state displayed an manipulated in the inspector.
- Drag
Move Event - An event for when a drag is moving over this element, with the given state type.
- Drawable
- A wrapper around an implementer of
Elementthat allows it to be drawn in a window. - Dummy
Keyboard Mapper - A dummy implementation of the platform keyboard mapper
- Edges
- Represents the edges of a box in a 2D space, such as padding or margin.
- Edges
Refinement - A refinable version of [
#ident], see that documentation for details. - Element
Clicked State - Whether or not the element or a group that contains it is clicked by the mouse.
- Element
Input Handler - The canonical implementation of [
crate::PlatformInputHandler]. CallWindow::handle_inputwith an instance during your element’s paint. - Empty
- The empty element, which renders nothing.
- Empty
View - A view that renders nothing
- Entity
- A strong, well-typed reference to a struct which is managed by GPUI
- Entity
Id - A unique identifier for a entity across the application.
- External
Paths - A collection of paths from the platform, such as from a file drop.
- Fallback
Prompt Renderer - The default GPUI fallback for rendering prompts, when the platform doesn’t support it.
- Fill
Options - Parameters for the fill tessellator.
- Focus
Handle - A handle which can be used to track and manipulate the focused element in a window.
- FocusId
- A globally unique identifier for a focusable element.
- Focus
OutEvent - This is provided when subscribing for
Context::on_focus_outevents. - Font
- The configuration details for identifying a specific font.
- Font
Fallbacks - The fallback fonts that can be configured for a given font. Fallback fonts family names are stored here.
- Font
Family Id - An opaque identifier for a specific font family.
- Font
Features - The OpenType features that can be configured for a given font.
- FontId
- An opaque identifier for a specific font.
- Font
Metrics - A struct for storing font metrics. It is used to define the measurements of a typeface.
- FontRun
- A run of text with a single font.
- Font
Weight - The degree of blackness or stroke thickness of a font. This value ranges from 100.0 to 900.0, with 400.0 as normal.
- Foreground
Executor - A pointer to the executor that is currently running, for spawning tasks on the main thread.
- Global
Element Id - A globally unique identifier for an element, used to track state across frames.
- GlyphId
- An identifier for a specific glyph, as returned by
WindowTextSystem::layout_line. - GpuSpecs
- Information about the GPU GPUI is running on.
- Gpui
Borrow - A mutable reference to an entity owned by GPUI
- Grid
Location - A location in a grid layout.
- Group
Style - The styling information for a given group.
- Highlight
Style - A highlight style to apply, similar to a
TextStyleexcept for a single font, uniformly sized and spaced text. - Hitbox
- A rectangular region that potentially blocks hitboxes inserted prior. See Window::insert_hitbox for more details.
- Hitbox
Id - An identifier for a Hitbox which also includes HitboxBehavior.
- Hsla
- An HSLA color
- Image
- An image, with a format and certain bytes
- Image
Cache Element - An image cache element.
- Image
Format Iter - An iterator over the variants of ImageFormat
- ImageId
- A unique identifier for the image cache
- Image
Style - The style of an image element.
- Img
- An image element.
- ImgLayout
State - The image layout state between frames
- Inspector
- Manages inspector state - which element is currently selected and whether the inspector is in picking mode.
- Inspector
Element Id - A unique identifier for an element that can be inspected.
- Inspector
Element Path GlobalElementIdqualified by source location of element construction.- Interactive
Element State - The per-frame state of an interactive element. Used for tracking stateful interactions like clicks and scroll offsets.
- Interactive
Text - A text element that can be interacted with.
- Interactivity
- The interactivity struct. Powers all of the general-purpose
interactivity in the
Divelement. - Invalid
Keystroke Error - Error type for
Keystroke::parse. This is used instead ofanyhow::Errorso that Zed can use markdown to display it. - Item
Size - The size of the item and its contents.
- KeyBinding
- A keybinding and its associated metadata, from the keymap.
- KeyBinding
Meta Index - A unique identifier for retrieval of metadata associated with a key binding. Intended to be used as an index or key into a user-defined store of metadata associated with the binding, such as the source of the binding.
- KeyContext
- A datastructure for resolving whether an action should be dispatched at this point in the element tree. Contains a set of identifiers and/or key value pairs representing the current context for the keymap.
- KeyDown
Event - The key down event equivalent for the platform.
- KeyUp
Event - The key up event equivalent for the platform.
- Keybinding
Keystroke - Represents a keystroke that can be used in keybindings and displayed to the user.
- Keyboard
Click Event - A click event that was generated by a keyboard button being pressed and released.
- Keymap
- A collection of key bindings for the user’s application.
- Keymap
Version - An opaque identifier of which version of the keymap is currently active. The keymap’s version is changed whenever bindings are added or removed.
- Keystroke
- A keystroke and associated metadata generated by the platform
- Keystroke
Event - A keystroke event, and potentially the associated action
- Layout
Id - A unique identifier for a layout node, generated when requesting a layout from Taffy
- Line
Layout - A laid out and styled line of text
- Line
Wrapper - The GPUI line wrapper, used to wrap lines of text to a given width.
- Line
Wrapper Handle - A handle into the text system, which can be used to compute the wrapped layout of text
- Linear
Color Stop - A color stop in a linear gradient.
- List
- A list element
- List
Offset - An offset into the list’s items, in terms of the item index and the number of pixels off the top left of the item.
- List
Prepaint State - Frame state used by the List element after layout.
- List
Scroll Event - A scroll event that has been converted to be in terms of the list’s items.
- List
State - The list state that views must hold on behalf of the list element.
- Menu
- A menu of the application, either a main menu or a submenu
- Modifiers
- The state of the modifier keys at some point in time
- Modifiers
Changed Event - The modifiers changed event equivalent for the platform.
- Mouse
Click Event - A click event, generated when a mouse button is pressed and released.
- Mouse
Down Event - A mouse down event from the platform
- Mouse
Exit Event - A mouse exit event from the platform, generated when the mouse leaves the window.
- Mouse
Move Event - A mouse move event from the platform.
- Mouse
UpEvent - A mouse up event from the platform
- NoAction
- Action with special handling which unbinds the keybinding this is associated with, if it is the highest precedence match.
- OsMenu
- OS menus are menus that are recognized by the operating system This allows the operating system to provide specialized items for these menus
- Owned
Menu - A menu of the application, either a main menu or a submenu
- Owned
OsMenu - OS menus are menus that are recognized by the operating system This allows the operating system to provide specialized items for these menus
- Paint
Quad - A rectangle to be rendered in the window at the given position and size.
Passed as an argument
Window::paint_quad. - Path
- A line made up of a series of vertices and control points.
- Path
Builder - A
Pathbuilder. - Path
Prompt Options - The options that can be configured for a file dialog prompt
- Percentage
- A type representing a percentage value.
- Pixels
- Represents a length in pixels, the base unit of measurement in the UI framework.
- Point
- Describes a location in a 2D cartesian space.
- Point
Refinement - A refinable version of [
#ident], see that documentation for details. - Prompt
Handle - A handle to a prompt that can be used to interact with it.
- Prompt
Response - The event emitted when a prompt’s option is selected. The usize is the index of the selected option, from the actions passed to the prompt.
- Radians
- Represents an angle in Radians
- Rems
- Represents a length in rems, a unit based on the font-size of the window, which can be assigned with
Window::set_rem_size. - Render
Image - A cached and processed image, in BGRA format
- Renderable
Prompt Handle - A prompt handle capable of being rendered in a window.
- Reservation
- Returned by Context::reserve_entity to later be passed to Context::insert_entity. Allows you to obtain the EntityId for a entity before it is created.
- Retain
AllImage Cache - An implementation of ImageCache, that uses an LRU caching strategy to unload images when the cache is full
- Retain
AllImage Cache Provider - A provider struct for creating a retain-all image cache inline
- Rgba
- An RGBA color
- Scaled
Pixels - Represents scaled pixels that take into account the device’s scale factor.
- Scope
- Scope manages a set of tasks that are enqueued and waited on together. See
BackgroundExecutor::scoped. - Screen
Capture Frame - A frame of video captured from a screen.
- Scroll
Anchor - Represents an element that can be scrolled to in its parent element. Contrary to ScrollHandle::scroll_to_active_item, an anchored element does not have to be an immediate child of the parent.
- Scroll
Handle - A handle to the scrollable aspects of an element. Used for accessing scroll state, like the current scroll offset, and for mutating the scroll state, like scrolling to a specific child.
- Scroll
Wheel Event - A mouse wheel event from the platform.
- Serialized
Location - Serializable variant of
core::panic::Location - Serialized
Task Timing - Serializable variant of [
TaskTiming] - Serialized
Thread Task Timings - Serializable variant of [
ThreadTaskTimings] - Shaped
Glyph - A single glyph, ready to paint.
- Shaped
Line - A line of text that has been shaped and decorated.
- Shaped
Run - A run of text that has been shaped .
- Shared
String - A shared string is an immutable string that can be cheaply cloned in GPUI
tasks. Essentially an abstraction over an
Arc<str>and&'static str, - Shared
Uri - A
SharedStringcontaining a URI. - Size
- A structure representing a two-dimensional size with width and height in a given unit.
- Size
Refinement - A refinable version of [
#ident], see that documentation for details. - Source
Metadata - Metadata for a given ScreenCaptureSource
- Stateful
- A wrapper around an element that can store state, produced after assigning an ElementId.
- Strikethrough
Style - The properties that can be applied to a strikethrough.
- Strikethrough
Style Refinement - A refinable version of [
#ident], see that documentation for details. - Stroke
Options - Parameters for the tessellator.
- Style
- The CSS styling that can be applied to an element via the
Styledtrait - Style
Refinement - A refinable version of [
#ident], see that documentation for details. - Styled
Text - Renders text with runs of different styles.
- Subscription
- A handle to a subscription created by GPUI. When dropped, the subscription is cancelled and the callback will no longer be invoked.
- Surface
- A surface element.
- Svg
- An SVG element.
- SvgRenderer
- A struct holding everything necessary to render SVGs.
- System
Window TabController - A controller for managing window tabs.
- Task
- Task is a primitive that allows work to happen in the background.
- Task
Label - A task label is an opaque identifier that you can use to refer to a task in tests.
- Text
Layout - The Layout for TextElement. This can be used to map indices to pixels and vice versa.
- TextRun
- A styled run of text, for use in
crate::TextLayout. - Text
Style - The properties that can be used to style text in GPUI
- Text
Style Refinement - A refinable version of [
#ident], see that documentation for details. - Text
System - The GPUI text rendering sub system.
- Tiling
- A type to describe which sides of the window are currently tiled in some way
- Timeout
- Error returned by with_timeout when the timeout duration elapsed before the future resolved
- Timer
- A future or stream that emits timed events.
- Titlebar
Options - The options that can be configured for a window’s titlebar
- Tooltip
Id - An identifier for a tooltip.
- Transformation
- A transformation to apply to an SVG element.
- Transformation
Matrix - A data type representing a 2 dimensional transformation that can be applied to an element.
- UTF16
Selection - A struct representing a selection in a text buffer, in UTF16 characters. This is different from a range because the head may be before the tail.
- Underline
Style - The properties that can be applied to an underline.
- Underline
Style Refinement - A refinable version of [
#ident], see that documentation for details. - Uniform
List - A list element for efficiently laying out and displaying a list of uniform-height elements.
- Uniform
List Frame State - Frame state used by the UniformList.
- Uniform
List Scroll Handle - A handle for controlling the scroll position of a uniform list. This should be stored in your view and passed to the uniform_list on each frame.
- Uniform
List Scroll State - Weak
Entity - A weak reference to a entity of the given type.
- Weak
Focus Handle - A weak reference to a focus handle.
- Window
- Holds the state for a specific window.
- Window
Controls - What window controls this platform supports
- Window
Handle - A handle to a window with a specific root view type. Note that this does not keep the window alive on its own.
- Window
Id - A unique identifier for a window.
- Window
Options - The variables that can be configured when creating a new window
- Window
Text System - The GPUI text layout subsystem.
- Wrap
Boundary - A boundary at which a line was wrapped
- Wrapped
Line - A line of text that has been shaped, decorated, and wrapped by the text layout system.
- Wrapped
Line Layout - A line of text that has been wrapped to fit a given width
Enums§
- Absolute
Length - Represents an absolute length in pixels or rems.
- Action
Build Error - Error type for
Keystroke::parse. This is used instead ofanyhow::Errorso that Zed can use markdown to display it. - Align
Content - Sets the distribution of space between and around content items For Flexbox it controls alignment in the cross axis For Grid it controls alignment in the block axis
- Align
Items - Used to control how child nodes are aligned. For Flexbox it controls alignment in the cross axis For Grid it controls alignment in the block axis
- Anchored
FitMode - Which algorithm to use when fitting the anchored element to be inside the window.
- Anchored
Position Mode - Which algorithm to use when positioning the anchored element.
- ArcCow
- Asset
Logger - An asset Loader which logs the
Errvariant of aResultduring loading - Available
Space - The space available for an element to be laid out in
- Axis
- Axis in a 2D cartesian space.
- Border
Style - The style of a border.
- Click
Event - A click event, generated when a mouse button or keyboard button is pressed and released.
- Clipboard
Entry - Either a ClipboardString or a ClipboardImage
- Color
Space - A color space for color interpolation.
- Corner
- Identifies a corner of a 2d box.
- Cursor
Style - The style of the cursor (pointer)
- Decorations
- A type to describe how this window is currently configured
- Definite
Length - A non-auto length that can be defined in pixels, rems, or percent of parent.
- Dispatch
Phase - Represents the two different phases when dispatching events.
- Display
- Sets the layout used for the children of this node
- Element
Id - An identifier for an
Element. - File
Drop Event - A file drop event from the platform, generated when files are dragged and dropped onto the window.
- Fill
- The kinds of fill that can be applied to a shape.
- Fill
Rule - The fill rule defines how to determine what is inside and what is outside of the shape.
- Flex
Direction - The direction of the flexbox layout main axis.
- Flex
Wrap - Controls whether flex items are forced onto one line or can wrap onto multiple lines.
- Font
Style - Allows italic or oblique faces to be selected.
- Grid
Placement - The placement of an item within a grid layout’s column or row.
- Hitbox
Behavior - How the hitbox affects mouse behavior.
- Image
Asset Loader - An image loader for the GPUI asset system
- Image
Cache Error - An error that can occur when interacting with the image cache.
- Image
Cache Item - An image cache item
- Image
Format - One of the editor’s supported image formats (e.g. PNG, JPEG) - used when dealing with images in the clipboard
- Image
Source - A source of image content.
- KeyBinding
Context Predicate - A datastructure for resolving whether an action should be dispatched Representing a small language for describing which contexts correspond to which actions.
- Keyboard
Button - An enum representing the keyboard button that was pressed for a click event.
- Length
- A length that can be defined in pixels, rems, percent of parent, or auto.
- Line
Fragment - A fragment of a line that can be wrapped.
- List
Alignment - Whether the list is scrolling from top to bottom or bottom to top.
- List
Horizontal Sizing Behavior - The horizontal sizing behavior to apply during layout.
- List
Measuring Behavior - The measuring behavior to apply during layout.
- List
Sizing Behavior - The sizing behavior to apply during layout.
- Menu
Item - The different kinds of items that can be in a menu
- Mouse
Button - An enum representing the mouse button that was pressed.
- Navigation
Direction - A navigation direction, such as back or forward.
- Object
Fit - How to fit the image into the bounds of the element.
- OsAction
- OS actions are actions that are recognized by the operating system This allows the operating system to provide specialized behavior for these actions
- Overflow
- How children overflowing their container should affect layout
- Owned
Menu Item - The different kinds of items that can be in a menu
- Path
Style - Style of the PathBuilder
- Platform
Input - An enum corresponding to all kinds of platform input events.
- Position
- The positioning strategy for this item.
- Priority
- Task priority
- Prompt
Button - Prompt Button
- Prompt
Level - What kind of prompt styling to show
- Quit
Mode - Defines when the application should automatically quit.
- Realtime
Priority - Realtime task priority
- Resize
Edge - Which part of the window to resize
- Resource
- An enum representing
- Scroll
Delta - The scroll delta for a scroll wheel event.
- Scroll
Strategy - Where to place the element scrolled to.
- Surface
Source - A source of a surface’s content.
- SvgSize
- The size in which to render the SVG.
- System
Menu Type - The type of system menu
- Text
Align - How to align text within the element
- Text
Overflow - How to truncate text that overflows the width of the element
- Touch
Phase - The phase of a touch motion event. Based on the winit enum of the same name.
- Visibility
- The value of the visibility property, similar to the CSS property
visibility - White
Space - How to handle whitespace in text
- Window
Appearance - The appearance of the window, as defined by the operating system.
- Window
Background Appearance - The appearance of the background of the window itself, when there is no content or the content is transparent.
- Window
Bounds - Represents the status of how a window should be opened.
- Window
Control Area - A type of window control area that corresponds to the platform window.
- Window
Decorations - A type to describe the appearance of a window
- Window
Kind - The kind of window to create
Constants§
- DEFAULT_
ADDITIONAL_ WINDOW_ SIZE - A 6:5 aspect ratio minimum window size to be used for functional, additional-to-main-Zed windows, like the settings and rules library windows.
- KEYSTROKE_
PARSE_ EXPECTED_ MESSAGE - Sentence explaining what keystroke parser expects, starting with “Expected …”
- LOADING_
DELAY - The delay before showing the loading state.
- SHUTDOWN_
TIMEOUT - The duration for which futures returned from Context::on_app_quit can run before the application fully quits.
- SMOOTH_
SVG_ SCALE_ FACTOR - When rendering SVGs, we render them at twice the size to get a higher-quality result.
Traits§
- Action
- Actions are used to implement keyboard-driven UI. When you declare an action, you can bind keys to the action in the keymap and listeners for that action in the element tree.
- Along
- A trait for accessing the given unit along a certain axis.
- Animation
Ext - An extension trait for adding the animation wrapper to both Elements and Components
- AppContext
- The context trait, allows the different contexts in GPUI to be used interchangeably for certain operations.
- AsKeystroke
- This is a helper trait so that we can simplify the implementation of some functions
- Asset
- A trait for asynchronous asset loading.
- Asset
Source - A source of assets for this app to use.
- Borrow
AppContext - A helper trait for auto-implementing certain methods on contexts that can be used interchangeably.
- Element
- Implemented by types that participate in laying out and painting the contents of a window. Elements form a tree and are laid out according to web-based layout rules, as implemented by Taffy. You can create custom elements by implementing this trait, see the module-level documentation for more details.
- Entity
Input Handler - Implement this trait to allow views to handle textual input when implementing an editor, field, etc.
- Event
Emitter - A trait for tying together the types of a GPUI entity and the events it can emit.
- Flatten
- A flatten equivalent for anyhow
Results. - Focusable
- Focusable allows users of your view to easily focus it (using window.focus_view(cx, view))
- Future
Ext - Extensions for Future types that provide additional combinators and utilities.
- Global
- A marker trait for types that can be stored in GPUI’s global state.
- Half
- Provides a trait for types that can calculate half of their value.
- Image
Cache - An object that can handle the caching and unloading of images. Implementations of this trait should ensure that images are removed from all windows when they are no longer needed.
- Image
Cache Provider - An object that can create an ImageCache during the render phase. See the ImageCache trait for more information.
- Input
Event - An event from a platform input source.
- Input
Handler - Zed’s interface for handling text input from the platform’s IME system This is currently a 1:1 exposure of the NSTextInputClient API:
- Interactive
Element - A trait for elements that want to use the standard GPUI event handlers that don’t require any state.
- Into
Element - Implemented by any type that can be converted into an element.
- IsEmpty
- IsZero
- A trait for checking if a value is zero.
- KeyEvent
- A key event from the platform.
- Managed
View - ManagedView is a view (like a Modal, Popover, Menu, etc.) where the lifecycle of the view is handled by another view.
- Mouse
Event - A mouse event from the platform.
- Negate
- Provides a trait for types that can negate their values.
- Parent
Element - This is a helper trait to provide a uniform interface for constructing elements that can accept any number of any kind of child elements
- Platform
Display - A handle to a platform’s display, e.g. a monitor or laptop screen.
- Platform
Keyboard Layout - A trait for platform-specific keyboard layouts
- Platform
Keyboard Mapper - A trait for platform-specific keyboard mappings
- Prompt
- A prompt that can be rendered in the window.
- Read
Global - A trait for reading a global value from the context.
- Refineable
- A trait for types that can be refined with partial updates.
- Render
- An object that can be drawn to the screen. This is the trait that distinguishes “views” from
other entities. Views are
Entity’s whichimpl Renderand drawn to the screen. - Render
Once - You can derive
IntoElementon any type that implements this trait. It is used to construct reusablecomponentsout of plain data. Think of components as a recipe for a certain pattern of elements. RenderOnce allows you to invoke this pattern, without breaking the fluent builder pattern of the element APIs. - Screen
Capture Source - A source of on-screen video content that can be captured.
- Screen
Capture Stream - A video stream captured from a screen.
- Stateful
Interactive Element - A trait for elements that want to use the standard GPUI interactivity features that require state.
- Styled
- A trait for elements that can be styled. Use this to opt-in to a utility CSS-like styling API.
- Styled
Image - Style an image element.
- Uniform
List Decoration - A decoration for a
UniformList. This can be used for various things, such as rendering indent guides, or other visual effects. - Update
Global - A trait for updating a global value in the context.
- Visual
Context - This trait is used for the different visual contexts in GPUI that require a window to be present.
Functions§
- anchored
- anchored gives you an element that will avoid overflowing the window bounds. Its children should have no margin to avoid measurement issues.
- auto
- Returns a
Lengthrepresenting an automatic length. - background_
executor - Returns a background executor for the current platform.
- black
- Pure black in
Hsla - blue
- The color blue in
Hsla - bounce
- Apply the given easing function, first in the forward direction and then in the reverse direction
- bounds
- Create a bounds with the given origin and size
- canvas
- Construct a canvas element with the given paint callback. Useful for adding short term custom drawing to a view.
- combine_
highlights - Combine and merge the highlights and ranges in the two iterators.
- deferred
- Builds a
Deferredelement, which delays the layout and paint of its child. - div
- Construct a new
Divelement - ease_
in_ out - The quadratic ease-in-out function, which starts and ends slowly but speeds up in the middle
- ease_
out_ quint - The Quint ease-out function, which starts quickly and decelerates to a stop
- fallback_
prompt_ renderer - Use this function in conjunction with App::set_prompt_builder to force GPUI to always use the fallback prompt renderer.
- fill
- Creates a filled quad with the given bounds and background color.
- font
- Get a
Fontfor a given name. - generate_
list_ of_ all_ registered_ actions - Generate a list of all the registered actions. Useful for transforming the list of available actions into a format suited for static analysis such as in validating keymaps, or generating documentation.
- green
- The color green in
Hsla - guess_
compositor - Return which compositor we’re guessing we’ll use. Does not attempt to connect to the given compositor
- hash
- Use a quick, non-cryptographically secure hash function to get an identifier from data
- hsla
- Construct an
Hslaobject from plain values - image_
cache - An image cache element, all its child img elements will use the cache specified by this element.
Note that this could as simple as passing an
Entity<T: ImageCache> - img
- Create a new image element.
- is_
no_ action - Returns whether or not this action represents a removed key binding.
- linear
- The linear easing function, or delta itself
- linear_
color_ stop - Creates a new linear color stop.
- linear_
gradient - Creates a LinearGradient background color.
- list
- Construct a new list element
- opaque_
grey - Opaque grey in
Hsla, values will be clamped to the range [0, 1] - outline
- Creates a rectangle outline with the given bounds, border color, and a 1px border width
- pattern_
slash - Creates a hash pattern background
- percentage
- Generate a
Radianfrom a percentage of a full circle. - phi
- Returns the Golden Ratio, i.e.
~(1.0 + sqrt(5.0)) / 2.0. - point
- Constructs a new
Point<T>with the given x and y coordinates. - pulsating_
between - A custom easing function for pulsating alpha that slows down as it approaches 0.1
- px
- Constructs a
Pixelsvalue representing a length in pixels. - quad
- Creates a quad with the given parameters.
- quadratic
- The quadratic easing function, delta * delta
- radians
- Create a
Radianfrom a raw value - red
- The color red in
Hsla - relative
- Constructs a
DefiniteLengthrepresenting a relative fraction of a parent size. - rems
- Constructs a
Remsvalue representing a length in rems. - retain_
all - Constructs a retain-all image cache that uses the element state associated with the given ID.
- rgb
- Convert an RGB hex color code number to a color type
- rgba
- Convert an RGBA hex color code number to
Rgba - size
- Constructs a new
Size<T>with the provided width and height. - solid_
background - Creates a solid background color.
- surface
- Create a new surface element.
- svg
- Create a new SVG element.
- transparent_
black - Transparent black in
Hsla - transparent_
white - Transparent white in
Hsla - uniform_
list - uniform_list provides lazy rendering for a set of items that are of uniform height. When rendered into a container with overflow-y: hidden and a fixed (or max) height, uniform_list will only render the visible subset of items.
- white
- Pure white in
Hsla - yellow
- The color yellow in
Hsla
Type Aliases§
- Align
Self - Used to control how the specified nodes is aligned.
Overrides the parent Node’s
AlignItemsproperty. For Flexbox it controls alignment in the cross axis For Grid it controls alignment in the block axis - Image
Loading Task - An image loading task associated with an image cache.
- ImgResource
Loader - A type alias to the resource loader that the
img()element uses. - Inspector
Renderer - Function set on
Appto render the inspector UI. - Justify
Content - Sets the distribution of space between and around content items For Flexbox it controls alignment in the main axis For Grid it controls alignment in the inline axis
- Justify
Items - Used to control how child nodes are aligned. Does not apply to Flexbox, and will be ignored if specified on a flex container For Grid it controls alignment in the inline axis
- Justify
Self - Used to control how the specified nodes is aligned.
Overrides the parent Node’s
JustifyItemsproperty. Does not apply to Flexbox, and will be ignored if specified on a flex child For Grid it controls alignment in the inline axis - Result
Result<T, Error>- Transform
- Alias for
euclid::default::Transform2D<f32>
Attribute Macros§
Derive Macros§
- Action
Actionderive macro - see the trait documentation for details.- AppContext
- #[derive(AppContext)] is used to create a context out of anything that holds a
&mut AppNote that a#[app]attribute is required to identify the variable holding the &mut App. - Into
Element - #[derive(IntoElement)] is used to create a Component out of anything that implements
the
RenderOncetrait. - Refineable
- Visual
Context - #[derive(VisualContext)] is used to create a visual context out of anything that holds a
&mut Windowand implementsAppContextNote that a#[app]and a#[window]attribute are required to identify the variables holding the &mut App, and &mut Window respectively.