spacegho.st / ffxiv mods

Dalamud plugin · terminal

Ghostty

Eorzea is a terminal multiplexer

A real terminal inside Final Fantasy XIV. Drop it down over the game, float it as a window, pin it to a wall in Limsa, or let it follow you as a pet. The shells are your own, on your own machine.

Ghostty for FFXIV: terminal windows floating around an aetheryte crystal over a night sea, with a small ghost
Honest status

Experimental developer preview. An independent project, not an official Ghostty project, and not in the official Dalamud plugin list. World placement, animation, lighting and occlusion are implemented but still need validation in game; Windows (ConPTY), macOS and controller support are not certified by the Linux host tests. The in-game screenshots and clips below have not been captured yet.

What it does

Ghostty draws a full terminal emulator inside the game, using libghostty-vt for the terminal state and Dalamud's ImGui draw lists for rendering. It is a real VT: run a shell, tmux, htop, nvim, or ssh somewhere else.

The plugin never opens a shell on its own. Under Wine on Linux or macOS it connects to ghostty-agent, a small separate process you start on the same machine, which hosts the sessions and keeps them alive while the game restarts. On native Windows it is designed to use a local ConPTY instead.

/term toggles it; /tomestone and /tome are aliases. Everything about how it looks and behaves is Lua you can override.

Features

Built and covered by host-side tests unless a card says otherwise. Host tests do not prove in-game behaviour, so the tags say what is still unverified.

Glass drop-down

A Quake-style terminal that slides down over the game with Ctrl+`, with tabs, zoom, selection and copy and paste.

Floating windows

/term window opens terminals as ordinary in-game windows, each with its own profile: a POSIX shell through the agent, optional tmux, PowerShell or cmd.

Pins in the world

/term pin here places a screen where you stand; Alt+drag carries it, Shift snaps it flat against a surface, and orbit pins circle your character.

needs validation in game

Pets

/term pet makes a screen that follows you around, trails behind while you run, and settles when you stop.

needs validation in game

Full screen

Double-click a world screen and it flies to the centre of your view; again to send it back to where it lives.

needs validation in game

Lives in the world

Backlight, time-of-day and weather tint, occlusion behind scenery, and a derez when combat starts. Screen shadows are experimental, off by default, and depend on a game function that a patch can break.

experimental

Themes and Lua config

/term config for settings; copy init.lua or keymap.lua into the plugin config folder to override anything. /term reload applies it live.

Visual bell

Five bell styles ripple from your character when a terminal rings. /term bell demo plays them all.

In-game AI: /term ask

Ask a question from the chat box and a pet terminal opens with the answer streaming in, from your own local assistant through Almanac and XivMcp.

in development

Desktop windows in the world

On Linux, the agent can run a headless Wayland compositor and show real application windows as world panels. XivDesktop builds a launcher on top of it.

in development

Screenshot sharing

A showcase mode (/term showcase) for clean shots, and a moderated gallery to share them.

Controller and toolbar

Tap, hold and double-tap gestures on a controller button; a server info bar entry; and an optional Umbra toolbar widget listing every terminal. The DualSense Create-button option is unverified under Wine.

partly unverified

Screenshots and clips

The shot list is planned: each slot below names a shot that will be captured in game. Empty frames are placeholders, not broken images.

Loading the shot list…

Install

Two ways, and both are kept on purpose: one click from the plugin repository, or build it from source and load it as a dev plugin.

One click

Add the repository once; every mod here installs and updates like any other plugin.

https://spacegho.st/mods/ffxiv/plugins.json
  1. In game, type /xlsettings → the Experimental tab.
  2. Under Custom Plugin Repositories, paste the URL into the empty row, press +, and leave its checkbox ticked.
  3. Save and Close.
  4. /xlpluginsAll Plugins → search GhosttyInstall.

Ghostty has a stable release, so it shows under All Plugins straight away. For the newer test build ahead of the next release, tick Get plugin testing builds in the same tab, then Receive plugin testing versions on its entry. You still need ghostty-agent running for a POSIX shell.

Dalamud will warn you that this is a third-party repository nobody but its author has reviewed. That is true. The repository page says more, including how test builds work.

Build it yourself

The dev plugin path: exactly the code in your checkout, no repository, no auto-update. It is how the author runs it, and the honest way to read the code before you trust it.

git clone https://github.com/Spaceghost/ghostty-dalamud
cd ghostty-dalamud
tools/fetch-vendor.sh
tools/build.sh
build/dist/ghostty-agent --listen 127.0.0.1:7777 &
tools/install-dev.sh
  1. The complete build needs Linux: Git, Bash, a C compiler, Make, Python 3.10+, curl, and the Zig and .NET SDK versions named in toolchain.env. Dependencies are fetched at pinned revisions and verified.
  2. tools/install-dev.sh stages the plugin and prints the Wine Z: path to add. The loadable plugin is the whole build/dist/GhosttyDalamud/ folder: keep the DLLs, manifest and lua/ together.
  3. In game: /xlsettingsExperimentalDev Plugin Locations → add the path of the built GhosttyDalamud.dll (under Wine, a Z:\… path) → +Save and Close.
  4. /xlpluginsDev ToolsInstalled Dev Plugins → enable Ghostty. Dev plugins are added disabled.
  5. Rebuilt while the game is running? Press the reload arrow on its entry. No relaunch.

If you later switch to the one-click install, disable the dev plugin first so the two copies cannot fight over the same name. The README has the details.

Requirements

  • Final Fantasy XIV with XIVLauncher and Dalamud (API level 15).
  • Linux or macOS under Wine: ghostty-agent running on the same machine. The agent stream is not encrypted; keep it on loopback (the default) or behind an ssh -L tunnel.
  • Native Windows: designed to use a local ConPTY with no agent. Not yet validated on Windows.
  • Optional: Umbra for the toolbar widget. The plugin does not need it.

Community screenshots

Screenshots of Ghostty shared by players. Every one is reviewed by the site owner before it is shown here.

Loading…

Add yours

Sharing a screenshot needs a sign-in, so that everything sent to this site comes from an account.

Signing in with FFXIV needs an XIVAuth account and shares no character.

Hide your own name and chat first, and never share a terminal showing tokens or private paths. Metadata is stripped from the image before it is stored. Your upload is linked to your GitHub or XIVAuth account id, which the site owner can see; the public sees only the image and the credit you typed. To have a shot removed, contact the owner through github.com/Spaceghost.