ItemShelf
On-screen item panels that fill themselves from your bags, plus free-form slots for anything you can drag.
Summary
ItemShelf builds tidy on-screen panels of your bag consumables — flasks, potions, food, profession knowledge and more — as collapsible, hover-to-expand buttons, plus free-form drop-slots for any item, toy, spell, mount or macro. Fully localized (every WoW client language, auto-detected on first run), standalone (no ElvUI or libraries), with per-character profiles. Works out of the box — nothing to configure.
Description
What it does
ItemShelf scans your bags and lays out the things you actually click — flasks, potions, food, bandages, weapon oils, augment runes, profession knowledge tomes — as compact icon buttons on movable panels. Items are sorted into categories automatically, and each category collapses into a single button: hover it and a flyout opens with every item in that group, so a long shelf becomes a handful of tidy buttons.
On top of the automatic panels, you get custom drop-slots: empty boxes you fill yourself by dragging in anything — an item, a toy, a spell from your spellbook, a mount, or a macro. Perfect for class utility, profession windows, poisons, your guild bank toy, hearthstones, and the like.
It's a true standalone addon — it does not require ElvUI or any library, and it writes a separate profile for every character.
Features
- Automatic, category-grouped panels. Your bag consumables appear without any setup, sorted into sensible groups.
- Collapsible categories with hover flyouts. Each category is one button showing its representative item; hover to reveal the full list (opens upward, with a soft glow on hover). A small count badge shows how many items are hidden in the group.
- Custom leading item & order. Right-click a category button (or any item in its flyout) to open a reorder window: pin items and arrange them so the leading button — and the single click that uses it — is the item you choose, not just the biggest stack. Unpinned items keep the largest-stack-first fallback.
- Custom drop-slots. Drag any item / toy / spell / mount / macro onto a
+box to store it. Hover to expand the list, click to use, shift-click to remove (the removed thing lifts onto your cursor so you can re-place or discard it), and right-click to reorder a slot's entries (the first entry leads and is what a single click uses). Drag entries between slots to rearrange. - Up to four custom bars, sized independently. Show or hide each drop-slot bar with its own checkbox, and set how many slots sit in its row (1–8) with a stepper — e.g. one bar of six instead of two of three. Each bar is freely positioned.
- Show only the panels you want. Each base panel (Consumables, Food, Knowledge, Trinkets) has its own checkbox in the control panel — tick what you use, untick the rest.
- "Current content only" filter. Hide the outdated potions, food and flasks that pile up while levelling — a per-panel checkbox keeps only current-expansion consumables. It reads the game's own expansion data, so it needs no item lists and works on every locale and every past/future patch. It switches on automatically at max level (with a one-time heads-up); utility items, profession knowledge and trinkets are never filtered, so old teleport toys stay put.
- Localized interface. Pick the UI language from a dropdown in the control panel; it applies instantly. Every WoW client language is available (English, Русский, Deutsch, Français, Español, Português, Italiano, 한국어, 简体中文, 繁體中文), and on first run the addon defaults to your game client's language.
- Minimap button + control panel. Click the minimap icon to open settings: language, per-panel visibility, the drag-lock, and per-bar show/size controls. Each panel and bar also has a reset-position button that recentres it — handy if something ends up off-screen. Drag the icon around the minimap ring to reposition it.
- Clear drag handles. Every panel and bar has a visible grip on its left edge for repositioning — no more hunting for a spot to grab. Locking the layout simply hides the grips.
- Per-character profiles. Each character keeps its own panels, slots, positions and bar count. A rogue's poisons stay separate from a tailor's profession buttons.
- Combat-aware and secure. Buttons use Blizzard's secure templates, so clicking to use an item or cast a spell works in combat. Cooldown swipes are shown on every button. Items you can't currently use are filtered out.
How items are categorized
| Category | What lands here |
|---|---|
| Flask | Flasks & phials |
| Healing | Healing potions, healthstones, bandages |
| Combat | Combat potions/elixirs, weapon oils, stat & augment runes |
| Food | Food & drink |
| Utility | Other usable consumables (gadgets, beacons, misc) |
| Knowledge | Profession knowledge tomes (curated list) |
| Trinket | Equippable trinkets (panel off by default) |
| Custom | Item IDs you add yourself via /is add |
Default layout: a Consumables panel (flask + healing + combat + utility), a Food panel, and a Knowledge panel. A Trinkets panel exists but is disabled out of the box. You can mix and match which categories appear on which panel.
A note on languages: the healing-vs-combat and oil/rune split reads item names, which are localized by the game. The name patterns are derived from real localized item data for every supported client language (English, Russian, German, French, Spanish, Portuguese, Italian, Korean, Chinese). On any other locale those items still appear, just grouped by item type rather than split — this affects grouping only, nothing is ever hidden.
Getting started
- Install and log in — your consumable panels appear automatically in the upper-left area of the screen, and a short welcome guide points you to the settings. The interface starts in your game client's language.
- Click the minimap icon to open settings; tick Lock off to reveal the drag handles, then drag panels where you like.
- Drag any item, spell, mount, toy or macro onto a custom
+box to keep it one click away. - Hover a collapsed category or filled slot to expand its flyout; click an icon to use it.
- Right-click a category button or a filled slot to choose its leading item / order; shift-click an entry in a custom slot to remove it.
Slash commands
/itemshelf or /is:
| Command | Effect |
|---|---|
/is or /is help |
Show the command list |
/is lock |
Toggle the drag lock (show/hide handles) |
/is list |
Print the current panel configuration |
/is panel N on|off |
Enable / disable panel N |
/is panel N cat <c> [on|off] |
Add or remove a category on panel N |
/is add <itemID> |
Add an item to the Custom category |
/is del <itemID> |
Remove an item from Custom |
/is size <pixels> |
Set button size (16–64, default 36) |
/is refresh |
Force a rescan |
/is scan |
Diagnostic dump of bag consumables (id / class / subclass / category / name) |
Categories for the cat command: flask healing combat food utility knowledge trinket custom.
Tips
- Nothing showing on a panel? An enabled panel stays visible as a small placeholder even when empty, so it never disappears on an alt with different bags. Put a matching item in your bags and it fills in. To hide a panel entirely, disable it with
/is panel N off. - Moving things: grab the colored handle on a panel's left edge. Lock the layout (control panel or
/is lock) to hide all handles once you're happy. - Removing from a custom slot: shift-click the entry; it lifts onto your cursor as confirmation — drop it on another slot to move it, or anywhere else to discard.
Feedback
Bug reports and suggestions are welcome — please include any Lua error text and what you were doing at the time (especially around drag-and-drop or actions in combat). Translations are especially welcome: the UI strings and the category keywords live in plain tables near the top of ItemShelf.lua and are easy to extend.
License
Released under the MIT License — see the LICENSE file. You're free to use, modify and redistribute it.