Skip to main content

A lightweight Terminal User Interface (TUI) for managing Docker containers, images, and volumes via WSL2

Project description

🐳 Nano Whale - Lightweight Docker TUI

Python Version License Textual

Nano Whale logo

⚠️ 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-tkinter branch.

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

Nano Whale TUI - Main Interface

Multi-Select Mode

Nano Whale TUI - Multi-Select

Commands Panel

Nano Whale TUI - 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-ubuntu-latest https://github.com/Vriddhachalam/nano-whale/releases/latest/download/nano-whale-ubuntu-latest

# 2. Make it executable
chmod +x nano-whale-ubuntu-latest

# 3. Move to /usr/local/bin with a clean name
sudo mv nano-whale-ubuntu-latest /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):

  1. Select a running container
  2. Press L or T Logs stream
  3. Press Ctrl+C or Ctrl+D to return to TUI

Nano Whale TUI - In-Shell Logs

Nano Whale TUI - In-Shell Exec Terminal

In New Window (TUI remains active):

  1. Select a running container
  2. Press Ctrl+L or Ctrl+T

Nano Whale TUI - New Shell Logs

Nano Whale TUI - New Shell Terminal

Cleaning Up System

  1. Press P - shows warning notification
  2. Press P again within 5 seconds to confirm
  3. Executes docker system prune -a -f
  4. 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:

  1. No more .exe: The new TUI version runs directly with Python
  2. Keyboard-driven: Learn the keyboard shortcuts for faster workflow
  3. Better performance: Even lighter resource usage than before
  4. SSH compatible: Now works over remote connections
  5. 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)

Legacy GUI - Main

Legacy GUI - Images

Legacy GUI - Logs

Legacy GUI - Terminal


⭐ 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nano_whale-0.1.18.tar.gz (2.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nano_whale-0.1.18-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

File details

Details for the file nano_whale-0.1.18.tar.gz.

File metadata

  • Download URL: nano_whale-0.1.18.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

Hashes for nano_whale-0.1.18.tar.gz
Algorithm Hash digest
SHA256 acc6cb7382bd8bcda34d04da952709663b7977f3f798e03c188ee979604e52b6
MD5 853ccb3cae0aab2fe25ca7641b175466
BLAKE2b-256 d8cd359cb9231a5428efdb1149b8f927edaa80f89739044009b006ce2020bdea

See more details on using hashes here.

File details

Details for the file nano_whale-0.1.18-py3-none-any.whl.

File metadata

  • Download URL: nano_whale-0.1.18-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

Hashes for nano_whale-0.1.18-py3-none-any.whl
Algorithm Hash digest
SHA256 41ef968552c2a69e5252ec0524e324dd0e3411333f1b5b4bde52c83f19ace606
MD5 fac8dae207bb394232ce84fd206903dc
BLAKE2b-256 fa424e39c9fdf617f25ecf0c7d8c663147e2c7cb02125d5582c0f60c40f93632

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page