server-gui is a desktop wrapper for an existing Minecraft server. Drop it into a normal server folder, launch it once, and it will detect common server jars, build the default launch command, and write server-wrapper.properties for you.
- Copy
server-gui-0.2.0.jarfromtarget/into your server folder. - Run it once:
java -Dsun.awt.X11.XWMClass=com-servergui-Main -jar server-gui-0.2.0.jarOn first launch, the wrapper will:
- detect common server jars
- write
server-wrapper.properties - create or overwrite
start.sh - create or overwrite
start.bat
After that, you can launch it with the generated script:
./start.shGenerated start.sh:
#!/bin/bash
cd "$(dirname "$0")"
JAR="$(ls server-gui*.jar 2>/dev/null | head -n 1)"
if [ -z "$JAR" ]; then
echo "server-gui jar not found."
exit 1
fi
nohup java -Dsun.awt.X11.XWMClass=com-servergui-Main -jar "$JAR" &>/dev/null &- wraps an existing Paper, Purpur, Spigot, or similarly named server jar
- auto-detects common server jars on first launch
- writes
server-wrapper.propertiesautomatically - creates launcher scripts automatically on first launch
- launches the server with
nogui - provides a Minecraft-styled desktop console wrapper
- shows live logs, filters, command input, player list, TPS, and memory
- includes mock mode when no supported server jar is found
- lets you edit wrapper settings from the app
- can sync a git repo when an opped player types
!git pullin chat
On first launch, the wrapper looks for a server jar in the same folder. If it finds something like paper-...jar, purpur-...jar, spigot-...jar, or server.jar, it fills in server.command automatically and disables mock mode.
If no supported jar is found, the wrapper stays in mock mode so you can test the UI safely.
After the first run, you normally just launch the wrapper again with ./start.sh.
On Linux, the app also writes a desktop entry after launch, so you may be able to start it from your application menu afterward. The script is still the simplest documented setup.
target/server-gui-0.2.0.jar: packaged wrapper jarserver-wrapper.properties: generated wrapper config in the server folderstart.sh: generated Unix launcher scriptstart.bat: generated Windows launcher script
Typical generated config:
app.title=Minecraft Server Console
mock.mode=false
server.command=java -Xms3G -Xmx6G -jar "paper-1.21.10-130.jar" nogui
working.directory=.
poll.players.seconds=30
poll.tps.seconds=30
poll.heap.seconds=20Important notes:
- keep
noguiinserver.command - heap changes require a server restart to take effect
- player/TPS polling works best on Paper-compatible servers
- memory uses
jcmdagainst the launched Java child process
If you keep a datapack (or similar) in a git repository, the wrapper can pull updates on request from inside the game — no console or plugins needed.
In the Git Sync settings tab, enable it and pick the repository folder (the one
containing .git). After that, an opped player can type in chat:
!git pull— runsgit pullon the repo!git pull reload— pulls, then runs/reload
Notes:
- non-ops are ignored, and syncing is rate-limited to once per minute
[Git]status messages are whispered to online ops; full output goes to the consolegit pullmust work without prompts (public repo or cached credentials)
Most users should edit settings from the app’s settings dialog instead of editing the config file directly.
Direct file editing is still fine if you want to:
- rename the window
- change polling intervals
- adjust
-Xmsand-Xmx - point the wrapper at a different launch command
- keep changes focused
- prefer small, reviewable commits
- preserve user files and existing server folders
- test with both mock mode and a real detected server jar when possible
- do not commit generated server-folder files unless intentionally updating an example
- commit source, resources, and README changes only
- keep packaged jars out of normal source commits unless you are intentionally publishing a build
