RedEye ships with twelve built-in widgets that cover the most common desktop UI needs: text, buttons, images, layout containers, live window and application lists, a text input, an embedded browser, a context menu, and an external process host. Each widget is declared as an XML element inside aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ryzhpolsos/redeye/llms.txt
Use this file to discover all available pages before exploring further.
<window> in your RWML layout files. All widgets also accept the common attributes defined by BaseShellWidget — x, y, width, height, dock, margin, padding, color, backgroundColor, font, id, toolTip, and event handlers.
<label> — static text display
<label> — static text display
Renders a read-only text label using a Windows Forms
Label control. Use it for window titles, clock readouts, status text, or any content that is driven by an expression.Widget-specific attributes
The text to display. Supports RWML expressions, so you can interpolate variables:
text="${window.title}".Text alignment within the control bounds. Accepts any
System.Drawing.ContentAlignment value: topLeft, topCenter, topRight, middleLeft, middleCenter, middleRight, bottomLeft, bottomCenter, bottomRight.Example
<button> — clickable button
<button> — clickable button
<image> — image display
<image> — image display
Renders a Windows Forms
PictureBox control. Images are loaded through the resource manager using res.loadImage or res.loadIcon expression functions, or provided as resource IDs stored in variables (for example, ${window.icon} set by <windowList>).Widget-specific attributes
Resource ID of the image to display. Typically the result of
res.loadImage(path), res.loadIcon(path), or a variable holding a dynamically loaded bitmap such as ${window.icon}.How the image fills the control bounds. Accepts any
System.Windows.Forms.PictureBoxSizeMode value: normal, stretchImage, autoSize, centerImage, zoom.Resize the loaded image to this width before assigning it to the control. Useful when the source image is larger than needed.
Resize the loaded image to this height. Pair with
imageWidth to constrain both dimensions.Example
<panel> — generic container
<panel> — generic container
A general-purpose container widget backed by a Windows Forms
Panel. Child widgets are declared as nested XML elements. The panel propagates UpdateConfig and UpdateControl to all children.<panel> accepts no widget-specific attributes beyond the common set. Its primary purpose is grouping, background color, padding, and click-target areas.Example
<flowPanel> — flow layout container
<flowPanel> — flow layout container
A container backed by a Windows Forms
FlowLayoutPanel. Child widgets are arranged automatically in a single flow direction, optionally wrapping to the next line when space runs out.Widget-specific attributes
Flow direction for child widgets. Accepts any
System.Windows.Forms.FlowDirection value: leftToRight, rightToLeft, topDown, bottomUp.When
true, child widgets wrap to the next row or column when the panel edge is reached.Example
<tablePanel> — grid layout container
<tablePanel> — grid layout container
A container backed by a Windows Forms
TableLayoutPanel. Child widgets are placed into cells by providing a table.position attribute on each child. Rows and columns each receive an equal percentage of the panel’s size.Widget-specific attributes
Total number of rows in the grid. Row heights are divided equally.
Total number of columns in the grid. Column widths are divided equally.
Controls how the table grows when content overflows. Accepts any
System.Windows.Forms.TableLayoutPanelGrowStyle value: fixedSize, addRows, addColumns.Child widget placement attributes
These attributes are placed on child widgets, not on<tablePanel> itself.Comma-separated
column,row index (zero-based) of the cell to place the child widget into. Example: table.position="1,2" places the widget in column 1, row 2.Number of rows the child widget spans.
Number of columns the child widget spans.
Cell placement is finalized during
PostInitialize, after all widgets in the window have been created. Adding children at runtime is not supported.Example
<textBox> — text input
<textBox> — text input
A single-line or multi-line text input backed by a Windows Forms
TextBox. As the user types, the current value is written into a named RWML variable so other widgets can read it via expressions.Widget-specific attributes
Initial text content of the input field.
Name of the RWML variable that receives the current input value on every
TextChanged event. Other widgets can reference this variable as ${variableName}.When
true, the text box accepts multiple lines of input.Example
<webView> — embedded browser
<webView> — embedded browser
Embeds a Windows Forms You can also provide HTML content as the inner text of the
WebBrowser control (Internet Explorer engine). Useful for displaying HTML-based widgets such as clocks, charts, or custom UI rendered from local HTML files.Widget-specific attributes
URL to navigate to. Mutually exclusive with
fileName and content.Path to a local HTML file whose contents are loaded as the document. Mutually exclusive with
url and content.Inline HTML string to use as the document. Mutually exclusive with
url and fileName.When
true, vertical and horizontal scroll bars are shown when content overflows.<webView> element instead of using the content attribute.Example
<windowList> — open window list
<windowList> — open window list
Displays the list of currently open desktop windows as a flow of repeated item widgets. Each item is built from a child template node. When windows open, close, activate, or change state, the list updates automatically by listening to the shell event stream.
Widget-specific attributes
Layout direction for item widgets.
horizontal flows items left-to-right; vertical flows them top-to-bottom.Template node
The single direct child element of<windowList> is the item template. It is instantiated once per open window. Inside the template you can reference the following variables:| Variable | Type | Description |
|---|---|---|
${window.handle} | string | Win32 HWND as a decimal integer |
${window.title} | string | Window title bar text |
${window.icon} | string | Resource ID of the window’s icon bitmap |
${window.isActive} | boolean string | true when the window has focus |
${window.isMinimized} | boolean string | true when the window is minimized |
${window.showCmd} | string | ShowCmd value from WINDOWPLACEMENT |
Example
<appList> — installed application list
<appList> — installed application list
Displays the list of installed applications sourced from the system’s Start Menu special folder. Each application is rendered from a single child template node. The list is built once at initialization.
Widget-specific attributes
<appList> has no widget-specific attributes. Place it inside a scrollable container (such as a <tablePanel> with autoScroll) to handle long lists.Template node
The single direct child of<appList> is the item template. Inside the template you can reference the following variables:| Variable | Type | Description |
|---|---|---|
${app.name} | string | Display name of the application |
${app.command} | string | Launch command or path |
${app.icon} | string | Resource ID of the application’s icon bitmap |
Example
<contextMenu> — right-click menu
<contextMenu> — right-click menu
<externalProcess> — embedded process window
<externalProcess> — embedded process window
Launches an external process and reparents its main window into a panel inside your shell layout. Useful for embedding system tray applets, media player controls, or other Windows applications directly in your desktop surfaces.The process is started during
PostInitialize. RedEye finds the target window by class name, class regex, title regex, or main window handle, then calls SetParent to embed it.Widget-specific attributes
Executable path to launch.
Command-line arguments passed to the process.
Exact Win32 window class name of the target window. Checked first; takes priority over
classMatch and titleMatch.Regular expression matched against the Win32 class name of each visible window. Used when
class is not specified.Regular expression matched against the window title of each visible window. Used as a fallback when neither
class nor classMatch finds a match.