{"id":36953296,"url":"https://github.com/verseles/crossbar","last_synced_at":"2026-02-15T21:05:13.732Z","repository":{"id":327692771,"uuid":"1107286786","full_name":"verseles/crossbar","owner":"verseles","description":"Universal Plugin System for Taskbar/Menu Bar - Write Once, Run Everywhere","archived":false,"fork":false,"pushed_at":"2026-02-07T05:21:54.000Z","size":6478,"stargazers_count":4,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-07T15:54:43.446Z","etag":null,"topics":["argos","bitbar","dart","flutter"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/verseles.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.feat013-tray-icons.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-11-30T23:13:05.000Z","updated_at":"2026-02-07T05:21:57.000Z","dependencies_parsed_at":"2025-12-08T13:04:46.789Z","dependency_job_id":null,"html_url":"https://github.com/verseles/crossbar","commit_stats":null,"previous_names":["verseles/crossbar"],"tags_count":27,"template":false,"template_full_name":null,"purl":"pkg:github/verseles/crossbar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verseles%2Fcrossbar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verseles%2Fcrossbar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verseles%2Fcrossbar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verseles%2Fcrossbar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/verseles","download_url":"https://codeload.github.com/verseles/crossbar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verseles%2Fcrossbar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29489380,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T19:29:10.908Z","status":"ssl_error","status_checked_at":"2026-02-15T19:29:10.419Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["argos","bitbar","dart","flutter"],"created_at":"2026-01-13T12:39:37.509Z","updated_at":"2026-02-15T21:05:13.712Z","avatar_url":"https://github.com/verseles.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Crossbar\n\n\u003e **Universal Plugin System for Taskbar/Menu Bar** - Write Once, Run Everywhere\n\n[![CI](https://github.com/verseles/crossbar/actions/workflows/ci.yml/badge.svg)](https://github.com/verseles/crossbar/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/verseles/crossbar/branch/main/graph/badge.svg)](https://codecov.io/gh/verseles/crossbar)\n[![License](https://img.shields.io/badge/license-AGPLv3-blue.svg)](LICENSE)\n[![Flutter](https://img.shields.io/badge/Flutter-3.38.3+-02569B?logo=flutter)](https://flutter.dev)\n[![Dart](https://img.shields.io/badge/Dart-3.10.0+-0175C2?logo=dart)](https://dart.dev)\n[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows%20%7C%20Android%20%7C%20iOS-lightgrey)](#supported-platforms)\n\nCrossbar is a revolutionary cross-platform plugin system inspired by [BitBar](https://github.com/matryer/xbar) (macOS) and [Argos](https://github.com/p-e-w/argos) (Linux), bringing the power of scriptable status bar widgets to **all platforms** - desktop and mobile.\n\n```lua\n-- cpu.10s.lua — Works on ALL platforms (Linux, macOS, Windows, Android, iOS)\nlocal cpu = crossbar.cpu()\nlocal color = cpu \u003e= 80 and 'red' or cpu \u003e= 60 and 'yellow' or 'green'\n\nprint('⚡ ' .. math.floor(cpu + 0.5) .. '% | color=' .. color)\nprint('---')\nprint('Usage: ' .. string.format('%.1f%%', cpu))\nprint('Platform: ' .. crossbar.platform())\nprint('Refresh | refresh=true')\n```\n\n## ✨ Features\n\n### 🚀 Core Capabilities\n\n- **🌍 True Cross-Platform**: One plugin, five target platforms (Linux, macOS, Windows, Android, iOS)\n- **🌙 Lua-First Plugins**: 25 sample plugins in Lua run on all platforms via embedded interpreter. Also supports Bash, Python, Node.js, Dart, Go, Rust, YAML\n- **⚡ Hot Reload**: Automatic plugin detection and reload (\u003c1s)\n- **🎨 Adaptive Rendering**: Same plugin renders as tray icon, notification, or widget\n- **🔒 Secure Storage**: Passwords stored in system Keychain/KeyStore\n- **🌐 76+ CLI Commands**: Unified API for system info, network, media, clipboard, QR codes, and more\n\n### 🎯 Revolutionary Advantages Over BitBar/Argos\n\n| Feature        | BitBar/Argos                        | Crossbar                                                                         |\n| -------------- | ----------------------------------- | -------------------------------------------------------------------------------- |\n| Platforms      | macOS/Linux only                    | Linux + Windows + macOS + Android + iOS                                          |\n| Output Formats | Text only                           | Text + JSON + Structured Data                                                    |\n| UI Targets     | Menu bar only                       | Tray + Notifications + Widgets + Menu bar                                        |\n| CLI API        | None (scripts call system commands) | 76+ unified commands (`crossbar cpu`)                                            |\n| Configuration  | Manual scripting                    | Declarative JSON with auto-generated UI                                          |\n| Mobile Support | ❌ None                             | ✅ Widgets + Persistent Notifications (Android) + Home/Lock Screen Widgets (iOS) |\n| Controls       | Read-only                           | Bidirectional (volume, media, system)                                            |\n| Hot Reload     | Manual refresh                      | Automatic file watching                                                          |\n\n### 📱 Platform-Specific Features\n\n#### Desktop (Linux/macOS/Windows)\n\n- System tray integration with custom icons\n- Menu bar dropdown with unlimited items\n- Window management and theming\n- **Tray Display Mode** (Settings → System Tray):\n  - _Unified_: Single tray icon with menu for all plugins (default)\n  - _Separate_: One tray icon per plugin (Linux only, coming soon)\n  - _Smart Collapse/Overflow_: Automatic modes (coming soon)\n\n#### Mobile (Android/iOS)\n\n- Home screen widgets (1x1, 2x2, 4x4 layouts)\n- Persistent notifications (Android foreground service)\n- Lock screen widgets (iOS)\n\n## 🚀 Quick Start\n\n### Installation\n\n#### 1. One-Line Install\n\n**Linux / macOS:**\n\n```bash\ncurl -fsSL https://install.cat/verseles/crossbar | sh\n```\n\n**Windows (PowerShell):**\n\n```powershell\nirm https://install.cat/verseles/crossbar?format=ps1 | iex\n```\n\nOn Linux this installs Crossbar to `~/.local/share/crossbar` with a symlink at `~/.local/bin/crossbar`.  \nOn macOS this installs `Crossbar.app` to `~/Applications/Crossbar.app` and creates `~/.local/bin/crossbar`.  \nOn Windows this installs Crossbar to `%LOCALAPPDATA%\\Crossbar` and adds this path to user `PATH`.\n\n#### 2. Download Pre-built Binaries\n\nDownload the latest release from [GitHub Releases](https://github.com/verseles/crossbar/releases):\n\n- **Linux**: `crossbar-linux-x64.tar.gz`\n- **macOS**: `crossbar-macos-arm64.tar.gz`\n- **Windows**: `crossbar-windows-x64.zip`\n- **Android**: `crossbar-android-arm64.apk`\n\n**Linux manual install:**\n\n```bash\nmkdir -p ~/.local/share/crossbar\ntar -xzf crossbar-linux-x64.tar.gz -C ~/.local/share/crossbar\nln -sf ~/.local/share/crossbar/crossbar ~/.local/bin/crossbar\n```\n\n**macOS manual install:**\n\n```bash\nmkdir -p ~/Applications\ntar -xzf crossbar-macos-arm64.tar.gz -C /tmp\nmv /tmp/crossbar.app ~/Applications/Crossbar.app\nln -sf ~/Applications/Crossbar.app/Contents/MacOS/crossbar ~/.local/bin/crossbar\n```\n\n**Windows manual install (PowerShell):**\n\n```powershell\nExpand-Archive .\\crossbar-windows-x64.zip -DestinationPath \"$env:LOCALAPPDATA\\Crossbar\" -Force\n[Environment]::SetEnvironmentVariable(\"Path\", \"$([Environment]::GetEnvironmentVariable('Path','User'));$env:LOCALAPPDATA\\Crossbar\", \"User\")\n```\n\n**Usage:**\n\n```bash\ncrossbar              # Launch (Start in Tray)\ncrossbar gui          # Launch GUI (Open Window)\ncrossbar --help       # Show CLI commands\ncrossbar cpu          # Example CLI usage\n```\n\n#### 3. Build from Source (Contributors)\n\n**Prerequisites:**\n\n- Flutter 3.38.3+ ([Install Flutter](https://docs.flutter.dev/get-started/install))\n- Dart 3.10.0+ (comes with Flutter)\n- `make` (optional, for easier build commands)\n\n```bash\ngit clone https://github.com/verseles/crossbar.git\ncd crossbar\nflutter pub get\nmake linux   # or make macos, make windows\n```\n\n### Your First Plugin\n\n1. Create a plugin file in `~/.crossbar/plugins/` (plugins can be files in the root or inside subdirectories):\n\n```lua\n-- ~/.crossbar/plugins/hello.10s.lua\nprint('👋 Hello Crossbar!')\nprint('---')\nprint('Platform: ' .. crossbar.platform())\nprint('Uptime: ' .. crossbar.uptime())\nprint('Refresh | refresh=true')\n```\n\n2. The plugin will auto-refresh every 10 seconds (from filename `*.10s.lua`)\n\n\u003e **Tip**: Lua plugins work on **all platforms** (Linux, macOS, Windows, Android, iOS) without external dependencies. For desktop-only scripts, you can also use `.sh`, `.py`, `.js`, etc.\n\n## 📖 Documentation\n\n### Plugin Types\n\nCrossbar supports multiple plugin types for different use cases:\n\n| Type                 | Extension           | Platforms | Use Case                                |\n| -------------------- | ------------------- | --------- | --------------------------------------- |\n| **Lua** ⭐           | `.lua`              | All ✅    | Recommended — embedded, fast, sandboxed |\n| **YAML**             | `.yaml`             | All ✅    | Simple data display, no code needed     |\n| **Dart Interpreted** | `.dart`             | All ✅    | Logic without external packages         |\n| **Script**           | `.sh`, `.py`, `.js` | Desktop   | Existing scripts, shell commands        |\n| **Dart Compiled**    | `.dart.exe`         | Desktop   | Full Dart with any package              |\n\n**Quick Examples:**\n\n```yaml\n# YAML Plugin - weather.30m.yaml\nname: Weather\nsource:\n  type: http\n  url: \"https://api.example.com/weather\"\noutput:\n  text: \"🌡️ ${response.temp}°C\"\n```\n\n```dart\n// Dart Plugin - clock.1s.dart\nimport 'package:crossbar_bridge/crossbar_bridge.dart';\n\nvoid main() {\n  final crossbar = CrossbarBridge();\n  print('⏰ ${crossbar.time()}');\n}\n```\n\n📖 **Detailed Guides:**\n\n- [Codebase Architecture Guide](CODEBASE.md) - **Start here for developers!**\n- [Plugin Types Overview](docs/plugin-types.md)\n- [YAML Plugins](docs/yaml-plugins.md)\n- [Dart Plugins](docs/dart-plugins.md)\n- [Writing Portable Plugins](docs/writing-portable-plugins.md)\n- [crossbar_api Package](packages/crossbar_api/README.md)\n\n### Plugin Format\n\nCrossbar supports **two output formats**:\n\n#### 1. BitBar Text Format (Legacy Compatible)\n\n```bash\n#!/bin/bash\necho \"🔋 85%\"          # Tray text (first line)\necho \"---\"             # Separator\necho \"Status | color=green\"\necho \"Details | bash='crossbar battery --json'\"\n```\n\n**Attributes**:\n\n- `color=red|blue|#FF0000` - Text color\n- `bash='command'` - Execute on click\n- `refresh=true` - Refresh all plugins on click\n- `href='https://url'` - Open URL on click\n- `font=Monaco` - Custom font\n- `size=12` - Font size\n\n#### 2. JSON Format (Recommended)\n\n```python\n#!/usr/bin/env python3\nimport json\nprint(json.dumps({\n    \"icon\": \"🔋\",\n    \"text\": \"85%\",\n    \"tooltip\": \"Battery Level\",\n    \"color\": \"#00FF00\",\n    \"menu\": [\n        {\"text\": \"Show Details\", \"bash\": \"crossbar battery --json\"},\n        {\"text\": \"---\"},  # Separator\n        {\"text\": \"Settings\", \"href\": \"https://settings\"}\n    ]\n}))\n```\n\n### CLI API Reference\n\nCrossbar provides 76+ unified commands accessible via `crossbar [command]`.\n\n#### System Information\n\n```bash\ncrossbar cpu                # CPU usage (0-100)\ncrossbar memory             # Memory usage (e.g., \"8.2/16 GB\")\ncrossbar battery            # Battery status\ncrossbar disk               # Disk usage\ncrossbar uptime             # System uptime\ncrossbar hostname           # Machine hostname\ncrossbar username           # Current user\ncrossbar kernel             # Kernel version\ncrossbar arch               # Architecture (x64, arm64)\ncrossbar os                 # Operating system\n```\n\n#### Network\n\n```bash\ncrossbar net status         # \"online\" | \"offline\" | \"wifi\"\ncrossbar net ip             # Local IP address\ncrossbar net ip --public    # Public IP (via ipify.org)\ncrossbar net ping google.com # Ping latency\ncrossbar wifi status        # WiFi status\ncrossbar wifi ssid          # WiFi network name\ncrossbar bluetooth status   # \"on\" | \"off\"\ncrossbar vpn status         # VPN status\n```\n\n#### Device \u0026 Hardware\n\n```bash\ncrossbar screen size        # Screen resolution\ncrossbar screen brightness  # Get brightness\ncrossbar power sleep        # Suspend system\ncrossbar wallpaper          # Get current wallpaper path\n```\n\n#### Audio \u0026 Media\n\n```bash\ncrossbar audio volume             # Current volume (0-100)\ncrossbar audio volume 50          # Set volume\ncrossbar audio mute               # Toggle mute\ncrossbar media playing --json     # Current media info\ncrossbar media play               # Resume playback\ncrossbar media pause\ncrossbar media next\ncrossbar media prev\n```\n\n#### Clipboard\n\n```bash\ncrossbar clipboard                # Get clipboard text\ncrossbar clipboard \"text\"         # Copy to clipboard\n```\n\n#### File Operations\n\n```bash\ncrossbar file exists /path/file\ncrossbar file read /path/file\ncrossbar file size /path/file\ncrossbar dir list /path/dir\n```\n\n#### Time \u0026 Utilities\n\n```bash\ncrossbar time [12h|24h]\ncrossbar date\ncrossbar uuid                     # Generate UUID\ncrossbar random [min] [max]\ncrossbar hash \"text\"\ncrossbar base64 encode \"text\"\ncrossbar base64 decode \"dGV4dA==\"\ncrossbar exec \"command\"           # Execute shell command\ncrossbar notify \"Title\" \"Msg\"     # Send notification\ncrossbar open url \"https://...\"   # Open URL\ncrossbar open file \"/path/...\"    # Open file\n```\n\n**See full API**: [original_plan_specs.md](original_plan_specs.md#3-cli-api-unificada)\n\n### Plugin Configuration\n\nPlugins can declare their configuration needs:\n\n```json\n// ~/.crossbar/plugins/weather.30m.py.schema.json\n{\n  \"name\": \"Weather Plugin\",\n  \"description\": \"Shows current weather\",\n  \"version\": \"1.0.0\",\n  \"settings\": [\n    {\n      \"key\": \"API_KEY\",\n      \"type\": \"password\",\n      \"label\": \"OpenWeather API Key\",\n      \"required\": true\n    },\n    {\n      \"key\": \"LOCATION\",\n      \"type\": \"text\",\n      \"label\": \"City Name\",\n      \"default\": \"São Paulo\"\n    },\n    {\n      \"key\": \"UNITS\",\n      \"type\": \"select\",\n      \"label\": \"Temperature Units\",\n      \"options\": [\n        { \"value\": \"metric\", \"label\": \"Celsius\" },\n        { \"value\": \"imperial\", \"label\": \"Fahrenheit\" }\n      ],\n      \"default\": \"metric\"\n    },\n    {\n      \"key\": \"ALERT_AT\",\n      \"type\": \"datetime\",\n      \"label\": \"Alert datetime\",\n      \"default\": \"2026-12-31T23:59:59+00:00\"\n    }\n  ]\n}\n```\n\nCrossbar automatically generates a configuration dialog with proper UI controls.\nTipos com suporte direto na UI hoje:\n`text`, `password`, `number`, `select`, `checkbox`, `color`, `file`, `path`,\n`url`, `textarea`, `slider`, `date`, `time`, `datetime`.\n\n### Environment Variables\n\nEvery plugin receives these variables:\n\n```bash\nCROSSBAR_OS=linux              # Platform (linux/macos/windows/android/ios)\nCROSSBAR_DARK_MODE=true        # System theme\nCROSSBAR_VERSION=1.0.0         # Crossbar version\nCROSSBAR_PLUGIN_ID=cpu.10s.sh  # Plugin filename\n\n# User configs (from .schema.json)\nWEATHER_API_KEY=abc123         # Passwords from Keychain\nWEATHER_LOCATION=São Paulo\nWEATHER_UNITS=metric\n```\n\n### Detailed Documentation\n\nFor comprehensive documentation, see:\n\n- **[API Reference](docs/api-reference.md)** - Complete CLI command documentation (~75 commands)\n- **[Plugin Development Guide](docs/plugin-development.md)** - Lua-first development guide with multi-language support\n- **[Configuration Schema](docs/config-schema.md)** - Field types and validation reference\n- **[Security Policy](SECURITY.md)** - Vulnerability reporting and security considerations\n\n## 📦 Example Plugins\n\nCrossbar includes **25 Lua sample plugins** that run on **all platforms** via the embedded Lua interpreter:\n\n### System Monitoring\n\n- `cpu.10s.lua` - CPU usage with color coding\n- `memory.10s.lua` - RAM usage visualization\n- `battery.2s.lua` - Battery status with dynamic icons\n- `disk.5m.lua` - Disk space monitor\n- `uptime.1m.lua` - System uptime\n- `system-info.1m.lua` - Comprehensive system info\n- `process-monitor.10s.lua` - Top CPU processes\n\n### Time \u0026 Clocks\n\n- `clock.1s.lua` - Current time display\n- `time.1s.lua` - Time with day phase icon\n- `emoji-clock.1m.lua` - Time as emoji clock faces\n- `world-clock.1m.lua` - Multi-timezone clocks\n- `countdown.1s.lua` - Event countdown timer\n- `pomodoro.1s.lua` - Pomodoro technique timer\n\n### Network \u0026 Web\n\n- `weather.30m.lua` - Weather from OpenWeatherMap API\n- `ip-info.1h.lua` - Public IP and geolocation\n- `site-check.1m.lua` - Website uptime checker\n- `network.30s.lua` - Network interface status\n\n### Development\n\n- `git-status.30s.lua` - Git repository status\n- `npm-downloads.1h.lua` - NPM package stats\n- `github-notifications.5m.lua` - GitHub notification count\n- `spotify.5s.lua` - Now playing on Spotify\n- `ssh-connections.30s.lua` - Active SSH connections\n\n### Productivity \u0026 Fun\n\n- `todo.1m.lua` - Simple todo list\n- `quotes.1h.lua` - Random inspirational quotes\n- `bitcoin.5m.lua` - BTC price from CoinGecko\n\n\u003e **Note**: Users can still write plugins in Bash, Python, Node.js, Dart, Go, Rust, or YAML. Lua is the recommended default for cross-platform compatibility.\n\n## 🏗️ Architecture\n\n```\ncrossbar/\n├── lib/\n│   ├── core/                   # Core plugin system (Flutter)\n│   │   ├── plugin_manager.dart       # Discovery \u0026 lifecycle\n│   │   ├── script_runner.dart        # Execution engine\n│   │   ├── output_parser.dart        # BitBar/JSON parser\n│   │   └── api/                      # CLI commands\n│   ├── models/                 # Data models\n│   ├── services/               # Background services\n│   │   ├── scheduler_service.dart    # Auto-refresh triggers\n│   │   ├── refresh_service.dart      # Unified refresh engine\n│   │   ├── tray_service.dart         # System tray\n│   │   ├── hot_reload_service.dart   # File watcher\n│   │   ├── marketplace_service.dart  # Plugin discovery\n│   │   ├── logger_service.dart       # Rotating logs\n│   │   ├── ipc_server.dart           # Inter-process communication\n│   │   ├── notification_service.dart # Cross-platform notifications\n│   │   ├── settings_service.dart     # User settings management\n│   │   └── widget_service.dart       # Home screen widget updates\n│   ├── ui/                     # User interface\n│   └── l10n/                   # 10 languages\n├── packages/                   # Monorepo packages\n│   ├── crossbar_core/                # Pure Dart shared APIs \u0026 models\n│   │   └── lib/src/\n│   │       ├── core/                 # Shared core utilities\n│   │       ├── models/               # Plugin, Config models\n│   │       └── api/                  # System, Network, Media APIs\n│   └── crossbar_cli/                 # Pure Dart CLI package\n│       ├── bin/crossbar.dart         # CLI entry point\n│       └── lib/src/\n│           ├── core/                 # CLI-specific plugin manager\n│           └── commands/             # 76+ CLI command handlers\n├── plugins/                    # Example plugins\n├── test/                       # 116 tests (\u003e90% coverage)\n└── .github/workflows/          # CI/CD pipelines\n```\n\n## 🧪 Testing\n\n```bash\n# Run all tests\nflutter test\n\n# Run with coverage\nflutter test --coverage\ngenhtml coverage/lcov.info -o coverage/html\nopen coverage/html/index.html\n\n# Analyze code\nflutter analyze\n```\n\n**Current stats**:\n\n- 676 tests passing (individual test cases)\n- 40.7% code coverage (Target: 60%)\n- 0 analysis errors\n\n## 🔧 Development\n\n### Project Structure\n\n- **Core**: Plugin discovery, execution, parsing\n- **Services**: Background tasks, system integration\n- **UI**: Flutter Material Design 3 interface\n- **CLI**: Dart-based command-line API\n\n### Key Technologies\n\n- **Flutter 3.35+** - Cross-platform framework\n- **Dart 3.10+** - Type-safe language\n- **tray_manager** - System tray integration\n- **dio** - HTTP client for API calls\n- **flutter_local_notifications** - Push notifications\n- **home_widget** - Home screen widgets\n- **flutter_secure_storage** - Keychain integration\n\n### Adding a New CLI Command\n\n1. Add API method in `lib/core/api/`:\n\n```dart\n// lib/core/api/system_api.dart\nFuture\u003cString\u003e getHostname() async {\n  final result = await Process.run('hostname', []);\n  return result.stdout.toString().trim();\n}\n```\n\n2. Add CLI handler in `lib/cli/cli_handler.dart` (in the switch statement):\n\n```dart\ncase 'hostname':\n  print(Platform.localHostname);\n```\n\nNote: The main executable (`crossbar`) automatically supports both GUI (no args) and CLI (with args) modes.\n\n3. Add tests in `test/unit/core/api/system_api_test.dart`\n\n## 🌐 Internationalization\n\nCrossbar supports **13 languages**:\n\n- 🇺🇸 English (en)\n- 🇧🇷 Portuguese (pt)\n- 🇪🇸 Spanish (es)\n- 🇩🇪 German (de)\n- 🇫🇷 French (fr)\n- 🇨🇳 Chinese (zh)\n- 🇯🇵 Japanese (ja)\n- 🇰🇷 Korean (ko)\n- 🇮🇹 Italian (it)\n- 🇷🇺 Russian (ru)\n- 🇸🇦 Arabic (ar)\n- 🇧🇩 Bengali (bn)\n- 🇮🇳 Hindi (hi)\n\nLocale is auto-detected from system settings.\n\n## 📊 Performance\n\n| Metric                    | Target | Actual    |\n| ------------------------- | ------ | --------- |\n| Boot Time (desktop)       | \u003c2s    | ✅ ~1.5s  |\n| Memory (idle, 3 plugins)  | \u003c150MB | ✅ ~120MB |\n| Plugin Execution Overhead | \u003c50ms  | ✅ ~30ms  |\n| Hot Reload                | \u003c1s    | ✅ ~500ms |\n| Binary Size (Linux)       | \u003c50MB  | ✅ 41MB   |\n\n## 🤝 Contributing\n\nContributions are welcome! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n### Ways to Contribute\n\n- 🐛 Report bugs via [GitHub Issues](https://github.com/verseles/crossbar/issues)\n- 💡 Suggest features\n- 📝 Improve documentation\n- 🔌 Create and share plugins\n- 🌐 Add translations\n- 🧪 Write tests\n\n## 📄 License\n\nThis project is licensed under the **GNU Affero General Public License v3.0 (AGPLv3)**.\n\nThis ensures that:\n\n- ✅ You can use, modify, and distribute the software\n- ✅ All derivatives must remain open source\n- ✅ SaaS deployments must share source code (network copyleft)\n- ✅ Community improvements benefit everyone\n\nSee [LICENSE](LICENSE) for full terms.\n\n## 🙏 Acknowledgments\n\nInspired by:\n\n- [BitBar](https://github.com/matryer/xbar) by Mat Ryer\n- [Argos](https://github.com/p-e-w/argos) by Philipp Emanuel Weidmann\n\nBuilt with:\n\n- [Flutter](https://flutter.dev) - Google's UI toolkit\n- [Dart](https://dart.dev) - Client-optimized language\n\n## 📞 Support\n\n- 📖 [Documentation](docs/)\n- 🐛 [Issue Tracker](https://github.com/verseles/crossbar/issues)\n- 💬 [Discussions](https://github.com/verseles/crossbar/discussions)\n- 📧 Email: support@crossbar.dev (coming soon)\n\n### 🗺️ Roadmap\n\n\u003e **Full roadmap**: See [ROADMAP.md](ROADMAP.md) for detailed timeline, completed features, and technical debt tracking.\n\n### ✅ v1.4.0 (Current - 2025)\n\n**Mobile Mastery \u0026 Configuration Engine**\n\n- **Configuration Engine**: JSON schema support, secure storage (Keychain), and UI generation.\n- **Mobile Widgets**: Native Android (XML) and iOS (WidgetKit) home screen widgets.\n- **Refresh Engine**: Unified behavior across UI, Tray and Background.\n- **Core**: Plugin Manager, Script Runner, Output Parser.\n- **CLI**: 76+ commands.\n- **Platforms**: Linux, macOS, Windows, Android, iOS.\n\n### 🎯 v1.5.0 (Next)\n\n**Advanced Desktop UI \u0026 API Completion**\n\n- Global Hotkey (Ctrl+Alt+C).\n- Tray Overflow Logic (Smart Collapse).\n- Window State Persistence.\n- New CLI commands: `location`, `qr`.\n\n### 🌟 Visão de Longo Prazo (v2.0.0+)\n\n- 🌐 Plugins remotos (execução server-side).\n- 📊 Integração OpenTelemetry e Grafana.\n- 🤖 Sugestões de plugins com IA.\n- 🔗 Plataforma de integração (webhooks, IFTTT/Zapier).\n- 🎮 Editor visual de plugins (no-code).\n- 🌍 Extensão de navegador e suporte a smartwatch.\n\n**Quer influenciar o roadmap?** Vote em funcionalidades nas [GitHub Issues](https://github.com/verseles/crossbar/issues) ou participe das [Discussions](https://github.com/verseles/crossbar/discussions)!\n\n\u003cdetails\u003e\n\u003csummary\u003e📜 Changelog\u003c/summary\u003e\n\nSee [CHANGELOG.md](CHANGELOG.md) for the complete version history.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e🔒 Security Policy\u003c/summary\u003e\n\nSee [SECURITY.md](SECURITY.md) for security policy, vulnerability reporting, and best practices.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e🤝 Contributing\u003c/summary\u003e\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines, development setup, and coding standards.\n\n\u003c/details\u003e\n\n## ⭐ Star History\n\nIf you find Crossbar useful, please consider giving it a star!\n\n---\n\n**Made with ❤️ by the Crossbar Team**\n\n[Website](https://crossbar.dev) • [GitHub](https://github.com/verseles/crossbar) • [Twitter](https://twitter.com/crossbardev)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverseles%2Fcrossbar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fverseles%2Fcrossbar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverseles%2Fcrossbar/lists"}