Termora
Desktop workbench for serial, CAN, and protocol debugging. Built with PySide6, laid out for wide / 2K / 4K screens, with skins and English / 简体中文. Inspired by classic CuteCom.
The product name is Termora. The Python import package stays cutecom so existing macros and scripts keep working.
面向串口、CAN 与协议调试的桌面工作台。基于 PySide6,界面按大屏设计,支持皮肤与多语言。
Install
pip install termora
termora
Or from this repository:
git clone https://github.com/syd168/Termora.git
cd Termora
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
termora
Use a dedicated venv. Mixing conda pyside6 with pip PySide6-Addons leads to
libshiboken6.abi3.so import errors.
Platform notes
| Capability | Linux | macOS | Windows |
|---|---|---|---|
| Serial I/O, sessions, macros, plugins | ✓ | ✓ | ✓ |
| CAN (virtual / PCAN / Kvaser / Vector / SLCAN, …) | ✓ | ✓* | ✓* |
| Native SocketCAN | ✓ | — | — |
X/Y/Zmodem (sz / lrzsz) |
✓ | ✓* | — |
* Needs the matching driver or Homebrew tool. Use the virtual CAN backend without hardware.
- Linux:
sudo usermod -aG dialout $USERthen log in again. - macOS: ports look like
/dev/cu.*. Zmodem:brew install lrzsz. - Windows:
COMxin Device Manager. No X/Y/Zmodem (sz+ POSIX redirection).
Usage
termora # GUI
termora -s Default # named session
python -m cutecom # same entry point
python run.py # from a source checkout
Headless serial (no window; RX on stdout):
termora --headless --port /dev/ttyUSB0 --baud 115200 --send "AT" --timeout 2
| Flag | Meaning |
|---|---|
-s, --session |
Open a named session |
--port |
Serial device |
--baud |
Baud rate (default 115200) |
--send |
String to write after open |
--send-file |
File bytes to write after open |
--line-end |
none / lf / cr / crlf (headless --send) |
--timeout |
Headless read duration in seconds |
--headless |
No GUI; requires --port |
Logs: repo runs write logs/ in the project; a pip-installed run uses the OS app-data directory.
Interface
Connection settings on the left, a large output pane in the middle, command history above, input bar at the bottom.
- View → Skin: Light / Dark / Nord / Terminal green
- View → Language: English / 简体中文
- View → Connection settings (
Alt+S): reopen the sidebar
Features
Aligned with classic CuteCom:
- Open/close, baud, data bits, parity, stop bits, flow control, RTS/DTR
- Read-write / read-only / write-only, auto-reconnect
- Line endings LF / CR / CRLF / none / Hex, character delay
- Command history, completion, Ctrl control characters
- Text / HEX display, control characters, timestamps, find (
F3) - Session manager; disk logs (per session and window)
- Send file as text or script; X/Y/Zmodem on Linux/macOS (
sz) - Plugins: macro packs (JSON, hand-editable; legacy
.tmfsupported), UDP/TCP proxy, byte counter, Modbus assistant
Termora extras:
- Skins and language switch
- Local echo (TX in green)
- Leave port settings unchanged on open
- Break, repeat send
- Freeze scroll / export output (
Ctrl+E) - Live RX/TX B/s, recent devices
- CRC / checksum tools, protocol pane (NMEA / AT / Modbus)
- CAN analyzer (multiple backends, DBC, sequenced send)
- Widescreen sidebar layout
- Multiple windows (each with its own port and log file)
Macro packs
JSON files. Built-in examples live in the package (cutecom/resources/macros/). When you run from the repo, user copies go under config/macros/.
{
"format": "cutecom-macros",
"version": 2,
"name": { "en": "ESP32 / ESP-AT", "zh_CN": "ESP32 / ESP-AT" },
"macros": [
{ "name": { "en": "Reset", "zh_CN": "复位" }, "command": "AT+RST" }
]
}
Escapes in commands: \n \r \t \0 \xFF. In JSON write \\.
中文
pip install termora
termora
从源码:
git clone https://github.com/syd168/Termora.git
cd Termora
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
termora
请使用项目自己的虚拟环境。不要用混装了 conda pyside6 与 pip PySide6-Addons 的解释器,否则会报找不到 libshiboken6.abi3.so。
无界面发串口:
termora --headless --port /dev/ttyUSB0 --baud 115200 --send "AT" --timeout 2
Linux 串口权限:sudo usermod -aG dialout $USER,重新登录后生效。开发态日志在项目 logs/;pip install 后使用系统 AppData / Application Support。
License
MIT. Inspired by CuteCom; this is an independent Python implementation.
Release files for termora 0.80.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| termora-0.80.0.tar.gz | 321.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| termora-0.80.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 676.5 kB
Release files / termora-0.80.0.tar.gz
| Download URL | termora-0.80.0.tar.gz |
|---|---|
| Size | 321.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9c02c90c9144ca942d254a902539f309cf07a9a0843a8f552db4f4005348093e
|
|
BLAKE2b-256 checksum How to use checksums |
c0758f8550cb29568db91b0406d2a08cc113dc49eb6d87f89dbe92587f4905d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|
Release files / termora-0.80.0-py3-none-any.whl
| Download URL | termora-0.80.0-py3-none-any.whl |
|---|---|
| Size | 355.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
71499329bbe24c1c203d061b5153574d354c6920493607712df1fcaf269c409e
|
|
BLAKE2b-256 checksum How to use checksums |
13e5e2d117c6de347450e48ff7bf60f7fb1a06085e86396800c92662f7571605
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|