Interactive Terminal User Interface for GitIgnore template generation
Project description
igntui
๐ Website โข ๐ฆ PyPI โข ๐ Quick Start โข ๐ฌ Support
A powerful Terminal User Interface (TUI) and CLI for generating
.gitignorefiles from gitignore.io templates.
โจ Features
๐จ Interactive TUI Mode
- Smart Search - Fuzzy, exact, and regex search modes (F1/F2/F3)
- Multi-Template Selection - Select and combine multiple templates
- Live Preview - See generated
.gitignorecontent in real-time - Intuitive Navigation - Tab between panels, arrow keys, vim-style shortcuts
- Beautiful Interface - Animated splash screen with pyfiglet ASCII art
โก Performance
- Intelligent Caching - Local template caching for instant access
- Async Loading - Non-blocking template loading and generation
- Rate Limiting - Respects API limits automatically
๐พ Export & Save
- Save to File - Save generated
.gitignorewith custom paths - Export Templates - Export selected templates as JSON
- Overwrite Protection - Confirmation dialogs for existing files
๐ ๏ธ CLI Mode
- Quick Generation - Generate
.gitignorefrom command line - List Templates - Browse 571+ available templates
- Test Connection - Verify API connectivity
- Cache Management - Clear and manage local cache
๐ฆ Installation
Using pip (Standard)
pip install igntui
Using pipx (Isolated)
pipx installs the package in an isolated environment:
pipx install igntui
From source
git clone https://github.com/MKAbuMattar/igntui.git
cd igntui
pip install -e .
Windows Requirements
On Windows, you'll need the windows-curses package:
pip install windows-curses
๐ Quick Start
Launch TUI (Interactive Mode)
igntui
or
python -m igntui
CLI Commands
Generate .gitignore
# Single template
igntui generate python
# Multiple templates
igntui generate python node visualstudiocode
# Save to file
igntui generate python --output .gitignore
List Available Templates
# List all templates
igntui list
# Search templates
igntui list --search python
# Show count only
igntui list --count
Test API Connection
igntui test
Cache Management
# Show cache info
igntui cache --info
# Clear cache
igntui cache --clear
Show Version
igntui --version
# Output: igntui/1.0.0 Python/3.13.0 Windows/11
๐ฎ TUI Usage
Keyboard Shortcuts
Navigation
Tab/Shift+Tab- Navigate between panelsโ/โ- Move selection up/downPgUp/PgDn- Page up/downHome/End- Jump to top/bottom
Search Modes
F1- Fuzzy search (default)F2- Exact searchF3- Regex search
Template Management
Space- Select/deselect templatea- Select all templatesx- Clear all selectionsEnter- Generate.gitignorecontent
Actions
s- Save generated.gitignoreto filee- Export selected templates as JSONF5- Refresh template listh/?- Show help dialogi- Show app infoq/Esc- Quit application
Panel Layout
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Search Panel โ Generated Content Panel โ
โ (Filter templates) โ (Preview .gitignore) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค โ
โ Available Templates โ โ
โ (571+ templates) โ โ
โ โ โ
โ โข Select with Space โ โ
โ โข Multi-select support โ โ
โ โข Smart search โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Selected Templates (Bottom Panel) โ
โ โข Shows your current selection โ
โ โข Remove with Space โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Status Bar โ
โ โข Keyboard shortcuts โข Current mode โข Status messages โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฏ Use Cases
For Developers
# Python project
igntui generate python venv
# Node.js project
igntui generate node npm yarn
# Full-stack project
igntui generate python node react visualstudiocode
# Unity game development
igntui generate unity visualstudio windows
For Teams
# Export team's template selection
igntui # Select templates in TUI, press 'e' to export
# Share the JSON file with team
# Others can import and use the same templates
โ๏ธ Configuration
Configuration file location: ~/.igntui.json
Default Configuration
{
"api": {
"base_url": "https://www.toptal.com/developers/gitignore/api",
"timeout": 10,
"cache_ttl": 3600,
"retry_attempts": 3
},
"ui": {
"theme": "default",
"mouse_support": true,
"animation_speed": 150
},
"behavior": {
"fuzzy_search_threshold": 0.6,
"max_recent_templates": 10
}
}
๐ Troubleshooting
Windows: "igntui is not recognized"
If you see 'igntui' is not recognized as an internal or external command, the Scripts directory is not in your PATH.
Quick Fix - Use Python Module:
python -m igntui
Permanent Fix - Add to PATH:
- Press
Win + Xand select "System" - Click "Advanced system settings" โ "Environment Variables"
- Under "User variables", select "Path" and click "Edit"
- Click "New" and add:
C:\Users\YOUR_USERNAME\AppData\Roaming\Python\Python3XX\Scripts - Click "OK" and restart your terminal
Or use PowerShell (as Administrator):
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
$newPath = $currentPath + ";C:\Users\$env:USERNAME\AppData\Roaming\Python\Python313\Scripts"
[Environment]::SetEnvironmentVariable("Path", $newPath, "User")
Linux/macOS: Permission Denied
If you get permission errors:
# Use --user flag
pip install --user igntui
# Or add ~/.local/bin to PATH
export PATH="$HOME/.local/bin:$PATH"
ImportError: No module named 'curses'
On Windows, install windows-curses:
pip install windows-curses
API Connection Issues
If templates won't load:
- Check internet connection
- Test API:
igntui test - Clear cache:
igntui cache --clear - Try with verbose:
igntui --verbose
๐งช Development
Setup Development Environment
# Clone repository
git clone https://github.com/MKAbuMattar/igntui.git
cd igntui
# Install dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black src/igntui
isort src/igntui
# Type checking
mypy src/igntui
Running Tests
# All tests
pytest
# With coverage
pytest --cov=igntui
# Specific test file
pytest tests/test_api.py
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐จโ๐ป Author
Mohammad Abu Mattar
- GitHub: @MKAbuMattar
- Website: MKAbuMattar.com
- Email: info@mkabumattar.com
๐ Acknowledgments
- gitignore.io - Template source
- pyfiglet - ASCII art generation
- Python curses - Terminal UI framework
๐ Statistics
- 571+ Templates - Comprehensive template library
- Smart Caching - Reduces API calls by 90%
- 3 Search Modes - Fuzzy, exact, and regex
- Multi-select - Combine unlimited templates
- Cross-platform - Windows, macOS, Linux
๐ Links
- Repository: https://github.com/MKAbuMattar/igntui
- Issue Tracker: https://github.com/MKAbuMattar/igntui/issues
- PyPI Package: https://pypi.org/project/igntui/
- Documentation: https://github.com/MKAbuMattar/igntui/wiki (coming soon)
Give it a โญ if you like it!
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 igntui-0.0.1.tar.gz.
File metadata
- Download URL: igntui-0.0.1.tar.gz
- Upload date:
- Size: 39.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4bc554084f7264ec8a6c8c4507fc44aa2887999c0bdbbb999a8a214f63a911e1
|
|
| MD5 |
933e3dc957746abd129b6c8b01bfaea7
|
|
| BLAKE2b-256 |
71e086e3646bc3db4f607eebdcb346b3fb1b3d365c011bddc8a784c59e5c0360
|
File details
Details for the file igntui-0.0.1-py3-none-any.whl.
File metadata
- Download URL: igntui-0.0.1-py3-none-any.whl
- Upload date:
- Size: 59.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dfebe1f0ab42afa42d836bf8087cfe1e5d5037b2e2f58b50bf948b3fef363e15
|
|
| MD5 |
58502d272f0e87123e49dbbf9161917f
|
|
| BLAKE2b-256 |
169a399b128dcff1e4ee04fc729cec8ebef97193436b2c391e899ac965831dd4
|