# ๐ ClipStack
> **The ultimate cross-platform clipboard manager for developers** ๐
[](https://badge.fury.io/py/clipstack)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/psf/black)
[](https://docs.pytest.org/)
**ClipStack** is a powerful, terminal-first clipboard manager that helps developers never lose their copied content again. Built with Python and designed for productivity, it provides instant access to your clipboard history with lightning-fast search and seamless cross-platform support.
## โจ Features
- ๐ **Real-time clipboard tracking** - Never lose copied content
- ๐ **Lightning-fast fuzzy search** - Find anything in your history instantly
- ๐พ **Smart storage** - JSON-based storage with duplicate prevention
- ๐จ **Beautiful terminal UI** - Rich, colorful output with timestamps
- ๐ง **Developer-friendly** - Simple CLI with intuitive commands
- ๐ **Cross-platform** - Works on macOS, Linux, and Windows
- ๐ฑ **TUI mode** - Interactive terminal interface for power users
- ๐ค **Import/Export** - Backup and restore your clipboard history
- ๐งช **Fully tested** - Comprehensive test coverage with pytest
## ๐ฏ Why ClipStack?
- **Fast**: Built with performance in mind using optimized search algorithms
- **Reliable**: Robust error handling and data persistence
- **Extensible**: Modular architecture for easy customization
- **Beautiful**: Rich terminal output that makes your terminal look professional
- **Cross-platform**: Works seamlessly across all major operating systems
## ๐ Quick Start
### Installation
```bash
# Install from PyPI (recommended)
pip install clipstack
# Or install from source
git clone https://github.com/yourusername/clipstack.git
cd clipstack
pip install -e .
```
### Basic Usage
```bash
# Save current clipboard content
clipstack add
# View your clipboard history
clipstack list
# Search for specific content
clipstack search "python code"
# Restore the last copied item
clipstack pop
# Restore a specific item by index
clipstack restore 5
# Clear your history
clipstack clear
```
## ๐ Full Command Reference
| Command | Description | Example |
|---------|-------------|---------|
| `add` | Save current clipboard content | `clipstack add` |
| `list` | Display clipboard history | `clipstack list` |
| `peek` | Show last copied item | `clipstack peek` |
| `pop` | Restore last item to clipboard | `clipstack pop` |
| `restore <index>` | Restore specific item | `clipstack restore 3` |
| `search <query>` | Fuzzy search history | `clipstack search "api key"` |
| `clear` | Clear entire history | `clipstack clear` |
| `export <file>` | Export to JSON/CSV | `clipstack export backup.json` |
| `import <file>` | Import from JSON/CSV | `clipstack import backup.json` |
| `tui` | Interactive terminal UI | `clipstack tui` |
## ๐จ Screenshots
### Main Interface
```
๐ ClipStack - Your Clipboard History
โโ Index โโ Timestamp โโโโโโโโโโโโโโโโ Preview โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 0 โ 2024-01-15 14:30:22 โ import requests; response = requests.get(url) โ
โ 1 โ 2024-01-15 14:25:15 โ https://api.github.com/users/username โ
โ 2 โ 2024-01-15 14:20:08 โ git commit -m "feat: add new feature" โ
โ 3 โ 2024-01-15 14:15:42 โ docker run -it ubuntu:latest โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
### Search Results
```
๐ Search Results for "python"
โโ Index โโ Timestamp โโโโโโโโโโโโโโโโ Preview โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 0 โ 2024-01-15 14:30:22 โ import requests; response = requests.get(url) โ
โ 5 โ 2024-01-15 13:45:10 โ def hello_world(): print("Hello, Python!") โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
## ๐ ๏ธ Configuration
ClipStack stores its configuration and history in:
- **History**: `~/.clipstack.json`
- **Config**: `~/.clipstack/config.toml`
### Customization Options
```toml
# ~/.clipstack/config.toml
[storage]
max_history = 200
storage_type = "json" # or "sqlite" (future)
[display]
max_preview_length = 80
show_timestamps = true
color_scheme = "auto"
[clipboard]
auto_track = true
track_interval = 1.0
```
## ๐งช Development
### Setting up the development environment
```bash
# Clone the repository
git clone https://github.com/yourusername/clipstack.git
cd clipstack
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
pip install -r requirements-dev.txt
# Install in development mode
pip install -e .
# Run tests
pytest
# Run linting
black .
flake8 .
```
### Project Structure
```
clipstack/
โโโ clipstack/ # Main package
โ โโโ __init__.py
โ โโโ cli.py # CLI interface
โ โโโ clipboard.py # Clipboard operations
โ โโโ storage.py # Data persistence
โ โโโ search.py # Search functionality
โ โโโ tui.py # Terminal UI
โโโ tests/ # Test suite
โโโ docs/ # Documentation
โโโ requirements.txt # Production dependencies
โโโ requirements-dev.txt # Development dependencies
โโโ setup.py # Package configuration
โโโ pyproject.toml # Modern Python packaging
โโโ README.md # This file
```
## ๐ค Contributing
We love contributions! Here's how you can help:
1. **Fork** the repository
2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)
3. **Commit** your changes (`git commit -m 'feat: add amazing feature'`)
4. **Push** to the branch (`git push origin feature/amazing-feature`)
5. **Open** a Pull Request
### Development Guidelines
- Follow [PEP 8](https://pep8.org/) style guidelines
- Write tests for new functionality
- Update documentation as needed
- Use conventional commit messages
### Areas for Contribution
- ๐ Performance improvements
- ๐จ UI/UX enhancements
- ๐ง Additional storage backends
- ๐ฑ Mobile/desktop integrations
- ๐ Internationalization
- ๐ Analytics and insights
## ๐ License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## ๐ Acknowledgments
- [Typer](https://typer.tiangolo.com/) - Modern CLI framework
- [Rich](https://rich.readthedocs.io/) - Beautiful terminal output
- [pyperclip](https://pypi.org/project/pyperclip/) - Cross-platform clipboard
- [rapidfuzz](https://github.com/maxbachmann/rapidfuzz) - Fast fuzzy search
- [Textual](https://textual.textualize.io/) - Terminal UI framework
## ๐ Project Status
- โ
**Core functionality** - Complete
- โ
**Cross-platform support** - Complete
- โ
**Testing** - Complete
- โ
**Documentation** - Complete
- ๐ **Performance optimization** - Ongoing
- ๐ **Additional features** - In development
## ๐ Star History
[](https://star-history.com/#yourusername/clipstack&Date)
---
**Made with โค๏ธ by the ClipStack community**
If you find this project useful, please consider giving it a โญ๏ธ star on GitHub!
Raw data
{
"_id": null,
"home_page": null,
"name": "clipstack",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "Your Name <your.email@example.com>",
"keywords": "clipboard, manager, terminal, cli, productivity, developer-tools",
"author": null,
"author_email": "Your Name <your.email@example.com>",
"download_url": "https://files.pythonhosted.org/packages/26/4a/97b515e2baeb4474ac89b496df37bfd56d1fd6b668eea968fc6a2bc39855/clipstack-0.1.0.tar.gz",
"platform": null,
"description": "# \ud83d\udccb ClipStack\n\n> **The ultimate cross-platform clipboard manager for developers** \ud83d\ude80\n\n[](https://badge.fury.io/py/clipstack)\n[](https://www.python.org/downloads/)\n[](https://opensource.org/licenses/MIT)\n[](https://github.com/psf/black)\n[](https://docs.pytest.org/)\n\n**ClipStack** is a powerful, terminal-first clipboard manager that helps developers never lose their copied content again. Built with Python and designed for productivity, it provides instant access to your clipboard history with lightning-fast search and seamless cross-platform support.\n\n## \u2728 Features\n\n- \ud83d\udd04 **Real-time clipboard tracking** - Never lose copied content\n- \ud83d\ude80 **Lightning-fast fuzzy search** - Find anything in your history instantly\n- \ud83d\udcbe **Smart storage** - JSON-based storage with duplicate prevention\n- \ud83c\udfa8 **Beautiful terminal UI** - Rich, colorful output with timestamps\n- \ud83d\udd27 **Developer-friendly** - Simple CLI with intuitive commands\n- \ud83c\udf0d **Cross-platform** - Works on macOS, Linux, and Windows\n- \ud83d\udcf1 **TUI mode** - Interactive terminal interface for power users\n- \ud83d\udce4 **Import/Export** - Backup and restore your clipboard history\n- \ud83e\uddea **Fully tested** - Comprehensive test coverage with pytest\n\n## \ud83c\udfaf Why ClipStack?\n\n- **Fast**: Built with performance in mind using optimized search algorithms\n- **Reliable**: Robust error handling and data persistence\n- **Extensible**: Modular architecture for easy customization\n- **Beautiful**: Rich terminal output that makes your terminal look professional\n- **Cross-platform**: Works seamlessly across all major operating systems\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\n# Install from PyPI (recommended)\npip install clipstack\n\n# Or install from source\ngit clone https://github.com/yourusername/clipstack.git\ncd clipstack\npip install -e .\n```\n\n### Basic Usage\n\n```bash\n# Save current clipboard content\nclipstack add\n\n# View your clipboard history\nclipstack list\n\n# Search for specific content\nclipstack search \"python code\"\n\n# Restore the last copied item\nclipstack pop\n\n# Restore a specific item by index\nclipstack restore 5\n\n# Clear your history\nclipstack clear\n```\n\n## \ud83d\udcd6 Full Command Reference\n\n| Command | Description | Example |\n|---------|-------------|---------|\n| `add` | Save current clipboard content | `clipstack add` |\n| `list` | Display clipboard history | `clipstack list` |\n| `peek` | Show last copied item | `clipstack peek` |\n| `pop` | Restore last item to clipboard | `clipstack pop` |\n| `restore <index>` | Restore specific item | `clipstack restore 3` |\n| `search <query>` | Fuzzy search history | `clipstack search \"api key\"` |\n| `clear` | Clear entire history | `clipstack clear` |\n| `export <file>` | Export to JSON/CSV | `clipstack export backup.json` |\n| `import <file>` | Import from JSON/CSV | `clipstack import backup.json` |\n| `tui` | Interactive terminal UI | `clipstack tui` |\n\n## \ud83c\udfa8 Screenshots\n\n### Main Interface\n```\n\ud83d\udccb ClipStack - Your Clipboard History\n\n\u250c\u2500 Index \u2500\u2500 Timestamp \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Preview \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 0 \u2502 2024-01-15 14:30:22 \u2502 import requests; response = requests.get(url) \u2502\n\u2502 1 \u2502 2024-01-15 14:25:15 \u2502 https://api.github.com/users/username \u2502\n\u2502 2 \u2502 2024-01-15 14:20:08 \u2502 git commit -m \"feat: add new feature\" \u2502\n\u2502 3 \u2502 2024-01-15 14:15:42 \u2502 docker run -it ubuntu:latest \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n### Search Results\n```\n\ud83d\udd0d Search Results for \"python\"\n\n\u250c\u2500 Index \u2500\u2500 Timestamp \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Preview \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 0 \u2502 2024-01-15 14:30:22 \u2502 import requests; response = requests.get(url) \u2502\n\u2502 5 \u2502 2024-01-15 13:45:10 \u2502 def hello_world(): print(\"Hello, Python!\") \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## \ud83d\udee0\ufe0f Configuration\n\nClipStack stores its configuration and history in:\n- **History**: `~/.clipstack.json`\n- **Config**: `~/.clipstack/config.toml`\n\n### Customization Options\n\n```toml\n# ~/.clipstack/config.toml\n[storage]\nmax_history = 200\nstorage_type = \"json\" # or \"sqlite\" (future)\n\n[display]\nmax_preview_length = 80\nshow_timestamps = true\ncolor_scheme = \"auto\"\n\n[clipboard]\nauto_track = true\ntrack_interval = 1.0\n```\n\n## \ud83e\uddea Development\n\n### Setting up the development environment\n\n```bash\n# Clone the repository\ngit clone https://github.com/yourusername/clipstack.git\ncd clipstack\n\n# Create virtual environment\npython -m venv venv\nsource venv/bin/activate # On Windows: venv\\Scripts\\activate\n\n# Install dependencies\npip install -r requirements.txt\npip install -r requirements-dev.txt\n\n# Install in development mode\npip install -e .\n\n# Run tests\npytest\n\n# Run linting\nblack .\nflake8 .\n```\n\n### Project Structure\n\n```\nclipstack/\n\u251c\u2500\u2500 clipstack/ # Main package\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 cli.py # CLI interface\n\u2502 \u251c\u2500\u2500 clipboard.py # Clipboard operations\n\u2502 \u251c\u2500\u2500 storage.py # Data persistence\n\u2502 \u251c\u2500\u2500 search.py # Search functionality\n\u2502 \u2514\u2500\u2500 tui.py # Terminal UI\n\u251c\u2500\u2500 tests/ # Test suite\n\u251c\u2500\u2500 docs/ # Documentation\n\u251c\u2500\u2500 requirements.txt # Production dependencies\n\u251c\u2500\u2500 requirements-dev.txt # Development dependencies\n\u251c\u2500\u2500 setup.py # Package configuration\n\u251c\u2500\u2500 pyproject.toml # Modern Python packaging\n\u2514\u2500\u2500 README.md # This file\n```\n\n## \ud83e\udd1d Contributing\n\nWe love contributions! Here's how you can help:\n\n1. **Fork** the repository\n2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)\n3. **Commit** your changes (`git commit -m 'feat: add amazing feature'`)\n4. **Push** to the branch (`git push origin feature/amazing-feature`)\n5. **Open** a Pull Request\n\n### Development Guidelines\n\n- Follow [PEP 8](https://pep8.org/) style guidelines\n- Write tests for new functionality\n- Update documentation as needed\n- Use conventional commit messages\n\n### Areas for Contribution\n\n- \ud83d\ude80 Performance improvements\n- \ud83c\udfa8 UI/UX enhancements\n- \ud83d\udd27 Additional storage backends\n- \ud83d\udcf1 Mobile/desktop integrations\n- \ud83c\udf0d Internationalization\n- \ud83d\udcca Analytics and insights\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- [Typer](https://typer.tiangolo.com/) - Modern CLI framework\n- [Rich](https://rich.readthedocs.io/) - Beautiful terminal output\n- [pyperclip](https://pypi.org/project/pyperclip/) - Cross-platform clipboard\n- [rapidfuzz](https://github.com/maxbachmann/rapidfuzz) - Fast fuzzy search\n- [Textual](https://textual.textualize.io/) - Terminal UI framework\n\n## \ud83d\udcca Project Status\n\n- \u2705 **Core functionality** - Complete\n- \u2705 **Cross-platform support** - Complete\n- \u2705 **Testing** - Complete\n- \u2705 **Documentation** - Complete\n- \ud83d\udd04 **Performance optimization** - Ongoing\n- \ud83d\udd04 **Additional features** - In development\n\n## \ud83c\udf1f Star History\n\n[](https://star-history.com/#yourusername/clipstack&Date)\n\n---\n\n**Made with \u2764\ufe0f by the ClipStack community**\n\nIf you find this project useful, please consider giving it a \u2b50\ufe0f star on GitHub!\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A powerful, cross-platform clipboard manager for developers",
"version": "0.1.0",
"project_urls": {
"Bug Tracker": "https://github.com/yourusername/clipstack/issues",
"Documentation": "https://github.com/yourusername/clipstack#readme",
"Homepage": "https://github.com/yourusername/clipstack",
"Release Notes": "https://github.com/yourusername/clipstack/releases",
"Repository": "https://github.com/yourusername/clipstack.git"
},
"split_keywords": [
"clipboard",
" manager",
" terminal",
" cli",
" productivity",
" developer-tools"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "7c9f2d7a535395b619b3a448a9e1979105b13e35a0c243840aeaaf4830c1e669",
"md5": "db0cfa16e8bd66b620da8cb1fb1bdd5f",
"sha256": "074cc87288762db5ae42f96accbd0fe28a83f544b8b02ad292eb9324ce9ee1ed"
},
"downloads": -1,
"filename": "clipstack-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "db0cfa16e8bd66b620da8cb1fb1bdd5f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 21149,
"upload_time": "2025-08-30T10:25:06",
"upload_time_iso_8601": "2025-08-30T10:25:06.992962Z",
"url": "https://files.pythonhosted.org/packages/7c/9f/2d7a535395b619b3a448a9e1979105b13e35a0c243840aeaaf4830c1e669/clipstack-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "264a97b515e2baeb4474ac89b496df37bfd56d1fd6b668eea968fc6a2bc39855",
"md5": "8420e7b4aa0b29aa9d501d7fb65a9e44",
"sha256": "111422436d4375278b01d6768b886d44bbf82efe1dc21084cb26a68a77145945"
},
"downloads": -1,
"filename": "clipstack-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "8420e7b4aa0b29aa9d501d7fb65a9e44",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 26019,
"upload_time": "2025-08-30T10:25:08",
"upload_time_iso_8601": "2025-08-30T10:25:08.418482Z",
"url": "https://files.pythonhosted.org/packages/26/4a/97b515e2baeb4474ac89b496df37bfd56d1fd6b668eea968fc6a2bc39855/clipstack-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-30 10:25:08",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "yourusername",
"github_project": "clipstack",
"github_not_found": true,
"lcname": "clipstack"
}