Documentation
¶
Overview ¶
Package gelm is a pure-Go (no cgo) widget toolkit for Wayland and a counterpart of relm4: a component framework with typed messages, a retained widget tree with GTK4/libadwaita-class widgets, xdg-shell windows and layer-shell surfaces, a CSS engine over a typed palette, the desktop's portals and protocols, and one event loop that idles at 0% CPU.
Applications import the public packages:
component the component framework: components, controllers,
factories, workers, commands (headless tests in
component/componenttest)
ui typed view builders, one per widget
app the session, windows and layer surfaces, the loop,
dialogs, popovers, desktop services
widget the widget tree, theme, CSS, actions, bindings
(libadwaita style classes in widget/css)
render the premultiplied canvas, shaped text, icons
anim tweens, easing, springs and timelines
appearance the desktop's color scheme, accent and contrast
i18n gettext catalogs
highlight syntax highlighters for the code view
media video and sound playback
pdf PDF writing
transfer clipboard and drag-and-drop content
dmabuf dma-buf frame descriptions
capture screen and window capture
vinput virtual pointer and keyboard injection
wlr generated Wayland protocol bindings
Everything under internal/ is implementation. The docs/ directory holds the reference: architecture, components, the application, input and threading models, CSS, appearance, icons, accessibility, the inspector, and the capability map in docs/completeness.md.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package anim declares time-based animations: tweens with easing curves, combined into timelines with Sequence, Parallel and Delay, and launched with Play.
|
Package anim declares time-based animations: tweens with easing curves, combined into timelines with Sequence, Parallel and Delay, and launched with Play. |
|
Package app owns the shared event loop: buffer pooling, input routing into the widget tree, frame-callback pacing, and idle dispatch.
|
Package app owns the shared event loop: buffer pooling, input routing into the widget tree, frame-callback pacing, and idle dispatch. |
|
Package appearance holds the desktop's presentation preferences as xdg-desktop-portal publishes them: the color scheme, the accent color and the contrast level.
|
Package appearance holds the desktop's presentation preferences as xdg-desktop-portal publishes them: the color scheme, the accent color and the contrast level. |
|
Package capture copies screen contents out of the compositor: whole outputs and output regions through wlr-screencopy, single windows through ext-image-copy-capture (with the ext-foreign-toplevel-list enumeration and its capture sources) or Hyprland's toplevel-export, and continuous damage-driven output capture through an ext-image-copy-capture session (Stream).
|
Package capture copies screen contents out of the compositor: whole outputs and output regions through wlr-screencopy, single windows through ext-image-copy-capture (with the ext-foreign-toplevel-list enumeration and its capture sources) or Hyprland's toplevel-export, and continuous damage-driven output capture through an ext-image-copy-capture session (Stream). |
|
cmd
|
|
|
gelm-a11y
command
Command gelm-a11y is the accessibility demo target: a small form whose every control carries a semantic role and label, served to screen readers through the in-process AT-SPI bridge.
|
Command gelm-a11y is the accessibility demo target: a small form whose every control carries a semantic role and label, served to screen readers through the in-process AT-SPI bridge. |
|
gelm-bar
command
Command gelm-bar is a layer-shell top bar component: a logo pill, the clock, and a seconds gauge, ticked once a second by Application.Every.
|
Command gelm-bar is a layer-shell top bar component: a logo pill, the clock, and a seconds gauge, ticked once a second by Application.Every. |
|
gelm-capture
command
Command gelm-capture is the capture package's consumer: it lists the compositor's outputs and toplevels, screenshots any of them to a PNG (whole outputs through wlr-screencopy or ext-image-copy-capture, single windows through the foreign toplevel capture), and follows one output continuously with the damage-driven Stream, writing a numbered PNG per changed frame.
|
Command gelm-capture is the capture package's consumer: it lists the compositor's outputs and toplevels, screenshots any of them to a PNG (whole outputs through wlr-screencopy or ext-image-copy-capture, single windows through the foreign toplevel capture), and follows one output continuously with the damage-driven Stream, writing a numbered PNG per changed frame. |
|
gelm-columns
command
Command gelm-columns is the tabular/tree view demo (#90): ten thousand rows sorted and filtered through the header and the search entry (both instant - the view is virtualized), a tree tab with the expander column and indent guides, and a drag-to-reorder tab.
|
Command gelm-columns is the tabular/tree view demo (#90): ten thousand rows sorted and filtered through the header and the search entry (both instant - the view is virtualized), a tree tab with the expander column and indent guides, and a drag-to-reorder tab. |
|
gelm-dialogs
command
Command gelm-dialogs is the dialogs showcase: one window of buttons opening every preset dialog constructor - MessageBox, PromptDialog, ColorChooserDialog, FontChooserDialog, CalendarDialog - plus the file dialogs, the adaptive dialog, and the about dialog, all parented to the window so modality and Escape behavior can be compared side by side.
|
Command gelm-dialogs is the dialogs showcase: one window of buttons opening every preset dialog constructor - MessageBox, PromptDialog, ColorChooserDialog, FontChooserDialog, CalendarDialog - plus the file dialogs, the adaptive dialog, and the about dialog, all parented to the window so modality and Escape behavior can be compared side by side. |
|
gelm-dnd
command
Command gelm-dnd is the cross-window drag-and-drop demo: two toplevel windows, each holding color swatches that are both drag sources and drop targets.
|
Command gelm-dnd is the cross-window drag-and-drop demo: two toplevel windows, each holding color swatches that are both drag sources and drop targets. |
|
gelm-draw
command
Command gelm-draw is the custom-drawing demo, the relm4 drawing example's analog: a widget.DrawingArea whose OnDraw paints straight onto the Canvas - a polar rose sampled per point, a sweep hand, and axis lines - with QueueDraw on a timer animating it, damage tracking repainting only the area.
|
Command gelm-draw is the custom-drawing demo, the relm4 drawing example's analog: a widget.DrawingArea whose OnDraw paints straight onto the Canvas - a polar rose sampled per point, a sweep hand, and axis lines - with QueueDraw on a timer animating it, damage tracking repainting only the area. |
|
gelm-gpu
command
Command gelm-gpu shows a GPUArea: the area's surface sits below the window and the application paces its own frames through OnFrame.
|
Command gelm-gpu shows a GPUArea: the area's surface sits below the window and the application paces its own frames through OnFrame. |
|
gelm-hello
command
Command gelm-hello is the showcase demo, built the way an app outside this module builds one: a component whose view is declared with the typed ui builders, hosted in one toplevel window.
|
Command gelm-hello is the showcase demo, built the way an app outside this module builds one: a component whose view is declared with the typed ui builders, hosted in one toplevel window. |
|
gelm-i18n
command
Command gelm-i18n localizes one app with a real gettext catalog: the Norwegian .po embedded under locale/ is loaded through package i18n, and every string - gelm's built-in chrome (dialog buttons, the file picker's places) and the demo's own, a plural included - flows through widget.Tr and TrN. It starts in the environment's language when a catalog exists for it; the button toggles.
|
Command gelm-i18n localizes one app with a real gettext catalog: the Norwegian .po embedded under locale/ is loaded through package i18n, and every string - gelm's built-in chrome (dialog buttons, the file picker's places) and the demo's own, a plural included - flows through widget.Tr and TrN. It starts in the environment's language when a catalog exists for it; the button toggles. |
|
gelm-ime
command
Command gelm-ime is the IME composition demo: an entry and a text area driven by whatever input method the desktop runs, with a status line mirroring each field's composing state and contents - the preedit an IME shows at the caret, and the commit that lands when composition finishes.
|
Command gelm-ime is the IME composition demo: an entry and a text area driven by whatever input method the desktop runs, with a status line mirroring each field's composing state and contents - the preedit an IME shows at the caret, and the commit that lands when composition finishes. |
|
gelm-invoke
command
Command gelm-invoke demonstrates the threading model.
|
Command gelm-invoke demonstrates the threading model. |
|
gelm-launcher
command
Command gelm-launcher is the M5 launcher app: a keyboard-exclusive layer-shell overlay holding a search entry that filters a grid of apps, and live thumbnails of the compositor's open toplevels captured through the capture package on a private connection.
|
Command gelm-launcher is the M5 launcher app: a keyboard-exclusive layer-shell overlay holding a search entry that filters a grid of apps, and live thumbnails of the compositor's open toplevels captured through the capture package on a private connection. |
|
gelm-lock
command
Command gelm-lock is the M5 lock screen: one ext-session-lock-v1 surface per output with a centered auth entry, built through app.LockSession.
|
Command gelm-lock is the M5 lock screen: one ext-session-lock-v1 surface per output with a centered auth entry, built through app.LockSession. |
|
gelm-messages
command
Command gelm-messages demonstrates the typed messaging layer (app/message.go) and single-instance activation (app/instance.go): one SharedState counter shared across two windows - either window's buttons move both labels - and one Stream broker that any depth of code can reach without threading senders: both windows subscribe, a button publishes, every window toasts.
|
Command gelm-messages demonstrates the typed messaging layer (app/message.go) and single-instance activation (app/instance.go): one SharedState counter shared across two windows - either window's buttons move both labels - and one Stream broker that any depth of code can reach without threading senders: both windows subscribe, a button publishes, every window toasts. |
|
gelm-multi
command
Command gelm-multi exercises the application model: one process running a declarative layer-shell bar on every output plus toplevel windows created on demand, with a close-request veto.
|
Command gelm-multi exercises the application model: one process running a declarative layer-shell bar on every output plus toplevel windows created on demand, with a close-request veto. |
|
gelm-multilist
command
Command gelm-multilist is the multi-select list client the headless input suite (internal/headlesstest) drives: one window holding a multiple-selection widget.List whose selection and activation land in the trace log, so synthetic keyboard and pointer gestures can be asserted end to end through the compositor.
|
Command gelm-multilist is the multi-select list client the headless input suite (internal/headlesstest) drives: one window holding a multiple-selection widget.List whose selection and activation land in the trace log, so synthetic keyboard and pointer gestures can be asserted end to end through the compositor. |
|
gelm-osd
command
Command gelm-osd is the M5 OSD app: a transient layer-shell popup anchored top-center over the overlay layer - the volume or brightness notification media keys produce.
|
Command gelm-osd is the M5 OSD app: a transient layer-shell popup anchored top-center over the overlay layer - the volume or brightness notification media keys produce. |
|
gelm-panel
command
Command gelm-panel is the layer-shell demo: a right-anchored panel component with a slider, progress bar, switch, checkbox, text entry, notes area and a scrollable list, live through the pointer and keyboard input stack.
|
Command gelm-panel is the layer-shell demo: a right-anchored panel component with a slider, progress bar, switch, checkbox, text entry, notes area and a scrollable list, live through the pointer and keyboard input stack. |
|
gelm-popover
command
Command gelm-popover is the popover client the headless input suite (internal/headlesstest) drives: one window whose button opens a popover holding a focused Entry and a label a timer keeps changing, so typing through the popup grab and loop-driven repaints of an open popover can be asserted end to end through the compositor.
|
Command gelm-popover is the popover client the headless input suite (internal/headlesstest) drives: one window whose button opens a popover holding a focused Entry and a label a timer keeps changing, so typing through the popup grab and loop-driven repaints of an open popover can be asserted end to end through the compositor. |
|
gelm-settings
command
Command gelm-settings is the M5 settings app: typed persisted keys (app/settings.go) behind PreferencesView rows - the adaptive shell of pages, view switcher, and built-in search - so every edit writes through to <config>/dev.stubbe.gelm.settings/settings.json and every restart comes back exactly where it left off.
|
Command gelm-settings is the M5 settings app: typed persisted keys (app/settings.go) behind PreferencesView rows - the adaptive shell of pages, view switcher, and built-in search - so every edit writes through to <config>/dev.stubbe.gelm.settings/settings.json and every restart comes back exactly where it left off. |
|
gelm-states
command
Command gelm-states is the window-state client the headless state suite (internal/headlesstest) drives: one toplevel whose keyboard chords issue the xdg_toplevel state requests - m maximize, n unmaximize, f fullscreen, g unfullscreen, i minimize, p poll the reported state, Escape close - while a status label mirrors only what the compositor CONFIRMS.
|
Command gelm-states is the window-state client the headless state suite (internal/headlesstest) drives: one toplevel whose keyboard chords issue the xdg_toplevel state requests - m maximize, n unmaximize, f fullscreen, g unfullscreen, i minimize, p poll the reported state, Escape close - while a status label mirrors only what the compositor CONFIRMS. |
|
gelm-video
command
Command gelm-video plays a video: a file through ffmpeg (picture and sound) when one is named, otherwise a generated YUV4MPEG2 clip of moving bars decoded in pure Go.
|
Command gelm-video plays a video: a file through ffmpeg (picture and sound) when one is named, otherwise a generated YUV4MPEG2 clip of moving bars decoded in pure Go. |
|
wlpointer
command
Command wlpointer drives a zwlr_virtual_pointer_v1 device against a Wayland compositor: synthetic pointer input for interactive testing.
|
Command wlpointer drives a zwlr_virtual_pointer_v1 device against a Wayland compositor: synthetic pointer input for interactive testing. |
|
zz-vpclick
command
The harness clicker: pointer clicks, wheel, keys, and text on $WAYLAND_DISPLAY through the headless suite's virtual pointer — the manual companion to internal/headlesstest's in-process driving, used to walk a live surface (the settings app on a nested sway) while its trace log runs.
|
The harness clicker: pointer clicks, wheel, keys, and text on $WAYLAND_DISPLAY through the headless suite's virtual pointer — the manual companion to internal/headlesstest's in-process driving, used to walk a live surface (the settings app on a nested sway) while its trace log runs. |
|
Package component is gelm's component framework, the counterpart of relm4's Component: a model with typed input and output messages, an Init that builds its view, an Update that runs on the loop goroutine for every input, and controllers that own a component's lifetime and forward its outputs.
|
Package component is gelm's component framework, the counterpart of relm4's Component: a model with typed input and output messages, an Init that builds its view, an Update that runs on the loop goroutine for every input, and controllers that own a component's lifetime and forward its outputs. |
|
componenttest
Package componenttest runs components without a compositor: a Loop that queues invoked work until the test drives it.
|
Package componenttest runs components without a compositor: a Loop that queues invoked work until the test drives it. |
|
Package dmabuf describes Linux dma-buf frames: GPU (or udmabuf) memory handed to the compositor by file descriptor through zwp_linux_dmabuf_v1, with no copy.
|
Package dmabuf describes Linux dma-buf frames: GPU (or udmabuf) memory handed to the compositor by file descriptor through zwp_linux_dmabuf_v1, with no copy. |
|
Package highlight holds syntax highlighters for widget.TextArea (GtkSourceView's language definitions).
|
Package highlight holds syntax highlighters for widget.TextArea (GtkSourceView's language definitions). |
|
Package i18n is gettext in pure Go: GNU .mo and .po catalogs with plural forms and message contexts, locale resolution from the environment, and catalog lookup in a file system.
|
Package i18n is gettext in pure Go: GNU .mo and .po catalogs with plural forms and message contexts, locale resolution from the environment, and catalog lookup in a file system. |
|
internal
|
|
|
animclock
Package animclock is the animation scheduler the application loop drives: launched pieces, the frame deadlines the loop wakes on, and the tick that advances them.
|
Package animclock is the animation scheduler the application loop drives: launched pieces, the frame deadlines the loop wakes on, and the tick that advances them. |
|
atomicfile
Package atomicfile replaces files whole: the content goes to a uniquely named temporary file beside the target, which is synced and renamed over it, so a reader sees the old file or the new one and never a partial write, and concurrent writers never share a temporary.
|
Package atomicfile replaces files whole: the content goes to a uniquely named temporary file beside the target, which is synced and renamed over it, so a reader sees the old file or the new one and never a partial write, and concurrent writers never share a temporary. |
|
atspi
Package atspi is the in-process AT-SPI bridge (#65): it serves the widget tree's accessibility semantics (widget.Describe and the semantic roles, the plain-Go model of widget/a11y.go) over D-Bus in the AT-SPI2 shape, so screen readers and tools like accerciser can walk a gelm application.
|
Package atspi is the in-process AT-SPI bridge (#65): it serves the widget tree's accessibility semantics (widget.Describe and the semantic roles, the plain-Go model of widget/a11y.go) over D-Bus in the AT-SPI2 shape, so screen readers and tools like accerciser can walk a gelm application. |
|
buffer
Arena: one wl_shm pool per session.
|
Arena: one wl_shm pool per session. |
|
clipboard
Package clipboard implements text copy and paste over the core wl_data_device protocol and, when the compositor offers it, the zwp_primary_selection_unstable_v1 protocol: the offer pipeline for reading a selection, and data sources for claiming either.
|
Package clipboard implements text copy and paste over the core wl_data_device protocol and, when the compositor offers it, the zwp_primary_selection_unstable_v1 protocol: the offer pipeline for reading a selection, and data sources for claiming either. |
|
cmd/uigen
command
Command uigen writes package ui's generated builders: go generate in ui runs it.
|
Command uigen writes package ui's generated builders: go generate in ui runs it. |
|
compose
Package compose turns keysym sequences into text: pressing ' then e on a us-intl/deadkeys layout commits "é".
|
Package compose turns keysym sequences into text: pressing ' then e on a us-intl/deadkeys layout commits "é". |
|
datacontrol
Package datacontrol is the clipboard-manager side of the seat's selections, over ext_data_control_v1 or, on compositors that predate it, zwlr_data_control_unstable_v1.
|
Package datacontrol is the clipboard-manager side of the seat's selections, over ext_data_control_v1 or, on compositors that predate it, zwlr_data_control_unstable_v1. |
|
dbustest
Package dbustest runs private D-Bus daemons for tests: a session- style bus on a fresh unix socket, configured from a file the helper writes itself, so a test needs dbus-daemon on PATH and nothing in /etc (where a distro's session.conf may be absent - NixOS, minimal containers).
|
Package dbustest runs private D-Bus daemons for tests: a session- style bus on a fresh unix socket, configured from a file the helper writes itself, so a test needs dbus-daemon on PATH and nothing in /etc (where a distro's session.conf may be absent - NixOS, minimal containers). |
|
debug
Package debug is gelm's compile-time trace facility.
|
Package debug is gelm's compile-time trace facility. |
|
dmabufwl
Package dmabufwl builds zwp_linux_buffer_params_v1 objects from dmabuf descriptions, the step every linux-dmabuf import shares.
|
Package dmabufwl builds zwp_linux_buffer_params_v1 objects from dmabuf descriptions, the step every linux-dmabuf import shares. |
|
dragdrop
Package dragdrop implements drag and drop over the wl_data_device protocol: the source side (data source + start_drag with an icon), the destination side (offer bookkeeping, accept/reject, payload transfer), and the routing of enter/motion/leave/drop to the target registered for the surface under the drag.
|
Package dragdrop implements drag and drop over the wl_data_device protocol: the source side (data source + start_drag with an icon), the destination side (offer bookkeeping, accept/reject, payload transfer), and the routing of enter/motion/leave/drop to the target registered for the surface under the drag. |
|
emoji
Package emoji is gelm's emoji chooser data (#92): a curated table of common Unicode emoji grouped by category with search keywords, parsed once from a compact literal.
|
Package emoji is gelm's emoji chooser data (#92): a curated table of common Unicode emoji grouped by category with search keywords, parsed once from a compact literal. |
|
golden
Package golden compares rendered pixels against committed PNG snapshots ("goldens"), so render-level tests can assert byte-stable output on any machine.
|
Package golden compares rendered pixels against committed PNG snapshots ("goldens"), so render-level tests can assert byte-stable output on any machine. |
|
headlesstest
Compositor drivers for the harness: the suite itself is compositor-agnostic; the pieces that differ - how to close a client window through the compositor's own control channel, where the boot recipe records the pid, what it named the config and log - live behind this interface.
|
Compositor drivers for the harness: the suite itself is compositor-agnostic; the pieces that differ - how to close a client window through the compositor's own control channel, where the boot recipe records the pid, what it named the config and log - live behind this interface. |
|
headlesstest/inproc
Package inproc runs gelm applications inside a test process against the headless compositor and inspects the output through screencopy: the in-process half of the compositor-in-the-loop suite, for tests that drive the app API directly instead of a demo client.
|
Package inproc runs gelm applications inside a test process against the headless compositor and inspects the output through screencopy: the in-process half of the compositor-in-the-loop suite, for tests that drive the app API directly instead of a demo client. |
|
icons
Icon-theme following (#64): the cache applies live icon-theme switches delivered by the portal monitor (internal/portalsettings), which the application wires in.
|
Icon-theme following (#64): the cache applies live icon-theme switches delivered by the portal monitor (internal/portalsettings), which the application wires in. |
|
imgcache
Package imgcache caches decoded raster images and the resampled rasters widget.Image paints from, under one shared LRU budget.
|
Package imgcache caches decoded raster images and the resampled rasters widget.Image paints from, under one shared LRU budget. |
|
inspect
The doctor diagnostics block: one line block a bug report carries verbatim ("here is my gelm doctor output"), covering the session's bound globals and their versions, outputs and scales, the resolved cursor theme, the fonts sysfont selected, and the shm buffer format.
|
The doctor diagnostics block: one line block a bug report carries verbatim ("here is my gelm doctor output"), covering the session's bound globals and their versions, outputs and scales, the resolved cursor theme, the fonts sysfont selected, and the shm buffer format. |
|
keymapfd
Package keymapfd reads the xkb keymap a wl_keyboard.keymap event carries.
|
Package keymapfd reads the xkb keymap a wl_keyboard.keymap event carries. |
|
layersurface
Package layersurface maps the wlr-layer-shell role onto a wl_surface: anchor, layer, keyboard mode, the configure handshake, and the closed signal.
|
Package layersurface maps the wlr-layer-shell role onto a wl_surface: anchor, layer, keyboard mode, the configure handshake, and the closed signal. |
|
logutil
Package logutil holds gelm's single injectable logger.
|
Package logutil holds gelm's single injectable logger. |
|
mailbox
Package mailbox is the coalesced-wake queue every loop messenger shares: items appended from any goroutine, drained in order on the loop by one closure the first append schedules.
|
Package mailbox is the coalesced-wake queue every loop messenger shares: items appended from any goroutine, drained in order on the loop by one closure the first append schedules. |
|
notify
Package notify sends desktop notifications: the xdg-desktop-portal Notification interface when a portal owns the desktop, org.freedesktop.Notifications (the GNOME spec every daemon implements) as the fallback, and nothing at all without a session bus - the appearance.md failure model, inert and logged at Debug.
|
Package notify sends desktop notifications: the xdg-desktop-portal Notification interface when a portal owns the desktop, org.freedesktop.Notifications (the GNOME spec every daemon implements) as the fallback, and nothing at all without a session bus - the appearance.md failure model, inert and logged at Debug. |
|
popup
The enter/exit visual half of a popup: a slide-and-fade wrapper the coordinator drives.
|
The enter/exit visual half of a popup: a slide-and-fade wrapper the coordinator drives. |
|
portalsettings
Package portalsettings follows the desktop settings xdg-desktop-portal publishes (color scheme, accent color, contrast, icon theme) over the session bus.
|
Package portalsettings follows the desktop settings xdg-desktop-portal publishes (color scheme, accent color, contrast, icon theme) over the session bus. |
|
recentfiles
Package recentfiles tracks recently used files in the XDG recently-used.xbel format (TOML-free, XML as the spec says), so gelm apps share the recents list with the desktop's other citizens.
|
Package recentfiles tracks recently used files in the XDG recently-used.xbel format (TOML-free, XML as the spec says), so gelm apps share the recents list with the desktop's other citizens. |
|
scale
Package scale owns one surface's buffer scaling: the integer wl_surface fallback, the optional wp_viewporter and wp_fractional_scale_v1 objects, and the output transform.
|
Package scale owns one surface's buffer scaling: the integer wl_surface fallback, the optional wp_viewporter and wp_fractional_scale_v1 objects, and the output transform. |
|
sessionlock
Package sessionlock maps ext-session-lock-v1 onto gelm: the lock object's locked/finished lifecycle and the per-output lock surface role with its configure handshake.
|
Package sessionlock maps ext-session-lock-v1 onto gelm: the lock object's locked/finished lifecycle and the per-output lock surface role with its configure handshake. |
|
style
Package style is gelm's CSS engine: a tokenizer and parser for the GTK-flavored subset docs/css.md scopes, the rule index, and the matcher/cascader that computes one widget's style — custom properties with var() substitution, calc(), color-mix(), and per-longhand cascade across prioritized stylesheets and per-widget inline declarations.
|
Package style is gelm's CSS engine: a tokenizer and parser for the GTK-flavored subset docs/css.md scopes, the rule index, and the matcher/cascader that computes one widget's style — custom properties with var() substitution, calc(), color-mix(), and per-longhand cascade across prioritized stylesheets and per-widget inline declarations. |
|
surfx
Package surfx is the surface-animation coordinator: one state machine every transient surface (menus, tooltips, toasts, dropdown lists, dialogs, layer overlays) drives its enter and exit tweens through, instead of one ad-hoc implementation per surface kind.
|
Package surfx is the surface-animation coordinator: one state machine every transient surface (menus, tooltips, toasts, dropdown lists, dialogs, layer overlays) drives its enter and exit tweens through, instead of one ad-hoc implementation per surface kind. |
|
sysfont
Package sysfont resolves system fonts through fontscan's CSS font selection rules, replacing per-app guesswork.
|
Package sysfont resolves system fonts through fontscan's CSS font selection rules, replacing per-app guesswork. |
|
text
Bidirectional resolution (UAX #9) for every text path in the toolkit (#68): mixed Hebrew/Arabic + Latin lines resolve into directional runs that the shaper lays out visually correct, and the editable widgets map caret motion through.
|
Bidirectional resolution (UAX #9) for every text path in the toolkit (#68): mixed Hebrew/Arabic + Latin lines resolve into directional runs that the shaper lays out visually correct, and the editable widgets map caret motion through. |
|
touchinput
Package touchinput is the session-to-widget bridge for the non-pointer devices every input surface embeds (app windows, popups): it implements wlsession.SurfaceTouchHandler, SurfaceGestureHandler and SurfaceTabletHandler over a widget.TouchTracker, the router's gestures, and its stylus samples.
|
Package touchinput is the session-to-widget bridge for the non-pointer devices every input surface embeds (app windows, popups): it implements wlsession.SurfaceTouchHandler, SurfaceGestureHandler and SurfaceTabletHandler over a widget.TouchTracker, the router's gestures, and its stylus samples. |
|
udmabuf
Package udmabuf allocates linear, CPU-visible dmabufs through /dev/udmabuf: a sealed memfd wrapped as a dmabuf, so tests and demos can hand the compositor dmabufs they fill and read without a GPU library.
|
Package udmabuf allocates linear, CPU-visible dmabufs through /dev/udmabuf: a sealed memfd wrapped as a dmabuf, so tests and demos can hand the compositor dmabufs they fill and read without a GPU library. |
|
uigen
Package uigen generates package ui's typed builders from package widget's source: one builder per widget type, a constructor per New* function, a chainable method per setter, adder, binder and exported field, and the props every widget shares through its embedded node.
|
Package uigen generates package ui's typed builders from package widget's source: one builder per widget type, a constructor per New* function, a chainable method per setter, adder, binder and exported field, and the props every widget shares through its embedded node. |
|
window
Package window maps the xdg-shell role onto a wl_surface: real toplevel windows with titles, the configure handshake, the compositor-confirmed state set, ping/pong liveness, and the close signal.
|
Package window maps the xdg-shell role onto a wl_surface: real toplevel windows with titles, the configure handshake, the compositor-confirmed state set, ping/pong liveness, and the close signal. |
|
wlnull
Package wlnull is the null object argument the generated Wayland bindings cannot send: a typed-nil proxy (a nil *xdg.Surface, a nil *wl.Output) encodes as object 0 but then panics in the wire encoder's new-id scan, which calls Id on every proxy argument.
|
Package wlnull is the null object argument the generated Wayland bindings cannot send: a typed-nil proxy (a nil *xdg.Surface, a nil *wl.Output) encodes as object 0 but then panics in the wire encoder's new-id scan, which calls Id on every proxy argument. |
|
wlsession
XDG activation: optional xdg_activation_v1 support — the compositor-consented focus request.
|
XDG activation: optional xdg_activation_v1 support — the compositor-consented focus request. |
|
xfer
Package xfer moves selection and drag-and-drop payloads through the pipes Wayland hands the two ends of a transfer.
|
Package xfer moves selection and drag-and-drop payloads through the pipes Wayland hands the two ends of a transfer. |
|
Package media is gelm's playback framework, GTK's GtkMediaStream in pure Go: a Source decodes frames (and, when Audible, sound), and a Stream plays one on the loop with play, pause, seek, loop, volume and a clock that follows the audio when there is any.
|
Package media is gelm's playback framework, GTK's GtkMediaStream in pure Go: a Source decodes frames (and, when Audible, sound), and a Stream plays one on the loop with play, pause, seek, loop, volume and a clock that follows the audio when there is any. |
|
Package pdf writes PDF documents in pure Go: pages of RGB raster images, Flate-compressed and streamed to an io.Writer as they are added.
|
Package pdf writes PDF documents in pure Go: pages of RGB raster images, Flate-compressed and streamed to an io.Writer as they are added. |
|
The CSS box primitives: per-corner rounded fills, rounded border rings with per-side widths and colors, angled multi-stop linear gradients, and box shadows with offset, spread, blur, and inset — everything a CSS box paints behind its content.
|
The CSS box primitives: per-corner rounded fills, rounded border rings with per-side widths and colors, angled multi-stop linear gradients, and box shadows with offset, spread, blur, and inset — everything a CSS box paints behind its content. |
|
third_party
|
|
|
neurlang-wayland/external/swizzle
Package swizzle provides functions for converting between RGBA pixel formats.
|
Package swizzle provides functions for converting between RGBA pixel formats. |
|
neurlang-wayland/os
Package os implements an operating system routines useful for graphics
|
Package os implements an operating system routines useful for graphics |
|
neurlang-wayland/unstable/text-input-v3
Package text implements the text_input_unstable_v3 protocol
|
Package text implements the text_input_unstable_v3 protocol |
|
neurlang-wayland/unstable/xdg-decoration-v1
Package xdg implements the xdg_decoration_unstable_v1 protocol
|
Package xdg implements the xdg_decoration_unstable_v1 protocol |
|
neurlang-wayland/wl
Package wl implements the stable Wayland protocol
|
Package wl implements the stable Wayland protocol |
|
neurlang-wayland/wlclient
Package wlclient implements a wayland-client like api
|
Package wlclient implements a wayland-client like api |
|
neurlang-wayland/wlcursor
Package wlcursor implements a Wayland cursor
|
Package wlcursor implements a Wayland cursor |
|
neurlang-wayland/wlcursor/xcursor
Package xcursor loads and parses the X cursor
|
Package xcursor loads and parses the X cursor |
|
neurlang-wayland/xdg
Package xdg implements the stable XDG Window Manager Base protocol
|
Package xdg implements the stable XDG Window Manager Base protocol |
|
Package transfer is the content shape every data transfer shares: clipboard claims, the primary selection, and drag and drop all offer a payload as mime types, best first, with a writer for each, and all read one back by mime preference.
|
Package transfer is the content shape every data transfer shares: clipboard claims, the primary selection, and drag and drop all offer a payload as mime types, best first, with a writer for each, and all read one back by mime preference. |
|
Package ui declares widget trees with typed builders, the counterpart of relm4's view! macro.
|
Package ui declares widget trees with typed builders, the counterpart of relm4's view! macro. |
|
Package vinput injects pointer and keyboard input into the compositor through zwlr_virtual_pointer_v1 and zwp_virtual_keyboard_v1, on a private Wayland connection: the input half of a remote-desktop bridge, and of gelm's own headless test harness.
|
Package vinput injects pointer and keyboard input into the compositor through zwlr_virtual_pointer_v1 and zwp_virtual_keyboard_v1, on a private Wayland connection: the input half of a remote-desktop bridge, and of gelm's own headless test harness. |
|
Accessibility semantics for the widget tree: semantic roles plus a state snapshot that assistive technology can consume.
|
Accessibility semantics for the widget tree: semantic roles plus a state snapshot that assistive technology can consume. |
|
css
Package css names libadwaita's style classes and named colors - the relm4-css analog (#95) - so application code spells them as constants and stylesheets written for GTK port over verbatim:
|
Package css names libadwaita's style classes and named colors - the relm4-css analog (#95) - so application code spells them as constants and stylesheets written for GTK port over verbatim: |
|
Package wlr implements the alpha_modifier_v1 protocol
|
Package wlr implements the alpha_modifier_v1 protocol |
Click to show internal directories.
Click to hide internal directories.