https://github.com/maxwelljens/gibman
A DOOM WAD manager for nerds
https://github.com/maxwelljens/gibman
cli doom game mod-manager nim terminal wad
Last synced: about 1 month ago
JSON representation
A DOOM WAD manager for nerds
- Host: GitHub
- URL: https://github.com/maxwelljens/gibman
- Owner: maxwelljens
- License: eupl-1.2
- Created: 2025-03-04T20:13:49.000Z (2 months ago)
- Default Branch: master
- Last Pushed: 2025-03-19T08:03:43.000Z (about 2 months ago)
- Last Synced: 2025-03-19T09:21:53.262Z (about 2 months ago)
- Topics: cli, doom, game, mod-manager, nim, terminal, wad
- Language: Nim
- Homepage:
- Size: 45.9 KB
- Stars: 6
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# gibman

*A DOOM WAD manager for nerds*
## What is `gibman`?
`gibman` is a simple CLI utility designed to do one thing: to run presets for
your favourite DOOM engine. Although chiefly designed with GZDoom in mind,
other engines should be supported (more on that below). The program operates on
a simple [YAML](https://www.redhat.com/en/blog/yaml-beginners) file, with which
you can set up all of your engines, IWADs, and WADs. Both Windows and Linux are
supported.## Quick usage:
Given the following configuration in `$XDG_CONFIG_HOME/gibman/gibman.yaml`, or
`~/.config/gibman/gibman.yaml` if `$XDG_CONFIG_HOME` is not set:```yaml
engine:
- name: gzdoom
path: /path/to/gzdoomiwad:
- name: doom2
path: /path/to/DOOM2.WADsearch:
- /path/to/wadspreset:
- name: example
description: A description to help you remember what the preset is for
engine: gzdoom
iwad: doom2
wad:
- eviternity
args: []
```Run the following to run your `example` preset:
```fish
gibman -p example
```This will run GZDoom with the DOOM 2 IWAD and Eviternity WAD, if something like
`Eviternity.WAD` exists in one of the directories outlined in the `search`
section of the configuration file. More information can be found in
[`default_config.yaml`](https://github.com/maxwelljens/gibman/blob/master/default_config.yaml),
which is also placed in `$XDG_CONFIG_HOME/gibman/gibman.yaml` when running the
program for the first time.## How does `gibman` work?
At its core, the program simply constructs a string to execute as command in
the user's shell. This makes the program both platform-agnostic and not tied to
any particular DOOM engine. The above example would produce the following
string:```fish
/path/to/gzdoom -iwad /.../DOOM2.WAD -file /.../Eviternity.wad
```Or with backslashes, if you are on Windows. If you were to specify any `args`
in your preset, those would be added at the end. For example:```yaml
args:
- -dog
- 2
```Would be added to the above command at the end as `-dog 2`, which is a command
line option in the Woof! DOOM engine. This allows you to use any DOOM engine
that uses the `-iwad` and `-file` command line options. Such engines include
GZDoom, ZDoom, Woof!, Eternity Engine, and probably many others.## Options
The program includes a few options. Running the program without any options
simply executes the default (i.e. topmost specified) engine and IWAD in the
`gibman.yaml` configuration file.- **`-h/--help`**: Print help for the program.
- **`-p/--preset`**: Execute the specified preset. The `name` attribute is used
as the argument for this option.- **`-l/--list-presets`**: List the presets in your configuration. This is
helpful if you forget which presets you have, but don't want to open a text
editor to read the `gibman.yaml` file again. It looks like the following:```
┌─────────┬───────────────────────────────────────┬────────┬───────────────────┐
│ Name │ Description │ Engine │ WADs │
├─────────┼───────────────────────────────────────┼────────┼───────────────────┤
│ example │ A description to help you remember │ gzdoom │ doom2, eviternity │
│ │ what the preset is for │ │ │
└─────────┴───────────────────────────────────────┴────────┴───────────────────┘
```- **`-v/--verbose`**: Run program in verbose mode. At the moment this only
means printing the shell string before launching the game.## Environment variables
While `gibman` makes extensive use of ANSI colour sequences in its output, it
does respect the [`NO_COLOR`](https://no-color.org/) environment variable,
disabling colour if it is set to any value.## Installing
### Windows and Linux
Binary releases (executables) of `gibman` are available for both Windows and
Linux in the [Releases page](https://github.com/maxwelljens/gibman/releases).### macOS
Due to difficulty in cross-compiling for macOS, binary releases for macOS are
not available. macOS users need to compile from source.## Compiling from source
`gibman` is made in the [Nim](https://nim-lang.org/) programming language, so
the Nim toolchain will be required. This can be acquired
[here](https://nim-lang.org/install.html), and it is the recommended method for
all platforms. This will install both Nim and the Nimble package manager, both
of which are required for compiling `gibman` from source.Afterwards, navigate to the root of the project and run the following command
to compile `gibman`:```fish
nimble c -o:build/gibman src/gibman.nim
```If all goes well, this should download all dependencies and produce an
executable of `gibman` in the `build` directory for your platform.## Licence
This software is licensed under the [European Union Public Licence
1.2](https://eupl.eu/1.2/en/). 2025 copyright of Maxwell Jensen.