Add AI generated zliij plugin scafold
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
# Zellij Socktop Plugin
|
||||
|
||||
A Zellij plugin that displays real-time system metrics from a socktop agent.
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. **Build the plugin:**
|
||||
```bash
|
||||
cargo build --target wasm32-wasi --release
|
||||
```
|
||||
|
||||
2. **Install in Zellij:**
|
||||
```bash
|
||||
# Copy the WASM file to Zellij plugins directory
|
||||
mkdir -p ~/.config/zellij/plugins
|
||||
cp target/wasm32-wasi/release/zellij_socktop_plugin.wasm ~/.config/zellij/plugins/socktop.wasm
|
||||
cp plugin.yaml ~/.config/zellij/plugins/
|
||||
```
|
||||
|
||||
3. **Use in Zellij layout:**
|
||||
```yaml
|
||||
# ~/.config/zellij/layouts/socktop.yaml
|
||||
template:
|
||||
direction: Horizontal
|
||||
parts:
|
||||
- direction: Vertical
|
||||
borderless: true
|
||||
split_size:
|
||||
Fixed: 1
|
||||
run:
|
||||
plugin:
|
||||
location: "file:~/.config/zellij/plugins/socktop.wasm"
|
||||
configuration:
|
||||
server_url: "ws://localhost:3000/ws"
|
||||
- direction: Vertical
|
||||
```
|
||||
|
||||
4. **Launch Zellij with the layout:**
|
||||
```bash
|
||||
zellij --layout socktop
|
||||
```
|
||||
|
||||
## Plugin Features
|
||||
|
||||
- **Real-time Metrics**: Displays CPU and memory usage
|
||||
- **Auto-refresh**: Updates every 2 seconds
|
||||
- **Reconnection**: Press 'r' to reconnect to socktop agent
|
||||
- **Configurable**: Set custom server URL in plugin config
|
||||
- **Error Handling**: Shows connection status and errors
|
||||
|
||||
## Configuration Options
|
||||
|
||||
- `server_url`: WebSocket URL for socktop agent (default: `ws://localhost:3000/ws`)
|
||||
|
||||
## Controls
|
||||
|
||||
- **`r`** - Reconnect to socktop agent
|
||||
- Plugin updates automatically every 2 seconds
|
||||
|
||||
## Development Notes
|
||||
|
||||
This is a scaffold implementation. To make it fully functional:
|
||||
|
||||
1. **Async Operations**: Zellij plugins have limitations with async operations. You may need to:
|
||||
- Use a different async runtime or approach
|
||||
- Handle WebSocket connections in a background thread
|
||||
- Use message passing between threads
|
||||
|
||||
2. **Error Handling**: Add more robust error handling for:
|
||||
- Network connectivity issues
|
||||
- Invalid server URLs
|
||||
- Agent unavailability
|
||||
|
||||
3. **UI Improvements**:
|
||||
- Add more detailed metrics display
|
||||
- Implement scrolling for large datasets
|
||||
- Add color coding for status indicators
|
||||
|
||||
4. **Performance**:
|
||||
- Implement caching to reduce agent requests
|
||||
- Add configurable update intervals
|
||||
- Optimize WASM binary size
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `zellij-tile`: Zellij plugin framework
|
||||
- `socktop_connector`: WebSocket connector with WASM support
|
||||
- `serde`: JSON serialization
|
||||
- `chrono`: Time handling (WASM-compatible)
|
||||
|
||||
## Building
|
||||
|
||||
```bash
|
||||
# Add WASM target
|
||||
rustup target add wasm32-wasi
|
||||
|
||||
# Build for WASM
|
||||
cargo build --target wasm32-wasi --release
|
||||
|
||||
# The plugin will be at: target/wasm32-wasi/release/zellij_socktop_plugin.wasm
|
||||
```
|
||||
Reference in New Issue
Block a user