Skip to content

acelot/termtastic

Repository files navigation

termtastic

termtastic

termtastic is a feature-rich handmade Meshtastic® console client written in Rust.

Build GPL-3.0-only M-Powered

Chat Nodes
Settings Connection
⚠️ WARNING
Project is under active development, things could be changed completely without notice.

Features

Note

Unchecked items are not implemented yet.

Chat tab

Channels

  • Scrollable channels list (Primary, Secondary)
  • Direct conversations
  • Display the last message for each channel

Messenger

  • Scrollable chat screen
  • Display the short and long names of node
  • Display the SNR/RSSI for direct nodes
  • Display the number of hops for retranslated messages
  • Display the time of messages
  • Display the reactions (emojis)
  • Ability to see reactions details
  • Ability to send broadcast messages to the channels
  • Ability to send direct messages to the nodes
  • Ability to reply to the messages
  • Ability to send the reactions (emojis)
  • Limiting the message length to 200 chars (with counter)
  • Clickable links

Nodes tab

Nodes list

  • Scrollable nodes list
  • Ability to start direct conversation with selected node
  • Display the short and long names of node
  • Display the SNR/RSSI for direct nodes
  • Display the number of hops for the routed nodes
  • Display the ID of the nodes
  • Display the humanized last heard time of the nodes
  • Sort nodes by different fields: last heard, hops count, distance, etc
  • Nodes fuzzy search

Single node expanded view

  • Display node detailed info
  • Traceroute feature
  • Ignore feature
  • TBD

Settings tab

General

  • Loading device configuration (generic feature)s
  • Saving device configuration (generic feature)

Radio

  • LoRa
  • Channels
  • Security

Device

  • User
  • Device
  • Position
  • Power
  • Display
  • Bluetooth

Module

  • MQTT
  • Serial
  • External Notification
  • Store & Forward
  • Range Test
  • Telemetry
  • Canned Message
  • Neighbor Info

App

  • UI

Connection tab

  • Scrollable devices list (TCP, BLE, Serial)
  • Connection via TCP
  • Connection via BLE
  • Connection via Serial
  • Device configuration loading during connection process and storing it into state
  • Storing TCP connections into config file
  • Discovering of BLE and Serial devices feature
  • Reconnection feature with exponential backoff timeouts

Logs tab

  • Writing logs into files using daily rolling strategy
  • Mirroring logs into log list with scroll
  • Ability to expand the single log record (useful for long logs)
  • Ability to copy log record into clipboard

General features

  • RX indicator
  • Online/Total nodes counter

Stack

Feature Library
TUI: Framework Ratatui
TUI: Backend crossterm
TUI: Inputs ratatui-textarea
TUI: Lists tui-widget-list
Interaction with Meshtastic meshtastic
Clipboard functionality arboard
Bluetooth devices discovery bluest
Logging tracing
Async/Channels tokio
Configuration confy
Errors anyhow
Datetime chrono
Emoji selector emoji

Compatibility

✅ - tested, 🔬 - untested, ❌ - not working

Feature 🐧 Linux 🍏 macOS 🪟 Windows
BLE devices discovery 🔬
Serial devices discovery

Download

Source Link
Manual download Releases
Debian PPA 🏗️ TBA
Arch Linux AUR 🏗️ TBA
macOS Brew 🏗️ TBA
Windows Chocolatey 🏗️ TBA

FAQ

How to launch manually downloaded app on macOS?

In order to run unsigned application on macOS you need dequarantine it using the command below:

xattr -d com.apple.quarantine ./path/to/termtastic

About

Feature-rich handmade Meshtastic® console client written in Rust

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages