Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Build a hunting layout

By the end you’ll have a combat screen — vitals, roundtime, targets, compass, hands — saved under a name you can load on any character, in either desktop frontend.

What you’ll build

VellumFE ships a deliberately plain screen. The default layout is six windows: main, command_input, thoughts, speech, room, and society. That is a reading screen. This guide turns it into a fighting screen.

You’ll finish with your story text still front and center, a vitals bar and a roundtime timer across the top where you can read them without leaving the text, and a right-hand column carrying targets, a compass, and your hands. Then you’ll save it as hunting, which makes it reproducible — on your next character, after a bad drag, or on the terminal.

📷 screenshot pending
The finished layout: story text filling the center, minivitals and RT in the Header zone, and Targets, Compass, Left Hand, and Right Hand stacked down the Right Bar.

Before you start

  • You’re connected and looking at a session. If not, see First Launch.
  • Two of these windows are GemStone IV only. minivitals and Reserve are gated to GS4 and won’t appear in the catalog on a DragonRealms character. Use the individual Health, Mana, Stamina, and Spirit bars there instead — they’re ungated, and step 2 tells you how.
  • Nothing here needs Lich, and nothing here edits a file by hand.

Steps

1. Turn on the zones you’re going to fill.

Click Zones in the top toolbar and switch on Header and Right Bar. The hub stays open, so you can toggle both and watch the canvas shrink around them. (Typed equivalent: .header on and .rightbar on.)

Expected result: a strip appears across the top of the window and a column down the right side. Both are empty, and your story window has resized to fit between them.

2. Add the windows.

Click Windows in the toolbar. The catalog opens and stays open — you’re going to add six windows without closing it once.

Two things to know before you start ticking. Rows are labeled by the window’s title, not its internal name, so you’re looking for RT, not “roundtime”, and Injuries, not “injury_doll”. And the categories start collapsed — expand a heading before you go hunting for a missing row.

Tick each of these, and set its zone on the same row using the control at the row’s right edge:

Tick this rowSet its zone to
minivitalsHeader
RTHeader
TargetsRight Bar
CompassRight Bar
Left HandRight Bar
Right HandRight Bar

On DragonRealms, there is no minivitals row. Tick Health, Mana, Stamina, and Spirit instead and send all four to Header — you’ll get four separate bars where GS4 gets one combined widget.

The zone control is a submenu rather than a drop-down list, so it opens a nested list beside the row. That’s deliberate: a true combo box counts as a click outside the toolbar menu and would close the whole catalog before you could pick anything.

📷 screenshot pending
The Windows catalog with categories expanded, minivitals and RT ticked, and a row's zone submenu open on Right Bar.

Expected result: six windows appear as you tick them — two in the header strip, four in the right column — and start showing live data immediately. The compass lights the exits of the room you’re standing in.

3. Arrange them.

Click outside the catalog to dismiss it. Now drag each window from anywhere on its body — no modifier, no need to find a title bar. Resize by dragging any edge or corner.

Edges snap: to the zone’s bounds, to the other windows in the same zone, and optionally to a grid, with a guide line drawn at each match. Put minivitals at the left of the header and RT at the right, then stack the right bar in the order you want to read it — Targets on top, Compass under it, the two hands at the bottom.

Hold Shift while you drop to suspend snapping entirely and place a window exactly under the pointer. That’s the escape hatch when a snap keeps pulling the compass flush against an edge you want it away from.

4. Pin the compass so it stops moving.

Right-click the compass ▸ ArrangeAdvanced ▸ tick Fixed size. Do the same for both hand windows.

Fixed size keeps a window’s exact width and height when the app window resizes or you zoom, so only its position adapts. A compass rose and a hands widget both look wrong stretched; the targets list wants to grow. Leave Targets unfixed.

5. Save it.

Type .savelayout hunting in the command input.

There is no button for this. Saving a layout is typed, in the GUI exactly as in the terminal — the catalog says so itself when you have no layouts yet.

Expected result: a confirmation in your story window. .layouts now lists hunting, and .loadlayout hunting rebuilds this screen from scratch at any point later.

Make it yours

If you fight in melee, trade the compass for the injury doll. A caster watches exits and mana; a melee character watches wounds. Untick Compass in the catalog and tick Injuries, sending it to Right Bar. The GUI draws it as a body diagram colored by wound and scar severity, and with a skin that ships doll art you can place the wound dots yourself through Calibrate doll… in the doll window’s right-click section. In the TUI, swap the .addwindow compass line for .addwindow injuries injury_doll 92 15 28 8.

You’ll see: a body diagram that colors a limb the moment you take a wound there, instead of you parsing the wound line out of scrolling text.

If you’re a spellcaster, add the effects trio to a Left Bar. Turn on the left zone (ZonesLeft Bar, or .leftbar on) and send Buffs, Debuffs, and Cooldowns there — three separate catalog rows, each an active-effects window carrying one category. Keeping them apart from the right column means your defensive spell timers never compete with your target list for the same glance.

You’ll see: three stacked lists counting down independently, so a lapsing 401 is visible before it drops rather than after.

If your terminal is small, put your side windows in a tabbed window instead of a column. Four windows down a 40-column right bar leaves nothing for text. Add one tabbedtext window and give it the streams you’d have split out, then switch tabs with a click. In the GUI, the tab list is Edit tabs… in the window’s own right-click section; in the TUI it’s the .editwindow form.

You’ll see: one window’s worth of screen doing four windows’ work, at the cost of only seeing one at a time.

When it doesn’t work

A window you ticked in the catalog doesn’t appear anywhere. Check its zone. If the zone is one you have switched off, the window is real and placed but the strip holding it isn’t drawn. Open Zones and turn that zone on, or move the window with right-click ▸ ArrangeMove toCenter.

You can’t find a row in the catalog. Two causes. The categories start collapsed — click a category heading to expand it before concluding the row is absent. And rows are sorted and labeled by title, so RT files under R, not under “roundtime” — search for what the window is called on screen, not what you’d type.

minivitals or Reserve is genuinely missing. Both are GemStone IV only and are filtered out of the catalog on a DragonRealms character. That’s gating working correctly, not a bug. Use the individual Health / Mana / Stamina / Spirit bars.

.addwindow compass prints a usage line and adds nothing. The command takes either no arguments (which opens the picker) or all six — name, type, x, y, width, and optionally height. A partial command falls through to the usage message. Type .addwindow alone and pick from the list instead.

A .addwindow window landed at the top-left corner in the wrong size. Numbers that fail to parse fall back silently rather than erroring — x and y to 0, width to 40, height to 10. Check for a stray character in the coordinates, delete it with .deletewindow <name>, and retype the line.

Dragging a TUI window’s middle selects text instead of moving it. That’s correct behavior: the TUI moves a window from its title bar only, unlike the GUI, which drags from anywhere. Grab the top row.

A TUI window won’t resize from its bottom edge. If it’s two rows tall or shorter, its bottom row is content, not a handle. Resize from the right column, or set the size in .editwindow.

A window snaps flush against an edge you want it away from. Hold Shift while dropping to suspend snapping for that gesture. If a window keeps drifting back to an edge on later resizes, it has a persistent anchor — right-click ▸ ArrangeRelease Anchors to forget it. The window stays exactly where it is and stops following. If snapping misbehaves in a way you can’t explain, .snapdebug writes a trace to ~/.vellum-fe/vellum-fe.log.

You resized the app window and everything is proportionally wrong. In the GUI, right-click the windows that shouldn’t stretch ▸ ArrangeAdvancedFixed size — a compass and a hands widget want it, a text window doesn’t. In the TUI, run .resize to refit the layout to the terminal’s new dimensions.

You deleted a window and want it back. In the GUI, Windows↩ Restore deleted… returns it with its position, streams, and widget type intact. That button only appears when something is waiting to be restored, so an empty stash means it’s genuinely not there. In the TUI, restore via .loadlayout hunting — which is the strongest argument for saving early and saving often.

⚠️ .deletewindow truly removes a window and .hidewindow only hides it — in both desktop frontends. There is no asymmetry between the GUI and the TUI to remember. Both refuse to remove your only main-feed window, so you cannot strand yourself without game text.

⚠️ In the Terminal (TUI), Ctrl+C copies your selection — it does not quit. In the Desktop GUI the same combination quits. Leave the TUI with .quit or .exit. This is the difference most likely to bite you while you’re moving between frontends mid-build.

See also