A Python-based, Linux-first custom shell environment with plugin support, aliases, banners, and a modern command experience. ZDTT wraps your system shell, adds its own built-in commands, and enhances your workflow instead of replacing your OS shell.
Up/Down arrows navigate session history using Python’s readline module.
Auto-complete commands and filesystem paths.
ZDTT provides a custom prompt with color styling. On Linux: supports full status bar. On macOS: status bar disabled automatically due to OS cursor fight.
Python-based plugin loader with AST security checks. Plugins can register new ZDTT commands without modifying core files.
Aliases are loaded from ~/.zdtt/aliases and behave identically to shell shortcuts.
If ~/.zdtt/banner.txt exists, it is displayed on launch.
ZDTT detects which major family you’re on:
- Debian-based
- Arch-based
- macOS
Used to determine:
- the correct sysfetch tool
- correct default package manager names
- correct onboarding messages
If a command is not a built-in ZDTT command or plugin command, it is passed directly to your real shell (bash, zsh, etc.).
A background thread draws a live status bar showing time and system state. Disabled automatically on macOS.
helpclearabouthistoryexitquitsysfetchtimestatusbar color <name>- plus plugin commands
curl -O https://zdtt-sources.zane.org/install.sh && chmod +x install.sh && ./install.shThe installer:
- Detects Debian, Arch, or macOS
- Installs Python 3 if needed
- Installs ZDTT to ~/.local/bin
- Sets up the
zdttcommand
git clone https://github.com/ZaneThePython/ZDTT
cd ZDTT
chmod +x install.sh
./install.shzdtt startzdtt update
zdtt version
zdtt github
zdtt uninstallZDTT supports simple Python plugins stored in:
~/.zdtt/plugins/
Each plugin must define:
def register_commands():
return {"yourcmd": your_function}Plugins are sandboxed using AST:
- No top-level execution allowed
- Only imports, functions, classes permitted
- Unsafe plugins are quarantined automatically
Reload plugins inside ZDTT:
plugins reload
Install via URL:
zps install <url>
See:
example_plugin.pyPLUGINS.md
Store aliases in:
~/.zdtt/aliases
Or create them live:
alias ll=ls -la
unalias ll
Add a custom banner in:
~/.zdtt/banner.txt
statusbar color blue
Colors supported:
blue red green cyan magenta yellow white black
- Debian-based distros
- Arch-based distros
- macOS (Status bar disabled automatically)
Other distros can run ZDTT but:
- auto-install may not work
- sysfetch may not detect tools
- package-manager messages may be incorrect
ZDTT is written in Python and uses:
readlinefor history & completionthreadingfor status bar updatesastfor plugin securitysubprocessfor system command executionosandshutilfor path and environment detection
ZDTT/
├── terminal.py
├── install.sh
├── version.txt
├── example_plugin.py
├── example_aliases
├── example_banner.txt
├── PLUGINS.md
└── README.md
PRs welcome! ZDTT is early in development and evolving quickly.
- GitHub: https://github.com/ZaneThePython/ZDTT
- Main site: https://zdtt.zane.org
ZDTT is not a full standalone shell yet — it wraps your system shell and enhances it. A full independent shell may come in the future. Plugins may import Python modules, but may not execute code at import time.

