Multi-tile tail viewer for terminal
Project description
┌──────┬──────┬──────┐ ████████╗ █████╗ ██╗██╗ ██████╗ ██████╗ ██╗██████╗
│ tail │ tail │ tail │ ╚══██╔══╝██╔══██╗██║██║ ██╔════╝ ██╔══██╗██║██╔══██╗
├──────┼──────┼──────┤ ██║ ███████║██║██║ ██║ ███╗██████╔╝██║██║ ██║
│ tail │ tail │ tail │ ██║ ██╔══██║██║██║ ██║ ██║██╔══██╗██║██║ ██║
└──────┴──────┴──────┘ ██║ ██║ ██║██║███████╗╚██████╔╝██║ ██║██║██████╔╝
╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚═════╝
watch multiple files · grid-view · one terminal · zero deps
A minimal, dependency-free Python tool to monitor multiple log files simultaneously in a single terminal window. Like tail -f, but for up to 9 files at once in a clean tiled layout. ~250 lines of code. Tested on Ubuntu and macOS.
Features
- Zero dependencies (Python 3.10+ standard library only)
- Up to 9 tiles in a 3×3 grid layout
- Auto-layout based on file count
- Session history (saves last 10 sessions)
- Interactive file picker with directory browsing
- Tab completion for manual path entry
- Live updates (100ms polling)
- Terminal resize support
Viewer controls: +/- adjust lines | r refresh | q quit
Quick start
From PyPI:
pip install tailgrid
tailgrid
Quick start with path (auto-selects .txt and .log files, max 9, newest first):
tailgrid /var/log/
From source:
git clone https://github.com/ferreirafabio/tailgrid.git
cd tailgrid
python -m tailgrid
Menu
tailgrid - Multi-file tail viewer
1) Browse directory
2) Add paths manually
3) Resume session
Select 1-3 (q=quit):
Browse directory
Select 1 to browse a directory and pick files interactively:
Directory path (b=back, q=quit): /var/log/
The file picker lets you select multiple files:
Select files from: /var/log/
─────────────────────────────────────
[x] auth.log
[ ] boot.log
[x] syslog
[ ] kern.log
[x] dpkg.log
3/9 selected │ ↑↓/jk nav │ SPACE sel │ a all │ ENTER ok │ q quit
Layout is auto-selected based on file count:
- 1 file → Single
- 2 files → Choose vertical or horizontal
- 3-4 files → 2×2 grid
- 5-9 files → 3×3 grid
Resume session
Select 3 from menu to restore one of the last 10 sessions:
Recent sessions:
0) 2 file(s), 10 lines
• /var/log/syslog
• /var/log/auth.log
1) 4 file(s), 10 lines
• ~/app/logs/error.log
• ~/app/logs/access.log
• ~/app/logs/debug.log
• ~/app/logs/info.log
Select 0-1 (b=back, q=quit):
Sessions are stored in ~/.config/tailgrid/sessions.json.
Add paths manually
Select 2 to manually enter paths and pick a layout:
Select layout:
1) Single 2) Vertical 3) Horizontal 4) 2x2 Grid 5) 3x3 Grid
┌─────┐ ┌──┬──┐ ┌─────┐ ┌──┬──┐ ┌──┬──┬──┐
│ 1 │ │ 1│ 2│ │ 1 │ │ 1│ 2│ │ 1│ 2│ 3│
└─────┘ └──┴──┘ ├─────┤ ├──┼──┤ ├──┼──┼──┤
│ 2 │ │ 3│ 4│ │ 4│ 5│ 6│
└─────┘ └──┴──┘ ├──┼──┼──┤
│ 7│ 8│ 9│
└──┴──┴──┘
Layout 1-5 (b=back, q=quit): 4
Enter 4 file path(s) (b=back, q=quit):
[1] /var/log/syslog
[2] /var/log/auth.log
[3] ~/app/logs/error.log
[4] ~/app/logs/access.log
Starting with 4 file(s)...
Requirements
- Python 3.10+
- Linux or macOS (curses is not available on Windows)
License
Apache-2.0
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
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 tailgrid-0.3.3.tar.gz.
File metadata
- Download URL: tailgrid-0.3.3.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ae1dbd2ffca167e1164257f4c38124a66394786c43af16b913200a992887f60
|
|
| MD5 |
3b058c27419b1d583b6d18c7a595b3d2
|
|
| BLAKE2b-256 |
5e70ba2e20ae52475b302333693b53fdd4606fe4ea111ef629726d3110884740
|
File details
Details for the file tailgrid-0.3.3-py3-none-any.whl.
File metadata
- Download URL: tailgrid-0.3.3-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f18a005bc3bcbe75b475b357393c0883be0c0e3ede427f1c53097fe5fd60fb60
|
|
| MD5 |
01f056028056313f167097249d25520f
|
|
| BLAKE2b-256 |
ce97cf7ea06a3ed14d73ffabd24ce7e974a3d459630b1d0c1bc91f96116c1933
|