_ __ _ __ ____ _____ / | / /___ / | / /___ _____ ___ ___ / __ \/ ___/ / |/ / __ \/ |/ / __ `/ __ `__ \/ _ \/ / / /\__ \ / /| / /_/ / /| / /_/ / / / / / / __/ /_/ /___/ / /_/ |_/\____/_/ |_|\__,_/_/ /_/ /_/\___/\____//____/
NoNameOS v2.0.0 running in Termux on a MyPhone myT10. Current v4.2.0 adds more games, commands, and full color themes.
An earlier build (v0.3.1), shown for comparison.
One file. Zero dependencies. 54 games. 299 commands. One terminal.
Simulated OS meets sandbox playground — all in a single .cpp
A pure C++ terminal operating-system simulation featuring an interactive shell with pipes, scripts and persistence, a virtual filesystem, 54 built-in games, and 299 commands — all contained in a single source file.
No external dependencies. No framework. No build system headaches. Just compile and run.
Note: NoNameOS is not a real operating system. It is a C++ simulation that mimics an OS environment with a shell, virtual filesystem, games, and built-in tools. This repo is vibe-coded, but AGENTS.md makes this repo stable and it works.
| Single File | Entire project is one .cpp — no build system, no dependency hell, no headaches |
| Fun to Use | 54 games, easter eggs, color themes, animated boot — it's genuinely enjoyable |
| Learn C++ | See real-world STL, OOP, RAII, ANSI escape codes, and POSIX I/O in action |
| Hackable | Every feature in one file — read it, mod it, break it, fix it |
| Portable | Compiles everywhere — Linux, Termux, WSL, even your toaster if it runs g++ |
- C++ learners wanting to see real OS concepts without kernel-level complexity
- Students exploring filesystems, shells, and process simulation hands-on
- Hackers looking for a terminal sandbox packed with games and tools
- Termux users craving a fun single-file project (a few seconds on a desktop,
a couple of minutes with
-O2on a phone)
- Why NoNameOS?
- Perfect For
- Features
- What's New in v4.2.0
- What's New in v4.1.0
- What's New in v4.0.0
- What's New in v3.0.0
- Quick Start
- Keyboard Shortcuts
- Build Instructions
- Command Reference
- Games
- Easter Eggs
- Custom Maps
- Architecture
- What You'll Learn
- FAQ
- Platform Requirements
- Tech Stack
- Fun Facts
- Version History
- Contributing
- License
| Category | What You Get | Highlights |
|---|---|---|
| Interactive Shell | Pipes, redirects, chains, globs, TAB-complete, scripts, persistence, themes, 299 commands | Arrows, history, Ctrl+R search, fuzzy suggestions |
| Virtual Filesystem | Files, directories, symlinks, permissions, trash | Timestamps, sizes, ls -l, chmod |
| 48 Games | Arcade, puzzle, strategy, word, reflex games | Tetris, Othello, Blackjack, Wordle, Battleship |
| System Tools | Text editor, calculators, system info | kernel, netstat, traceroute, report |
| Text Processing | grep, find, sort, word count, diff | rev, tr, cut, uniq, nl, fold |
| Converters | Base64, ROT13, Morse, Roman, Binary | urlencode, hexdump, hash |
| Math & Stats | Calculators, BMI, tip, statistics | calc2, bmi, stats, dice, coin |
| Productivity | Todo list, notes, timers, password gen | pom, countdown, worldclock |
| Visual Effects | Matrix rain, rainbow text, color themes | matrix, lolcat, colors, disco |
| Fun & Easter Eggs | 25+ hidden commands | sudo, rickroll, konami, hack |
sha256sum <file>— SHA-256 (FIPS 180-4) computed in-process by a self-contained implementation, so checksums work offline with zero dependencies.sha256sumofhello worldmatches the published digest (b94d27b9…efcde9).stat <path>— type, mode, size, line/word count and creation stamp for any VFS file or directory; symlinks show their target.
catnow prints file bytes verbatim. It used to append a newline that was not in the file, socat f | wccounted one extra character and every piped consumer saw different bytes than the file held.sha256sumaccepts stdin (cat f | sha256sumproduces the same digest assha256sum f) — previously the piped form silently did nothing.
Startup now prints one rotating tip from a small pool (TAB completion,
man <cmd>, pipes, persistence, theme list, …) so features people miss have
a chance of being discovered.
Previous builds advertised these commands in help but their handlers were
never wired into the dispatcher — they all printed "command not found". All of
them now run:
roulette— Russian roulette with a real 1-in-6 chamber; re-spun every pullslotmachine— three reels; triple match pays the JACKPOT linetowers— Towers of Hanoi, 4 disks, move withAB(rod A to rod B); perfect clear is 15 movespoker— five-card draw vs the dealer: swap any cards, dealer keeps pairs, showdown ranks the hands
darts— score a throw (0–100)bowling— knock down pins; a 10 is a STRIKE
emoticon— mood table (happy,sad,wink,love, ...) or any custom textqr/barcode— text in, generator responds (rendering not available in this build)asciiart— points you at theasciibanner command
war— card war vs AI: ties burn three cards and the face-off scores double, first to 12 wins the deckyahtzee— 3 rounds of best-category dice vs AI; reroll up to twice by listing dice numbers (1 4)higherlower— will the next number be higher or lower? Build the longest streakartillery— 5 shots with angle + power to hit a hidden bunker; wind pushes shells 3 m per unit
bitwise— dec/hex/bin probe plusand|or|xor|shl|shrmath (accepts0x..input)regex— live regex tester; matches highlighted against text or piped inpututime— epoch ↔ local datetime converter (utime 1000000000orutime now)ipcalc— IPv4 subnet calculator: mask, wildcard, network, broadcast, usable hostsbudget— persistent expense tracker (budget add 12.50 coffee, list/remove/total/clear)keytest— show raw key codes live (great for debugging terminal setups)
- Effects:
snow(snowfall),wave(sine surf),starfield(warp speed) - Eggs:
coffee(HTTP 418),potato,banana,goose(HONK)
gruvbox— warm retro brown/yellow paletterose— pink pastel citrus palettetheme set gruvbox/theme set rose(both persist like the rest)
- Pipelines —
cat file | grep x | sort | wc(stdout→stdin between commands) - Redirections —
ls > out.txt,cat a >> b, and< inputredirection - Chaining —
cmd1 && cmd2(short-circuit),cmd1 ; cmd2 - Glob wildcards —
cat /docs/*.txt,rm test_*(matched against the VFS) - TAB completion — completes commands, aliases, and VFS paths at the prompt
- Ctrl+R — reverse-i-search through command history
.nnshscripts:run script.nnsh args…withset k=v,$var $1-$9 $@, and one-lineif A == B then cmd- Session persistence: VFS, aliases, users, packages auto-saved to
~/.nonameos.vfson exit and restored on boot save/load/persist on|offfor manual control
chess— full-rules chess vs greedy-2-ply AI: castling, promotion, check/checkmate detectionclicker— idle coin clicker with 5 upgrades; progress persists (offline earnings up to 8h)pet— tamagotchi that decays in real time between sessions (pet feed/play/sleep/clean/name)fishing— cast, wait for the bite, react fast; rarity table + catch log (fishing stats)
- Color themes —
theme set matrix|dracula|ocean|sunset|mono|gruvbox|rose|tokyonight|everforestswaps the whole palette (saved);theme preview <name>shows a sample first andtheme randompicks one for you - Custom prompt —
prompt set "[%t] %u@%d > "with%u %h %d %t %%tokens (saved) - Package manager —
pkg install figlet|nyancat|starwars|sheepunlocks bonus toys newsMOTD headlines,crunchcolumn math,pack/packlist/unpackarchiver, laps-capablestopwatch
othello— classic Reversi vs. AI (2-player hotseat too)mastermind— crack the secret color code in 10 guessessimon— follow the growing light sequenceblackjack— beat the dealer with real card logicbattleship— sink the AI fleet with a smart-grid huntslots— 3-reel slot machine with jackpotsmaze— escape an 18×14 maze, generated per runnim— take-the-last-stone strategy gamebuzz— the 3/5 FizzBuzz challenge vs. AIbulls— cows & bulls number deductiontwentyone— simplified blackjack variantjumble— unscramble words across 5 categoriesarith— rapid-fire mental math quizbingo— auto-generated bingo card
kernel, boot (animated reboot), shutdown (halts the OS), netstat, dns, traceroute, lsblk, mount, fib, primes, collatz, sine, cube, shell (toy sub-shell), logout, report, mac, geoip, dict, log
llm (fake AI chat), gpt, blockchain (fake mining), mine, neo, rabbit, dlc, kitchen, toaster, canon
spinner, progress, gauge, rain, fire, stream (matrix-style), type (typewriter)
helpnow lists v2.0 categories: Games, System, Tools, Easter Eggs, Effects- Version bumped to v2.0.0 — the biggest feature drop yet
- Fixed 2 critical Sudoku infinite loops in initialization
- Fixed
setfill('0')state leak across commands - Fixed 5 dead easter eggs (moved inside primary handlers)
- Fixed hangman — now draws complete figure at game end
- Fixed Tic-Tac-toe error pause in raw mode
- Added
cin.ignorebeforecin.get()in all 21 prompts - Added quit mechanism to guess game
- Fixed 2048 duplicate win message
- Whack-a-mole '0' now triggers miss as documented
- World clock uses UTC offset math (no global
TZmodification) - Tetris J-piece now has 4 rotations
- kbhit/getkey use static peek buffer (race-free)
- CSV separator width fixed
- Global arrow key support in all 7 real-time games
- Shell readline with cursor movement, backspace, history navigation
- 25+ easter eggs (
sudo,konami,rickroll,disco,matrix, etc.)
- 11 new games: Tetris, Pong, Sudoku, Flappy Bird, Memory Cards, Connect Four, Lights Out, Sliding Puzzle, Breakout, Whack-a-Mole, Wordle, Quiz
- 60+ new commands: Converters, math tools, text processing, fun utilities
- Enhanced visuals: 256-color ANSI, truecolor RGB, animated boot, styled prompts
git clone https://github.com/Mark44928/NoNameOS.git && cd NoNameOS && g++ -O2 NoNameOS.cpp -o nonameos -lpthread && ./nonameosOne command. One file. One terminal. Pure C++ fun.
Or use make:
git clone https://github.com/Mark44928/NoNameOS.git && cd NoNameOS && make && ./nonameosOr use the installer (builds and installs to $PREFIX/bin on Termux,
~/.local/bin elsewhere):
git clone https://github.com/Mark44928/NoNameOS.git && cd NoNameOS && ./install.sh
# fzf menu appears when fzf is already installed (never installed for you)
# remove it later with: ./install.sh --uninstall| Key | Action |
|---|---|
↑ / ↓ |
Navigate command history |
← / → |
Move cursor left/right |
Backspace |
Delete character at cursor |
Enter |
Execute command |
| Key | Action |
|---|---|
WASD / Arrow Keys |
Move (snake, tetris, pong, breakout) |
SPACE / W / ↑ |
Jump (flappy, asciidash) |
Q |
Quit any game |
1-9 |
Whack-a-mole input |
Enter |
Confirm / continue |
NoNameOS is written in pure C++ and uses POSIX headers. It compiles on any Linux-based system with a C++ compiler.
pkg install clang
clang++ -O2 NoNameOS.cpp -o nonameos -lpthread
./nonameossudo apt update && sudo apt install g++
g++ -O2 NoNameOS.cpp -o nonameos -lpthread
./nonameossudo dnf install gcc-c++
g++ -O2 NoNameOS.cpp -o nonameos -lpthread
./nonameossudo pacman -S gcc
g++ -O2 NoNameOS.cpp -o nonameos -lpthread
./nonameos📁 Filesystem (22 commands)
| Command | Usage | Description |
|---|---|---|
ls |
ls |
List files in current directory |
ls -l |
ls -l |
Long listing with sizes, timestamps, and permissions |
cd |
cd <dir> |
Change directory (.. for parent, / for root) |
mkdir |
mkdir <name> |
Create a new directory (with intermediate parents) |
touch |
touch <file> |
Create an empty file |
cat |
cat <file> |
Display file contents |
echo |
echo <file> <content> |
Write content to a file |
rm |
rm <name> |
Move to trash (recycle bin, use trash to manage) |
rm -r |
rm -r <dir> |
Recursively trash a directory |
pwd |
pwd |
Print current working directory |
grep |
grep <pattern> <file> |
Search for a pattern in a file |
find |
find <name> |
Find files by name |
locate |
locate <pattern> |
Search VFS for paths matching pattern |
cp |
cp <source> <dest> |
Copy a file |
cp -r |
cp -r <src> <dst> |
Recursively copy a directory |
mv |
mv <source> <dest> |
Move or rename a file/directory |
ln -s |
ln -s <target> <link> |
Create a symbolic link |
du |
du [dir] |
Show disk usage of current or specified directory |
tree |
tree [dir] |
Display directory tree with indentation |
trash |
trash list|empty |
List or empty the trash |
chmod |
chmod <mode> <file> |
Change file permissions in VFS |
head |
head <file> |
Display first 10 lines of a file |
tail |
tail <file> |
Display last 10 lines of a file |
sort |
sort <file> |
Sort lines of a file alphabetically |
wc |
wc <file> |
Count lines, words, and characters |
tee |
tee <file> <text> |
Write to file and display on stdout |
⚙️ System (25 commands)
| Command | Usage | Description |
|---|---|---|
whoami |
whoami |
Show current user |
who |
who |
Show logged-in users |
date |
date |
Show current date and time |
uptime |
uptime |
Show system uptime and load |
hostname |
hostname |
Print system hostname |
uname |
uname [-a|-r|-s|-m] |
Print system information |
arch |
arch |
Print machine architecture |
nproc |
nproc |
Print number of CPUs |
free |
free |
Show simulated memory usage |
dmesg |
dmesg |
Print boot messages |
lscpu |
lscpu |
Show CPU information |
lsusb |
lsusb |
List USB devices |
ps |
ps |
List running processes |
top |
top |
Show process snapshot |
env |
env |
Show environment variables |
printenv |
printenv |
Print environment variables |
history |
history |
Show command history |
seq |
seq <end> |
Print sequence of numbers |
ping |
ping [host] |
Simulated ping |
watch |
watch <cmd> |
Run a command repeatedly |
df |
df |
Show VFS disk usage |
cfetch |
cfetch |
Display system info (like neofetch) |
clear |
clear |
Clear the screen |
help |
help [cmd] |
Show all commands or describe a command |
exit |
exit |
Exit NoNameOS |
🛠️ Tools (25 commands)
| Command | Usage | Description |
|---|---|---|
nano |
nano <file> |
Built-in line-by-line text editor |
calc |
calc <expr> |
Calculator (+ - * / sin/cos/tan/sqrt/log/pow) |
bc |
bc <expr> |
Better calculator (+ - * / % ^) |
cowsay |
cowsay [msg] |
ASCII cow with a speech bubble |
man |
man <command> |
Display manual pages for any command |
cal |
cal [-e|-a|-r] |
Calendar with event support |
rainbow |
rainbow [msg] |
Print text in rainbow colors |
lolcat |
lolcat [text] |
Rainbow gradient text |
yes |
yes [text] |
Print text repeatedly |
sleep |
sleep <sec> |
Pause for N seconds (max 30) |
which |
which <command> |
Locate a command |
alias |
alias [name=cmd] |
Show or create aliases |
unalias |
unalias <name> |
Remove an alias |
su |
su [user] |
Switch user (root/user/guest/admin) |
useradd |
useradd <name> |
Add a new user |
userdel |
userdel <name> |
Remove a user |
users |
users |
Show logged-in users |
banner |
banner [msg] |
Display colored ASCII banner |
fortune |
fortune |
Random programming quote |
factor |
factor <n> |
Prime factorization of a number |
shuf |
shuf <text> |
Randomly shuffle text characters |
sl |
sl |
Steam locomotive animation |
train |
train |
Same as sl |
sha256sum |
sha256sum <file> |
SHA-256 digest of a VFS file (also reads piped stdin) |
stat |
stat <path> |
Type, mode, size, line/word count and creation stamp |
📝 Text Processing (9 commands)
| Command | Usage | Description |
|---|---|---|
rev |
rev <file> |
Reverse each line of a file |
tr |
tr <file> <f> <r> |
Replace character <f> with <r> in file |
cut |
cut <file> <n> |
Extract first N characters of each line |
paste |
paste <f1> <f2> |
Merge two files line by line |
uniq |
uniq <file> |
Remove consecutive duplicate lines |
nl |
nl <file> |
Number lines of a file |
fold |
fold <file> [n] |
Wrap lines at N characters (default 80) |
basename |
basename <path> |
Strip directory from path |
dirname |
dirname <path> |
Extract directory from path |
📋 Productivity (9 commands)
| Command | Usage | Description |
|---|---|---|
todo |
todo add/list/done/clear |
Task list manager (persistent in VFS) |
notes |
notes <name>|list|rm |
Note editor (persistent in VFS) |
stopwatch |
stopwatch |
Press Enter to start/stop/show elapsed time |
timer |
timer <sec> |
Countdown timer with visual feedback |
pom |
pom |
Pomodoro timer (25min focus / 5min break) |
alarm |
alarm <sec> |
Set an alarm that counts down |
countdown |
countdown <sec> |
Countdown with progress bar (1-600s) |
password |
password |
Generate secure random password (12-20 chars) |
worldclock |
worldclock |
Show times across 6 time zones |
🔄 Converters & Encoding (10 commands)
| Command | Usage | Description |
|---|---|---|
base64 |
base64 <file|text> |
Base64 encode text or file |
rot13 |
rot13 <text> |
ROT13 text rotation |
morse |
morse <text> |
Convert text to Morse code |
roman |
roman <num> |
Convert number to Roman numerals (1-3999) |
binary |
binary <num> |
Convert number to binary |
hash |
hash <text> |
Generate DJB2 hash |
urlencode |
urlencode <text> |
URL-encode text |
urldecode |
urldecode <text> |
URL-decode text |
hexdump |
hexdump <file|text> |
Hex dump with ASCII sidebar |
encode |
encode <text> |
Show ROT13, uppercase, and lowercase |
🧮 Math & Stats (11 commands)
| Command | Usage | Description |
|---|---|---|
calc2 |
calc2 <expr> |
Infix calculator with proper precedence |
bmi |
bmi <weight_kg> <height_m> |
Calculate BMI |
tip |
tip <bill> <percent> |
Calculate tip and total |
stats |
stats <num1> <num2> ... |
Mean, median, std dev, min, max |
random |
random [lo] [hi] |
Random number (default 1-100) |
dice |
dice [n] |
Roll n dice (default 1) |
coin |
coin |
Flip a coin |
scrabble |
scrabble <word> |
Calculate Scrabble score |
age |
age <year> <month> <day> |
Calculate age from birthdate |
datecalc |
datecalc <y m d> +|- <days> |
Add/subtract days from a date |
units |
units <val> <from> <to> |
Convert units (km/mi, kg/lb, C/F, etc.) |
📊 Text Tools (8 commands)
| Command | Usage | Description |
|---|---|---|
wordcount |
wordcount <file> |
Word/line/char count + frequency chart |
diff |
diff <file1> <file2> |
Show differences between two files |
capitalize |
capitalize <text> |
Capitalize first letter of each word |
reverse |
reverse <text> |
Reverse a string |
repeat |
repeat <n> <text> |
Repeat text n times |
bar |
bar <label value> ... |
Draw a bar chart |
sparkline |
sparkline <n1> <n2> ... |
Draw a sparkline |
csv |
csv <file> |
Display CSV as formatted table |
🎨 Fun & Info (17 commands)
| Command | Usage | Description |
|---|---|---|
colors |
colors |
Show all 16 color palette swatches |
cmtheme |
cmtheme |
Show color theme options |
colorgen |
colorgen |
Generate random color with RGB + hex |
palette |
palette |
Generate 10-color palette from seed |
matrix |
matrix [rows] |
Matrix rain animation |
ascii |
ascii |
Random ASCII art |
emoji |
emoji [name] |
Show emoji or list all emojis |
pick |
pick a | b | c |
Randomly pick from options |
zodiac |
zodiac <month> <day> |
Get zodiac sign |
quote |
quote |
Random inspirational quote |
joke |
joke |
Random programming joke |
weather |
weather |
Simulated weather report |
ip |
ip |
Show simulated IP addresses |
uptime2 |
uptime2 |
Detailed uptime with progress bar |
mem |
mem |
Memory usage with bar |
cpu |
cpu |
Per-core CPU usage |
disk |
disk |
Disk usage across mounts |
$ ./nonameos
_ __ _ __ ____ _____
/ | / /___ / | / /___ _____ ___ ___ / __ \/ ___/
/ |/ / __ \/ |/ / __ `/ __ `__ \/ _ \/ / / /\__ \
/ /| / /_/ / /| / /_/ / / / / / / __/ /_/ /___/ /
/_/ |_/\____/_/ |_|\__,_/_/ /_/ /_/\___/\____//____/
═══════════════════════════════════════════
v4.2.0 · Pure C++ OS Simulation
═══════════════════════════════════════════
[━━━━━━━━━━━━━━━━━━━━━━━━━] System ready
✓ NoNameOS v4.2.0 booted successfully
Type help for available commands
↑↓ history ←→ cursor Backspace delete
root@nonameos:/
❯ cowsay
────────
Moo.
────────
\ ^__^
\ (oo)\_______
(__)\ )\/\\
||----w |
|| ||
root@nonameos:/
❯ lolcat
NoNameOS
root@nonameos:/
❯ tableflip
(╯°□°)╯︵ ┻━┻
root@nonameos:/
❯ banner
╔===========╗
║ NoNameOS ║
╚===========╝
root@nonameos:/
❯
| Game | Command | Description | Controls |
|---|---|---|---|
| Snake | snake |
Eat food to grow. Don't hit walls or yourself. | WASD / Arrows |
| Tetris | tetris |
Falling blocks. Clear lines to score. | AD=move W=rotate S=drop |
| Pong | pong |
Classic Pong vs AI. First to 5 wins. | WS=move |
| Breakout | breakout |
Break bricks with a bouncing ball. | AD=move |
| Flappy Bird | flappy |
Flap through pipes. How far can you go? | SPACE=flap |
| Game | Command | Description | Controls |
|---|---|---|---|
| 2048 | 2048 |
Slide tiles to merge them. Reach 2048. | WASD |
| Sudoku | sudoku |
9x9 number puzzle with pre-filled clues. | r c value |
| Minesweeper | minesweeper |
10x10 grid. Find mines without blowing up. | x y to reveal |
| Sliding Puzzle | puzzle |
Classic 15-puzzle. Arrange tiles in order. | WASD / Arrows |
| Lights Out | lightsout |
Toggle lights on 5x5 grid. Turn all off. | r c |
| Game | Command | Description | Controls |
|---|---|---|---|
| Tic-Tac-Toe | tictactoe |
Play against minimax AI. You are X. | 1-9 |
| Connect Four | connect4 |
Drop discs. First to 4 in a row wins. | 1-7 |
| Game | Command | Description | Controls |
|---|---|---|---|
| Wordle | wordle |
Guess the 5-letter word in 6 attempts. | Type word |
| Hangman | hangman |
Guess letters before the figure is complete. | Type letter |
| Trivia | trivia |
5 tech questions. Test your knowledge. | 1-4 |
| Quiz | quiz |
5 random general knowledge questions. | 1-4 |
| Game | Command | Description | Controls |
|---|---|---|---|
| Whack-a-Mole | whack |
Whack moles as they pop up! | 1-9 |
| Typing Test | typing |
Test your typing speed and accuracy. | Type |
| Reaction Time | reaction |
Press key when screen flashes. 3 rounds. | Any key |
| Game | Command | Description | Controls |
|---|---|---|---|
| AsciiDash | play |
Side-scrolling obstacle runner. | SPACE=jump |
| Adventure | adventure |
Dungeon RPG with HP and gold. | left/right/rest |
| Guess | guess |
Guess a number 1-100. | Type number |
| Rock Paper Scissors | rps |
Best-of-7 vs AI. | 1-3 |
| Number Memory | nummem |
Memorize growing digit sequences. | Type digits |
NoNameOS has 25+ hidden easter eggs. Try these:
🥚 Spoiler: Easter Eggs (click to reveal)
| Command | What Happens |
|---|---|
sudo make me a sandwich |
"Okay." |
sudo rm -rf / |
"NUCLEAR LAUNCH DENIED" |
42 |
The Answer to the Ultimate Question |
konami |
Konami Code activated! |
rickroll |
Never gonna give you up... |
hack |
Hollywood-style hacking animation |
disco |
Rainbow disco mode |
dance |
Dancing stick figure |
matrix -r |
"Wake up, Neo..." |
whoami really |
Existential crisis |
lenny |
( ͡° ͜ʖ ͡°) |
tableflip |
(╯°□°)╯︵ ┻━┻ |
dealwithit |
(⌐■_■) |
loading |
Fake loading bar |
glhf |
Good luck, have fun! |
version -a |
Developer stats |
cat /dev/brain |
"You're already using it" |
echo hello world |
Hello, World! greeting |
Create your own AsciiDash maps using ^ for obstacles and _ for flat ground:
cd /geometry
echo mymap.gmd ____^^____^^^^____^___^
play mymap.gmdThe default map jumper.gmd is pre-loaded in /geometry/.
NoNameOS is a goldmine for C++ learners. Here's what each feature teaches:
| Feature | C++ Concept | Real-World Pattern |
|---|---|---|
TerminalGuard |
RAII (Resource Acquisition Is Initialization) | Always restore resources in destructors |
map<string, FSNode> |
STL associative containers | Virtual filesystems, databases, caches |
mt19937 rng{...} |
Modern C++ random | Cryptographic vs. pseudo-random generation |
namespace clr |
Namespaces & constants | Avoiding global pollution, naming conventions |
cooked_readline() |
POSIX terminal I/O | How shells actually read input |
| Command dispatch | String parsing & routing | Interpreter design, plugin systems |
cp -r iterator |
Iterator safety | Avoiding undefined behavior with containers |
cmd_bc shunting-yard |
Algorithm implementation | Expression parsing, operator precedence |
has_traversal() |
Input validation | Security: path traversal attacks |
volatile sig_atomic_t |
Signal handling | Async-signal-safe programming |
| ANSI escape codes | Terminal rendering | How htop, vim, tmux draw UIs |
fork()/waitpid() |
Process simulation | Conceptual: how real OS process management works (simulated in NoNameOS) |
Does NoNameOS work on Windows?
No. NoNameOS uses POSIX headers (<termios.h>, <unistd.h>, <fcntl.h>) that don't exist on Windows. However, it works perfectly under WSL (Windows Subsystem for Linux) and Git Bash.
How do I exit?
Type exit or press Ctrl+C. The TerminalGuard RAII class will restore your terminal settings automatically.
Can I save data between sessions?
Yes. Use save to persist the VFS to ~/.nonameos.vfs, and load to restore it. Session persistence (persist on) auto-saves on exit and auto-loads at boot.
How is this different from a real OS?
NoNameOS is a simulation for learning and fun. It has a shell, filesystem, and processes — but they're all implemented in userspace C++ code. There's no kernel, no hardware access, no real multitasking.
Can I add my own commands?
Yes! The entire project is one file. Search for the exec_segment dispatcher and add your own else if (cmd == "mycommand") block. Then recompile.
Why is it called "NoNameOS"?
Because naming things is hard. The author couldn't decide on a name, so... NoNameOS it is.
- Linux (Termux on Android, Debian, Ubuntu, Fedora, Arch, etc.)
- A C++ compiler (
g++orclang++) - POSIX-compatible system (uses
<termios.h>,<unistd.h>,<fcntl.h>) - Windows is not supported due to POSIX-only dependencies
| Technology | Usage |
|---|---|
| C++17 | Core language — STL containers, lambdas, structured bindings, optional |
| POSIX I/O | Terminal control via termios, non-blocking input via fcntl |
| ANSI Escape Codes | 256-color and truecolor (RGB) terminal rendering |
| RAII | TerminalGuard ensures terminal state is always restored |
| Single-file Design | Entire project in one .cpp file — zero build complexity |
Note - If the Architecture looked misaligned/messy, it's the rendering problem. we can't fix this bug. 😕
┌─────────────────────────────────────────────────────────────────┐
│ NoNameOS Architecture │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌─────────────────┐ ┌──────────────┐ │
│ │ Terminal I/O │───▶│ Shell (REPL) │───▶│ Dispatcher │ │
│ │ termios.h │ │ cooked_readline │ │ if/else map │ │
│ │ fcntl.h │ │ history, arrows │ │ 299 cmds │ │
│ └──────────────┘ └─────────────────┘ └───────┬──────┘ │
│ │ │
│ ┌────────────────────────────────┼─────┐ │
│ │ │ │ │
│ ┌────────▼───────┐ ┌─────────▼───┐ │ │
│ │ Virtual FS │ │ 48 Games │ │ │
│ │ map<string, │ │ Tetris │ │ │
│ │ FSNode> │ │ Snake │ │ │
│ │ timestamps │ │ Pong │ │ │
│ │ permissions │ │ Wordle │ │ │
│ │ symlinks │ │ ... │ │ │
│ └────────────────┘ └─────────────┘ │ │
│ │ │
│ ┌────────────────┐ ┌─────────────┐ │ │
│ │ System Tools │ │ Easter │ │ │
│ │ nano, calc │ │ Eggs │─┘ │
│ │ cfetch, top │ │ 25+ │ │
│ └────────────────┘ └─────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────────────┐ │
│ │ TerminalGuard (RAII) — auto-restores terminal on exit │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
| Pattern | Where | Why |
|---|---|---|
| RAII | TerminalGuard class |
Terminal state always restored, even on exceptions |
| STL Containers | map<string, FSNode> |
Virtual filesystem backed by associative containers |
| MT19937 RNG | mt19937 rng{random_device{}()} |
Modern C++ random number generation |
| ANSI Colors | namespace color |
256-color and truecolor RGB terminal rendering |
| Single Dispatch | exec_segment in main() | One massive if/else chain routes all 299 commands (plus pipes/chains engine around it) |
- Single-file C++ project — the entire OS in one
.cppfile - Zero external dependencies — only standard library + POSIX
- Compiles in ~10 seconds on a modern machine
- Runs on anything: Linux, macOS, Termux (Android), WSL
- 43+ bugs found and fixed across automated audit passes
- 25+ easter eggs hidden throughout the codebase
- Built with: C++, POSIX, and questionable life choices
| Version | Lines | Games | Commands | Key Changes |
|---|---|---|---|---|
| v4.2.0 | 9,010 | 54 | 299 | sha256sum (FIPS 180-4, in-process) · stat (type/mode/size/words) · rotating boot tip |
| v4.1.0 | 8,980 | 54 | 301 | roulette · slotmachine · towers · poker · darts · bowling wired into the dispatcher (were dead code) · emoticon mood table · update-readme.sh now idempotent |
| v4.0.0 | 8,533 | 48 | 286 | war · yahtzee · higherlower · artillery · bitwise regex utime ipcalc budget keytest · snow wave starfield · coffee potato banana goose · gruvbox + rose themes |
| v3.0.0 | 7,893 | 44 | 269 | pipes · redirects · && ; · globs · TAB · Ctrl+R · .nnsh scripts · persistence · themes · prompt · pkg · chess clicker pet fishing · crunch pack news stopwatch-laps |
| v2.0.0 | 5,962 | 40 | 251 | 14 games, 20 tools, 10 eggs, 7 effects |
| v1.0.2 | 4,928 | 24 | 149 | 43 audit bug fixes |
| v1.0.1 | 4,561 | 24 | 135 | Arrow keys, cursor movement, easter eggs |
| v1.0.0 | 4,500 | 24 | 135 | 11 new games, 60+ commands, visual overhaul |
| v0.7.0 | 2,500 | 13 | 75 | VFS, games, tools, alias system |
| v0.6.0 | 1,800 | 9 | 55 | 3 games, 18 commands, man pages |
| v0.4.0 | 1,100 | 6 | 35 | 13 new features |
| v0.3.1 | 800 | 3 | 20 | Initial release |
Contributions are welcome! Here's how:
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes (
git commit -m "Add my feature") - Push to the branch (
git push origin feature/my-feature) - Open a Pull Request
- Improve the AsciiDash engine with graphics
- Add more trivia questions and quiz content
- Add new games (Tetris Pong variants, puzzles, etc.)
- Add
vimcommand with basic modal editing
Tiny, dependency-free tools from the same family:
- plusafetch — C++23 fetch for Termux — ~23 ms, zero subprocesses on the default path
- Plusalator — C++17 calculator REPL — Qalculate-flavored, ghost autosuggest, 18 themes
- GrubBlastersHTML — Worms-style artillery in one HTML file — 70 weapons, fully destructible terrain
- SnakTUI — modern Snake for your terminal — Textual + Python
- Easy-Termux-Package-Manager — fzf-driven package manager for Termux — snapshots, audit, 183 tests
- Greenit — green-injected theme family — dark + light, single palette.json
- CalculaHTML — static HTML calculator — 15 themes + System mode, zero deps
- android12-fastfetch — fastfetch config for Android 12 + native X11 Termux desktops
- Anti-bloatware-list-for-Android-TV-Boxes-and-Sticks-for-rooted — ADB debloat for rooted Android 9+ TV sticks & boxes
- Android9-audios — 217 stock Android 9 system sounds + per-file SHA-256
This project is licensed under the GNU General Public License v3. See the LICENSE file for details.
- Anti-Bloatware List - Debloat rooted Android TV sticks
Found a bug? Open an issue. Made something cool? Submit a PR. Just here for the games? We don't blame you.
NoNameOS — because who needs a real OS when you can have 54 games and a terminal that judges your typing speed?