Input and Animation Commands
Inspect input devices and sources, select a source, and preview registered animations.
On this page
Commands require a running session. Animation previews act on a live compatible target.
Layer surfaces
List current layer-shell surfaces and their namespaces with:
gnoblinctl layer listThe command reads the API 1.37 layers.list snapshot and keeps the layers
object in JSON output. Records include a state revision.
In a terminal, the list shows each surface's ID, namespace, layer, monitor, geometry, anchors, and mapped state:
ID NAMESPACE LAYER MONITOR ID GEOMETRY ANCHOR MAPPED
------- -------------- ----- ---------- -------------- ----------------- ------
layer:4 bingux-dock top Virtual-1 1920x104+0+976 bottom,left,right yesUse a surface's namespace as the layer value in a window rule. The
animation surfaces command reports the same surfaces for animation previews.
Input devices
List input devices detected by the compositor with:
gnoblinctl input devicesEach record reports the device name, type, seat, and available capabilities. Vendor and product IDs appear when the compositor provides them.
Device IDs last only for the current compositor session. The command returns a one-time snapshot through the shared Lua read introduced in API 1.46. This read requires the Lua supervisor for every supported socket client version.
API 1.4 socket clients can also subscribe to device add and removal events.
gnoblinctl input list reads the API 1.6 input.sources snapshot through the
shared Lua read introduced in API 1.46. It prints the configured XKB sources.
The terminal output is a headed table; an unavailable value is shown as -:
ID TYPE NAME CURRENT
-- ---- ------------ -------
us xkb English (US) yesgnoblinctl input current reads input.current_source through the same Lua
route. Its JSON record includes available and, when known, source.
gnoblinctl input select TYPE ID calls input.select and waits for Mutter
to confirm the layout change. Copy TYPE and ID exactly from
gnoblinctl input list; they identify a configured XKB source.
gnoblinctl input orientation-lock reads the current orientation-lock
record through input.orientation_lock. Pass on or off to set the lock;
pass inherit to clear the runtime override and restore the configured value
or follow the system setting. This command does not write the config file.
gnoblinctl input orientation-lock
gnoblinctl input orientation-lock on
gnoblinctl input orientation-lock inheritAnimations
Use animation previews to inspect registered curves for compatible window and layer-shell targets. A preview starts paused and changes only the target's visual transform; it does not minimize or close the target.
gnoblinctl animation list
gnoblinctl animation get gnome-open
gnoblinctl animation surfaces
gnoblinctl animation inspect gnome-open --window active
session=$(gnoblinctl animation preview gnome-open --window active --format table | sed -n 's/^session: //p')
gnoblinctl animation seek "$session" 50
gnoblinctl animation step "$session" 16
gnoblinctl animation play "$session"
gnoblinctl animation pause "$session"
gnoblinctl animation stop "$session"Omitting --window uses the active window. For a layer-shell target, pass
--layer ID or --namespace NAME. The namespace must match exactly one visible
surface.
seek accepts an integer percentage from 0 to 100. step accepts elapsed time
in milliseconds. play and pause change playback; stop restores the target’s
original visual state.
Seeking to 100% keeps the last frame visible until stop.
inspect --event EVENT selects an event variant. preview --autoplay starts
playback immediately.
animation surfaces prints layer surface IDs, namespaces, and titles. Layer
surfaces are not included in window list.
The Lua console reads the same surfaces as read-only LayerSurface records
through gnoblin.layers.list(), or gnoblin.find("LayerSurface", filter) for
some of them:
for _, surface in ipairs(gnoblin.layers.list()) do
print(surface.id, surface.namespace, surface.title)
endInspect the resolved animation for a visible target with
target:inspect_animation(name, event?) on a Window or LayerSurface. The
result and its nested tables are read-only:
local inspection = gnoblin.windows.focused():inspect_animation("gnome-open")
print(inspection.event, inspection.duration)animation list prints name, event, duration, easing curve, and preview
availability in aligned columns; empty fields appear as -. Entries that
current preview targets can run are marked with previewable.
animation get NAME prints the configured record for an exact name and returns
null when no animation matches. Use --json in scripts.
inspect --event EVENT accepts the animation events supported by the config,
such as open, close, focus, minimize, and workspace-switch. The
animation guide lists the events and their target types.
Workspace and shadow animations run on internal compositor actors or effects, so the current CLI cannot preview them against a window or layer surface.
See the animation guide for custom curves, events and GNOME-style presets.