Pokémon-inspired terminal companion that levels up as you use your shell
Project description
TerminalMon
Pokémon-inspired terminal experience. Gain XP by running shell commands and earn and use "moves" (custom scripts). Unaffiliated with official Pokémon branding — all names are original and user-created.
Features
- Name a TerminalMon that gains XP as you use your shell.
- Level up (every
level × 10XP) and evolve at levels 30, 60, and 90. - Learn, forget, and run "moves" (shell scripts).
- Keep multiple TerminalMon, switch your buddy, rename, and release them.
Install
TerminalMon is a Python package. It runs on Linux and macOS (Unix shells).
pip install terminalmon
or, to keep it isolated:
pipx install terminalmon
This puts the tmon command on your PATH.
Enable XP tracking
To earn XP automatically from the commands you run, install the shell hook:
tmon hook install # auto-detects bash or zsh from $SHELL
tmon hook install --shell zsh
Then restart your shell (or source ~/.bashrc / source ~/.zshrc).
Prefer to wire it up yourself? tmon hook print emits the snippet.
Usage
Run tmon with no arguments the first time to create your buddy:
tmon
Every command runs immediately and saves to disk — there is no daemon to
start or stop. Run tmon --help (or tmon <command> --help) for details.
| Command | Description |
|---|---|
tmon stats |
Show your buddy's stats |
tmon xp <amount> |
Add XP |
tmon learn <move> |
Learn a move (creates its script) |
tmon forget <move> |
Forget a move |
tmon use <move> |
Run a learned move |
tmon edit <move> |
Open a move's script in your $EDITOR (--path prints the path instead) |
tmon new <name> |
Create a new TerminalMon |
tmon buddy <name> |
Switch your active buddy |
tmon list |
List all TerminalMon |
tmon rename <old> <new> |
Rename a TerminalMon |
tmon release <name> |
Delete a TerminalMon (not your buddy) |
tmon hook install |
Install the shell XP tracker |
Where data is stored
TerminalMon stores your creatures and move scripts in your per-user data
directory (e.g. ~/.local/share/terminalmon on Linux,
~/Library/Application Support/terminalmon on macOS). Set the
TERMINALMON_HOME environment variable to override the location.
Move scripts are opened with $VISUAL/$EDITOR (falling back to vi).
Colored output is disabled automatically when piped or when NO_COLOR is set.
Development
git clone https://github.com/bsafig/TerminalMon
cd TerminalMon
pip install -e ".[dev]"
pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file terminalmon-0.1.0.tar.gz.
File metadata
- Download URL: terminalmon-0.1.0.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c459cebc13fff432cf4770a6f0aaf58211d74caa85523d18a5926598ac821a3a
|
|
| MD5 |
b834fc30d4c89b3a1d1992ce0853d019
|
|
| BLAKE2b-256 |
b2fa49088eca098cfb6af105904f62bed3adaee673f1e76254f6b1beb4a6133b
|
Provenance
The following attestation bundles were made for terminalmon-0.1.0.tar.gz:
Publisher:
publish.yml on bsafig/TerminalMon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
terminalmon-0.1.0.tar.gz -
Subject digest:
c459cebc13fff432cf4770a6f0aaf58211d74caa85523d18a5926598ac821a3a - Sigstore transparency entry: 2173391719
- Sigstore integration time:
-
Permalink:
bsafig/TerminalMon@be6ac1e4a9cccbfc400005fc3f607d37ab4635b3 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/bsafig
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@be6ac1e4a9cccbfc400005fc3f607d37ab4635b3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file terminalmon-0.1.0-py3-none-any.whl.
File metadata
- Download URL: terminalmon-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b99b812b4060f5467a4281e575f7ed89669ee2197774b32af746802ed5e24c11
|
|
| MD5 |
eb1670b879e76045a3957ad820bf8e01
|
|
| BLAKE2b-256 |
9bf065a6effb4b4d1013ba44ff1028df52a363b7bbd3a937afa68744a6ac203e
|
Provenance
The following attestation bundles were made for terminalmon-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on bsafig/TerminalMon
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
terminalmon-0.1.0-py3-none-any.whl -
Subject digest:
b99b812b4060f5467a4281e575f7ed89669ee2197774b32af746802ed5e24c11 - Sigstore transparency entry: 2173391859
- Sigstore integration time:
-
Permalink:
bsafig/TerminalMon@be6ac1e4a9cccbfc400005fc3f607d37ab4635b3 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/bsafig
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@be6ac1e4a9cccbfc400005fc3f607d37ab4635b3 -
Trigger Event:
push
-
Statement type: