Metadata-Version: 2.4
Name: ros2-term
Version: 0.1.1
Summary: A terminal UI for inspecting ROS2 topics and nodes
Project-URL: Homepage, https://github.com/bigdiehl/ros2-term
Project-URL: Repository, https://github.com/bigdiehl/ros2-term
Project-URL: Issues, https://github.com/bigdiehl/ros2-term/issues
Author-email: Spencer Diehl <docdiehl@gmail.com>
License: MIT
License-File: LICENSE
Keywords: robotics,ros2,terminal,tui
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Requires-Dist: numpy<2.0
Requires-Dist: pyyaml>=6.0.3
Requires-Dist: textual>=8.2.3
Provides-Extra: dev
Requires-Dist: black; extra == 'dev'
Requires-Dist: isort; extra == 'dev'
Requires-Dist: mypy; extra == 'dev'
Description-Content-Type: text/markdown

# ROS2 Explorer TUI

A Terminal User Interface (TUI) app for exploring ROS2 nodes, topics, services, actions, and message types.

## Requirements

- ROS2 Humble, Iron, or Jazzy already installed on system
- pipx (`sudo apt install pipx`)

## Installation

Source your ROS2 installation first, then install with pipx:

    source /opt/ros/humble/setup.bash   # or iron, jazzy, etc.
    pipx install ros2-term

Then run:

    ros2-term

**Note:** ROS2 must be sourced in any shell where you run `ros2-term`.

### Command Line Options

    ros2-term [--profile NAME] [--continue] [--refresh-rate SECONDS]

- `--profile NAME` - Load specific profile on startup
- `--continue` - Resume last used profile
- `--refresh-rate SECONDS` - Set refresh interval (default: 2.0)
- `--help` - Show available profiles and config location


## Troubleshooting

If you have multiple Python versions installed and see import errors related
to ROS2 packages, force pipx to use the system Python explicitly:

    pipx install ros2-term --python $(which python3)

## Features

- Tree views for nodes/topics with expandable details
- **Topic watching** (`w`) with spinning propeller showing publish rate
- **Topic inspection**: Hz (`h`), echo (`e`), sample (`s`)
- **Profile system**: Auto-save/load watched topics and views
- Clickable links between entities (node → topic → type)
- History navigation (`b`/`f`)
- Search with regex support
- Native `rclpy` integration (no subprocess overhead)

## Key Components

- `ros2_client.py` - Native `rclpy` integration with background executor
- `topic_watcher.py` - Hz tracking and propeller animation
- `config.py` - Profile persistence
- `widgets.py` - In-place tree updates (no flicker)

### Keyboard Shortcuts

| Key | Action | Visible in Footer |
|-----|--------|-------------------|
| `?` | Show help screen | ✓ |
| `w` | Watch/unwatch topic | ✓ |
| `h` | Show Hz for topic | ✓ |
| `e` | Echo topic (continuous) | ✓ |
| `s` | Sample topic (single msg) | ✓ |
| `a` | Toggle array visibility | ✓ |
| `r` | Reload current view | ✓ |
| `b` | Navigate back in history | |
| `f` | Navigate forward in history | |
| `v` | Toggle verbose mode | |
| `c` | Collapse all tree nodes | |
| `p` | Save profile | |
| `1` | View nodes | |
| `2` | View topics | |
| `3` | View services | |
| `4` | View actions | |
| `5` | View message types | |
| `q` | Quit | |

### Navigation

- Arrow keys navigate tree, Enter expands/collapses
- Click entity names in info panel to navigate
- `b`/`f` for history navigation
- Tree state preserved when switching views
