# pyRetroTerm
A modern terminal emulator built with PyQt6, featuring retro-themed visuals and advanced terminal capabilities.
![Screenshot](https://raw.githubusercontent.com/scottpeterman/pyretroterm/main/screenshots/slides1.gif)
![License](https://img.shields.io/badge/license-GPL--3.0-blue.svg)
![Python](https://img.shields.io/badge/python-3.8+-blue.svg)
## Features
- Retro-themed UI with customizable themes (CRT Green and Amber, Dark/Light etc)
- Multi-tabbed terminal interface
- Secure encrypted credential management
- Portable session management with YAML configuration
- ️ Split-pane interface with adjustable layouts
- SSH connectivity with full terminal emulation
- Netbox integration, export netbox devices into a local sessions YAML file
- Logicmonitor integration, export monitored devices into a local sessions YAML file
## Installation
### Via pip
```bash
pip install pyretroterm
pyretroterm
```
### From source
```bash
git clone https://github.com/scottpeterman/pyretroterm.git
cd pyretroterm
pip install -r requirements.txt
python -m pyretroterm.pyretroterm
```
## Quick Start
1. Launch the application:
```bash
pyretroterm
```
2. For console mode:
```bash
pyretroterm-con
```
3. On first launch:
- Set up a master password for credential management
- Configure your session settings (default configuration will be created)
- Choose your preferred theme
## Configuration
### Sessions
Sessions are configured via YAML files in the `sessions` directory. A default configuration will be created on first launch:
```yaml
- folder_name: Example
sessions:
- DeviceType: linux
Model: vm
SerialNumber: ''
SoftwareVersion: ''
Vendor: ubuntu
credsid: '1'
display_name: T1000
host: 10.0.0.104
port: '22'
```
### Themes
pyRetroTerm comes with several built-in themes:
- Cyberpunk (default)
- Light Mode
- Dark Mode
- Additional retro themes - green and amber
Themes can be switched via the View menu.
## Requirements
- Python 3.8 or higher
- PyQt6
- Additional dependencies listed in requirements.txt
## Security Features
- Encrypted credential storage
- Master password protection
- Secure session management
## License
This project is licensed under the GNU General Public License v3 (GPLv3) - see the [LICENSE](LICENSE) file for details.
## Author
Scott Peterman (scottpeterman@gmail.com)
## Acknowledgments
- Thanks to the PyQt6 team for the excellent GUI framework
Raw data
{
"_id": null,
"home_page": "https://github.com/scottpeterman/pyretroterm",
"name": "pyRetroTerm",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "terminal, ssh, network, automation, pyqt6",
"author": "Scott Peterman",
"author_email": "scottpeterman@gmail.com",
"download_url": null,
"platform": null,
"description": "# pyRetroTerm\r\n\r\nA modern terminal emulator built with PyQt6, featuring retro-themed visuals and advanced terminal capabilities.\r\n![Screenshot](https://raw.githubusercontent.com/scottpeterman/pyretroterm/main/screenshots/slides1.gif)\r\n![License](https://img.shields.io/badge/license-GPL--3.0-blue.svg)\r\n![Python](https://img.shields.io/badge/python-3.8+-blue.svg)\r\n\r\n## Features\r\n\r\n- Retro-themed UI with customizable themes (CRT Green and Amber, Dark/Light etc)\r\n- Multi-tabbed terminal interface\r\n- Secure encrypted credential management\r\n- Portable session management with YAML configuration\r\n- \ufe0f Split-pane interface with adjustable layouts\r\n- SSH connectivity with full terminal emulation\r\n- Netbox integration, export netbox devices into a local sessions YAML file\r\n- Logicmonitor integration, export monitored devices into a local sessions YAML file\r\n\r\n## Installation\r\n\r\n### Via pip\r\n\r\n```bash\r\npip install pyretroterm\r\npyretroterm\r\n```\r\n\r\n### From source\r\n\r\n```bash\r\ngit clone https://github.com/scottpeterman/pyretroterm.git\r\ncd pyretroterm\r\npip install -r requirements.txt\r\npython -m pyretroterm.pyretroterm\r\n```\r\n\r\n## Quick Start\r\n\r\n1. Launch the application:\r\n```bash\r\npyretroterm\r\n```\r\n\r\n2. For console mode:\r\n```bash\r\npyretroterm-con\r\n```\r\n\r\n3. On first launch:\r\n - Set up a master password for credential management\r\n - Configure your session settings (default configuration will be created)\r\n - Choose your preferred theme\r\n\r\n## Configuration\r\n\r\n### Sessions\r\n\r\nSessions are configured via YAML files in the `sessions` directory. A default configuration will be created on first launch:\r\n\r\n```yaml\r\n- folder_name: Example\r\n sessions:\r\n - DeviceType: linux\r\n Model: vm \r\n SerialNumber: ''\r\n SoftwareVersion: ''\r\n Vendor: ubuntu\r\n credsid: '1'\r\n display_name: T1000\r\n host: 10.0.0.104\r\n port: '22'\r\n```\r\n\r\n### Themes\r\n\r\npyRetroTerm comes with several built-in themes:\r\n- Cyberpunk (default)\r\n- Light Mode\r\n- Dark Mode\r\n- Additional retro themes - green and amber\r\n\r\nThemes can be switched via the View menu.\r\n\r\n## Requirements\r\n\r\n- Python 3.8 or higher\r\n- PyQt6\r\n- Additional dependencies listed in requirements.txt\r\n\r\n## Security Features\r\n\r\n- Encrypted credential storage\r\n- Master password protection\r\n- Secure session management\r\n\r\n\r\n## License\r\n\r\nThis project is licensed under the GNU General Public License v3 (GPLv3) - see the [LICENSE](LICENSE) file for details.\r\n\r\n## Author\r\n\r\nScott Peterman (scottpeterman@gmail.com)\r\n\r\n## Acknowledgments\r\n\r\n- Thanks to the PyQt6 team for the excellent GUI framework\r\n",
"bugtrack_url": null,
"license": null,
"summary": "pyRetroTerm - A PyQt6 Tabbed Terminal Emulator with Retro themes",
"version": "0.1.6",
"project_urls": {
"Homepage": "https://github.com/scottpeterman/pyretroterm"
},
"split_keywords": [
"terminal",
" ssh",
" network",
" automation",
" pyqt6"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "7aa56dec74fcbcdf4adc2820ee5ebed4312a86a5af8114c85aeee28df0f0899b",
"md5": "5fad274d856ba8c886dce18e3b5949d8",
"sha256": "fa03f3ce080feb08577134feaa9d39ad54a5219546e942de5f31739a97feebff"
},
"downloads": -1,
"filename": "pyRetroTerm-0.1.6-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5fad274d856ba8c886dce18e3b5949d8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 32238594,
"upload_time": "2025-01-23T16:29:20",
"upload_time_iso_8601": "2025-01-23T16:29:20.411545Z",
"url": "https://files.pythonhosted.org/packages/7a/a5/6dec74fcbcdf4adc2820ee5ebed4312a86a5af8114c85aeee28df0f0899b/pyRetroTerm-0.1.6-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-23 16:29:20",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "scottpeterman",
"github_project": "pyretroterm",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "backports.tarfile",
"specs": [
[
">=",
"1.2.0"
]
]
},
{
"name": "bcrypt",
"specs": [
[
">=",
"4.2.1"
]
]
},
{
"name": "certifi",
"specs": [
[
">=",
"2024.12.14"
]
]
},
{
"name": "cffi",
"specs": [
[
">=",
"1.17.1"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
">=",
"3.4.1"
]
]
},
{
"name": "click",
"specs": [
[
">=",
"8.1.8"
]
]
},
{
"name": "colorama",
"specs": [
[
">=",
"0.4.6"
]
]
},
{
"name": "cryptography",
"specs": [
[
">=",
"44.0.0"
]
]
},
{
"name": "docutils",
"specs": [
[
">=",
"0.21.2"
]
]
},
{
"name": "idna",
"specs": [
[
">=",
"3.10"
]
]
},
{
"name": "importlib_metadata",
"specs": [
[
">=",
"8.5.0"
]
]
},
{
"name": "jaraco.classes",
"specs": [
[
">=",
"3.4.0"
]
]
},
{
"name": "jaraco.context",
"specs": [
[
">=",
"6.0.1"
]
]
},
{
"name": "jaraco.functools",
"specs": [
[
">=",
"4.1.0"
]
]
},
{
"name": "keyring",
"specs": [
[
">=",
"25.6.0"
]
]
},
{
"name": "logicmonitor-sdk",
"specs": [
[
">=",
"3.0.222"
]
]
},
{
"name": "markdown-it-py",
"specs": [
[
">=",
"3.0.0"
]
]
},
{
"name": "mdurl",
"specs": [
[
">=",
"0.1.2"
]
]
},
{
"name": "more-itertools",
"specs": [
[
">=",
"10.6.0"
]
]
},
{
"name": "nh3",
"specs": [
[
">=",
"0.2.20"
]
]
},
{
"name": "packaging",
"specs": [
[
">=",
"24.2"
]
]
},
{
"name": "paramiko",
"specs": [
[
">=",
"3.5.0"
]
]
},
{
"name": "pkginfo",
"specs": [
[
">=",
"1.12.0"
]
]
},
{
"name": "pycparser",
"specs": [
[
">=",
"2.22"
]
]
},
{
"name": "Pygments",
"specs": [
[
">=",
"2.19.1"
]
]
},
{
"name": "PyNaCl",
"specs": [
[
">=",
"1.5.0"
]
]
},
{
"name": "pynetbox",
"specs": [
[
">=",
"7.4.1"
]
]
},
{
"name": "PyQt6",
"specs": [
[
">=",
"6.8.0"
]
]
},
{
"name": "PyQt6-Charts",
"specs": [
[
">=",
"6.8.0"
]
]
},
{
"name": "PyQt6-Charts-Qt6",
"specs": [
[
">=",
"6.8.1"
]
]
},
{
"name": "PyQt6-Qt6",
"specs": [
[
">=",
"6.8.1"
]
]
},
{
"name": "PyQt6-WebEngine",
"specs": [
[
">=",
"6.8.0"
]
]
},
{
"name": "PyQt6-WebEngine-Qt6",
"specs": [
[
">=",
"6.8.1"
]
]
},
{
"name": "PyQt6_sip",
"specs": [
[
">=",
"13.9.1"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
">=",
"2.9.0.post0"
]
]
},
{
"name": "pywin32-ctypes",
"specs": [
[
">=",
"0.2.3"
]
]
},
{
"name": "PyYAML",
"specs": [
[
">=",
"6.0.2"
]
]
},
{
"name": "readme_renderer",
"specs": [
[
">=",
"44.0"
]
]
},
{
"name": "requests",
"specs": [
[
">=",
"2.32.3"
]
]
},
{
"name": "requests-toolbelt",
"specs": [
[
">=",
"1.0.0"
]
]
},
{
"name": "rfc3986",
"specs": [
[
">=",
"2.0.0"
]
]
},
{
"name": "rich",
"specs": [
[
">=",
"13.9.4"
]
]
},
{
"name": "six",
"specs": [
[
">=",
"1.17.0"
]
]
},
{
"name": "twine",
"specs": [
[
">=",
"6.0.1"
]
]
},
{
"name": "typing_extensions",
"specs": [
[
">=",
"4.12.2"
]
]
},
{
"name": "urllib3",
"specs": [
[
">=",
"2.3.0"
]
]
},
{
"name": "zipp",
"specs": [
[
">=",
"3.21.0"
]
]
}
],
"lcname": "pyretroterm"
}