Skip to main content

Tab Actions

Verification boundary

This page documents the committed source. Treat revision-sensitive RuneLite UI, packet, or in-game outcomes as pending live-client verification unless the page records direct evidence.

Caution

The current tab mapping is a source guideline, not proof of selected-tab convergence. Live validation found Friends Chat and Music did not converge, and some queued actions left Inventory selected. Check the visible selected state after dispatch rather than relying on SUCCESS alone.

TabActions separates deliberate tab changes from check-only prerequisites. Requested inventory, equipment, prayer, magic, combat, and Magic-minigame actions never select a side tab for their caller.

Methods

  • open(Tab)InteractionResult - finds the first visible widget across the tab's three packed IDs and clicks it with "Switch", "Open", or "Select"; returns TAB_NOT_FOUND if none are visible
  • requireOpen(Tab)InteractionResult - returns CONFIRMED when the tab is visible; otherwise returns WIDGET_HIDDEN targeting tab/<TAB_NAME> without clicking or changing the selected tab

isOpen(Tab) acts as an idempotency guard. For broader interface reads, use the widget SDK described in Query Helpers.

Example:

if (!TabActions.isOpen(Tab.PRAYER)) {
TabActions.open(Tab.PRAYER);
}

Tab Enum

Each constant holds three packed widget IDs: (fixedId, resizableId, bottomLineId). A zero value means the slot is absent in that layout.

ConstantNotes
COMBATCombat options tab
SKILLSSkills/stats tab
QUESTSQuest list tab
INVENTORYInventory tab
EQUIPMENTEquipment tab
PRAYERPrayer tab
MAGICMagic spellbook tab
FRIENDS_CHATFriends chat tab
FRIENDSFriends list tab
LOGOUTLogout tab
SETTINGSSettings tab
EMOTESEmotes tab
MUSICMusic tab

Behavior notes:

  • open resolves a visible action owner, then falls back across non-zero packed IDs. Dispatch uses WidgetActions.interactViaMenuAction so the click precedes RuneLite's native tab operation.
  • open is the only shared tab API that deliberately changes the selected side tab. Call it explicitly, observe isOpen, and only then request a tab-dependent action.
  • We catalog the MAGIC tab's bottom-line component for the resizable-modern view; new consumers should resolve its canonical alias instead of copying a packed literal.
  • TAB_NOT_FOUND indicates no viewport layout had a usable widget. This happens on interface states (e.g., bank open) where the game hides sidebar tabs.