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-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):

  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.17.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.17-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

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

Hashes for nano_whale-0.1.17.tar.gz
Algorithm Hash digest
SHA256 9681cbe0df36f75a1d97c3c03c1495fd718440a15f4366dd0051a4f770b5166b
MD5 d57ac6475af45269c8743cf4228697a9
BLAKE2b-256 ef157d7e7ffc08c59d3101b20e07c770c109b05030e72540e35e9856b208d34d

See more details on using hashes here.

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

Hashes for nano_whale-0.1.17-py3-none-any.whl
Algorithm Hash digest
SHA256 d18c8b4197a97573ba0a4da7a9ac217b40a162b579c9126554a47dad9c327d86
MD5 a10397ab21026537aa6d6c5204ca79fb
BLAKE2b-256 1ab3cc042ed3e1154d75c5443132339f95b0a2ef0fff4b96c246231f47eeada1

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