A lightweight Terminal User Interface (TUI) for managing Docker containers, images, and volumes via WSL2
Project description
🐳 Nano Whale - Lightweight Docker TUI
⚠️ DEPRECATION NOTICE: The original Tkinter GUI version of Nano Whale has been deprecated. This repository now contains the new and improved Terminal User Interface (TUI) version built with Textual. For the legacy version, see the
legacy-tkinterbranch.
Meet Nano Whale TUI! A blazingly fast, lightweight Terminal User Interface for managing Docker containers, images, and volumes. Built with Textual, Nano Whale provides an elegant, keyboard-driven interface for Docker management without the overhead of Docker Desktop.
✨ Features
- Blazingly Fast & Lightweight: Minimal resource footprint, native WSL2 integration.
- Efficient Management: Keyboard-driven TUI for containers, images, and volumes.
- Detailed Inspection: Quickly view container info, environment, ports, volumes, and networks.
- Batch Operations: Multi-select for streamlined management (start, stop, delete).
- Cross-Platform: Works seamlessly on Windows (WSL), Linux, and macOS.
🖼️ Screenshots
Main Interface
Multi-Select Mode
Commands Panel
📦 Installation
Via pip (Recommended)
pip install nano-whale
Via pipx (Isolated)
pipx install nano-whale
From GitHub Releases
Via Windows Executable
For Windows users who prefer a standalone executable without Python or pip installation, you can download the latest release directly from GitHub or follow the below PowerShell script for shell command.
# 1. Download the executable
Invoke-WebRequest -Uri "https://github.com/Vriddhachalam/nano-whale/releases/latest/download/nano-whale-windows-latest-manual.exe" -OutFile "nano-whale-windows-latest-manual.exe"
# 2. Move to C:\Tools and rename
New-Item -Path "C:\Tools" -ItemType Directory -Force
Move-Item .\nano-whale-windows-latest-manual.exe C:\Tools\nano-whale.exe
# 3. Add C:\Tools to PATH
[System.Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Tools", [System.EnvironmentVariableTarget]::Machine)
# 4. Test installation (requires terminal restart if PATH was updated)
nano-whale
Via Linux Executable
For Linux users who prefer a standalone executable, download the latest release from GitHub using this bash script:
# 1. Download the executable
curl -L -o nano-whale-linux-latest-manual https://github.com/Vriddhachalam/nano-whale/releases/latest/download/nano-whale-ubuntu-latest-manual
# 2. Move to /usr/local/bin and rename
sudo mv nano-whale-linux-latest-manual /usr/local/bin/nano-whale
# 3. Make the executable runnable
sudo chmod +x /usr/local/bin/nano-whale
# 4. Test installation
nano-whale
🚀 Usage
Simply run:
nano-whale
Or run directly:
python nano_whale/main.py
⌨️ Keyboard Shortcuts
Table Navigation
| Key | Action |
|---|---|
C |
Switch to Containers table |
I |
Switch to Images table |
V |
Switch to Volumes table |
↑/↓ |
Navigate rows |
Page Up/Down |
Fast scroll |
Home/End |
Jump to first/last row |
| Mouse Click | Click anywhere on table section to switch |
Detail Panel Tabs
| Key | Action |
|---|---|
1 |
Info tab - Container details |
2 |
Env tab - Environment variables |
3 |
Ports tab - Port mappings |
4 |
Volumes tab - Volume mounts |
5 |
Networks tab - Network configuration |
Container Operations
| Key | Action |
|---|---|
S |
Start container(s) |
X |
Stop container(s) |
R |
Restart container(s) |
D |
Delete selected item(s) |
Logs & Terminal
| Key | Action |
|---|---|
L |
View Logs in-shell (suspends TUI) |
Ctrl+L |
View Logs in new terminal window |
T |
Launch Terminal in-shell (exec) |
Ctrl+T |
Launch Terminal in new window |
Multi-Select & Batch Operations
| Key | Action |
|---|---|
M |
Mark/Unmark current item |
(then) S/X/R/D |
Perform action on all marked items |
Utilities
| Key | Action |
|---|---|
A |
Refresh all tables |
G |
Toggle Stats display in container list |
P |
Prune menu (press twice to confirm) |
Q |
Quit application |
Viewing Logs / Exec into containers
In-Shell (suspends TUI, Useful for non GUI servers):
- Select a running container
- Press
LorTLogs stream - Press
Ctrl+CorCtrl+Dto return to TUI
In New Window (TUI remains active):
- Select a running container
- Press
Ctrl+LorCtrl+T
Cleaning Up System
- Press
P- shows warning notification - Press
Pagain within 5 seconds to confirm - Executes
docker system prune -a -f - Removes all unused containers, images, and volumes
💻 Dev Zone: Running from Source
Development Setup
# Clone the repository
git clone https://github.com/Vriddhachalam/nano-whale.git
cd nano-whale
# Create virtual environment
python -m venv .venv
.venv\Scripts\activate # On Windows
# source .venv/bin/activate # On Linux/macOS
# Install dependencies
pip install -r requirements.txt
# Install in development mode
pip install -e .
# Run from source
python nano_whale/main.py
📦 Building Portable Executable with Nuitka
Build Command:
python -m nuitka --standalone --onefile --output-filename=nano-whale nano_whale/main.py
Build Options Explained:
| Option | Description |
|---|---|
--standalone |
Include all dependencies |
--onefile |
Package everything into a single executable |
--windows-console-mode=force |
Keep console window for TUI |
--output-filename |
Name of the output executable |
The portable executable can be distributed and run on any compatible system without Python installation!
🐛 Troubleshooting
"wsl command not found" (Windows)
wsl --install
# Restart computer after installation
"Cannot connect to Docker daemon"
Linux/macOS:
sudo systemctl start docker
# or
sudo service docker start
Windows WSL:
wsl sudo service docker start
"Permission denied"
sudo usermod -aG docker $USER
# Then log out and back in
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📜 License
This project is licensed under the MIT License - see the LICENSE file for details.
📚 Migration from Legacy GUI Version
If you're upgrading from the old Tkinter GUI version:
- No more .exe: The new TUI version runs directly with Python
- Keyboard-driven: Learn the keyboard shortcuts for faster workflow
- Better performance: Even lighter resource usage than before
- SSH compatible: Now works over remote connections
- New features: Split-pane interface, container inspection tabs, multi-select
The legacy Tkinter version can still be found in the legacy-tkinter branch, but it will no longer receive updates.
Legacy Version Screenshots (Deprecated)
⭐ Star History
If you find Nano Whale useful, please consider giving it a star on GitHub!
Made with ❤️ by Vriddhachalam S
Swim fast, stay light! 🐳
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 nano_whale-0.1.17.tar.gz.
File metadata
- Download URL: nano_whale-0.1.17.tar.gz
- Upload date:
- Size: 2.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9681cbe0df36f75a1d97c3c03c1495fd718440a15f4366dd0051a4f770b5166b
|
|
| MD5 |
d57ac6475af45269c8743cf4228697a9
|
|
| BLAKE2b-256 |
ef157d7e7ffc08c59d3101b20e07c770c109b05030e72540e35e9856b208d34d
|
File details
Details for the file nano_whale-0.1.17-py3-none-any.whl.
File metadata
- Download URL: nano_whale-0.1.17-py3-none-any.whl
- Upload date:
- Size: 16.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d18c8b4197a97573ba0a4da7a9ac217b40a162b579c9126554a47dad9c327d86
|
|
| MD5 |
a10397ab21026537aa6d6c5204ca79fb
|
|
| BLAKE2b-256 |
1ab3cc042ed3e1154d75c5443132339f95b0a2ef0fff4b96c246231f47eeada1
|