Termtosvg là công cụ ghi lại phiên làm việc terminal dưới dạng hoạt ảnh SVG, tuy mạnh mẽ nhưng đôi khi gây khó khăn do lỗi kỹ thuật. Dưới đây là các vấn đề phổ biến và cách xử lý hiệu quả để bạn sử dụng mượt mà trên mọi nền tảng.
Cài đặt và phụ thuộc
Lỗi tương thích Python: Nếu gặp SyntaxError hoặc ImportError, hãy kiểm tra phiên bản Python:
python3 --version
# Yêu cầu: Python >= 3.5
# Cập nhật nếu cần:
sudo apt update && sudo apt install python3.8 # Ubuntu/Debian
brew install python@3.8 # macOS
# Khuyến nghị dùng môi trường ảo:
python3 -m venv svg_env
source svg_env/bin/activate
pip install termtosvg
Lỗi cài đặt gói lxml/pyte: Cài thư viện hệ thống trước:
# Ubuntu/Debian
sudo apt install libxml2-dev libxslt-dev
# CentOS/RHEL
sudo yum install python3-devel libxml2-devel libxslt-devel
Vấn đề khi ghi hình
Phiên ghi bị ngắt sớm: Chỉ định shell rõ ràng hoặc tăng thời gian chờ:
termtosvg -c "bash -i" demo.svg
termtosvg --min-frame-duration 150 demo.svg
Kích thước terminal sai lệch: Đặt kích thước thủ công để tránh cắt chữ:
termtosvg -g 100x30 demo.svg # dành cho trình diễn code
termtosvg -g 60x20 demo.svg # tối ưu cho thiết bị nhỏ
Xử lý đầu ra SVG
Hoạt ảnh không chạy: Một số trình duyệt chặn SMIL. Dùng template CSS thay thế:
termtosvg -t window_frame_js demo.svg
Màu sắc hiển thị sai: Chọn theme phù hợp từ danh sách có sẵn:
termtosvg -t solarized_dark demo.svg
termtosvg -t dracula demo.svg
Tối ưu hiệu năng
File SVG quá lớn: Điều chỉnh khoảng cách khung hình:
termtosvg -m 80 -M 3000 demo.svg
# -m: thời gian tối thiểu giữa các khung (ms)
# -M: thời gian tối đa giữa các khung (ms)
Terminal bị giật khi ghi: Giảm tần suất cập nhật hoặc dùng shell nhẹ:
termtosvg -m 120 -c "/bin/sh" demo.svg
Khắc phục theo hệ điều hành
Trên macOS:
brew reinstall termtosvg
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Trên Linux:
# Arch Linux
sudo pacman -S termtosvg
# Fedora (cần repo bổ sung)
sudo dnf install termtosvg
Gỡ rối nâng cao
Kiểm tra phiên bản thư viện:
python3 -c "import lxml, pyte; print(f'lxml: {lxml.__version__}, pyte: {pyte.__version__}')"
Khi dùng template tùy chỉnh, đảm bảo:
- Định dạng SVG hợp lệ
- Có đủ namespace cho SMIL animation
- Thẻ
<animate>và<set>được khai báo đúng
Thực hành tốt nhất
- Luôn dùng virtual environment để cô lập dự án
- Chỉ định kích thước terminal ngay từ đầu
- Chọn template phù hợp ngữ cảnh sử dụng
- Cập nhật phiên bản thư viện định kỳ