并非真正屏保,不含电源管理或熄屏功能;OLED 屏长时间显示静态元素可能烧屏;需在 Git 仓库目录内运行才能回放提交
gitlogue
unhappychoiceISC活跃维护把 Git 提交历史变成终端里逐帧播放的动画故事,用电影感回放代码演进过程,适合演示项目历程或当屏保。
A cinematic Git commit replay tool for the terminal, turning your Git history into a living, animated story.
curl -fsSL https://raw.githubusercontent.com/unhappychoice/gitlogue/main/install.sh | bashREADME 未说明,仅提到基于 Rust 构建、轻量快速,未提及 GPU 或显存要求
把 Git 提交历史变成终端里的动画电影,用打字效果回放代码变更
把 Git 提交历史变成终端里逐帧播放的动画故事,用电影感回放代码演进过程,适合演示项目历程或当屏保。
核心能力
- 用逼真打字动画回放提交,含光标移动与删除
- 用 Tree-sitter 为 32 种语言做语法高亮
- 展示项目文件树及变更统计
- 支持屏保模式无限随机播放提交
- 内置 9 套主题并支持自定义
容易踩的坑
- v0.12.2Release v0.12.2最新正式版2026-10-31 · 2026-10-31 06:09 UTC
🐛 Bug Fixes
- fix(swift): capture nil via nil_literal node (c202bce)
- fix(dart): use the highlight query bundled with tree-sitter-dart (be65dd1)
📝 Other Changes
- chore: bump version to v0.12.2 (4e57e27)
- test(syntax): assert every highlight and injection query compiles (84ea30f)
- chore(deps): bump tree-sitter-dart from 0.2.0 to 0.3.0 (edf5913)
- chore(deps): bump tree-sitter-md from 0.5.3 to 0.5.4 (a02ffd1)
- chore(deps): bump tree-sitter-scala from 0.26.2 to 0.26.3 (b0c640a)
- chore: update flake.nix hashes for v0.12.1 (94123e9)
- v0.12.1Release v0.12.12026-10-17 · 2026-10-17 15:04 UTC
查看更新说明
🐛 Bug Fixes
- fix(ui): ignore key release events so keys do not fire twice on Windows (ec63a6c)
📝 Other Changes
- chore: bump version to v0.12.1 (63630fd)
- test(ui): replace no-op step regression test with history navigation check (3b23f10)
- chore(deps): bump tree-sitter-erlang from 0.20.0 to 0.21.0 (10911eb)
- chore(deps): bump tree-sitter-php from 0.24.2 to 0.25.1 (3565f10)
- chore(deps): bump tree-sitter-swift from 0.7.3 to 0.7.4 (b89c173)
- chore(deps): bump tree-sitter-haskell from 0.23.1 to 0.24.1 (10d8fb0)
- chore: update flake.nix hashes for v0.12.0 (1ad3d9b)
- v0.12.0Release v0.12.02026-10-03 · 2026-10-03 15:12 UTC
查看更新说明
✨ Features
- feat: return to waiting screen after watch playback finishes (784f6e5)
- feat: add watch mode to replay new commits as they are made (9cfdddf)
🐛 Bug Fixes
- fix: respect pause and detached checkouts in watch mode (3b7f372)
- fix: redraw when UI state changes without animation progress (8a7158b)
- fix(ci): fail Homebrew SHA step on HTTP errors (9a27f93)
📝 Other Changes
- chore: bump version to v0.12.0 (06a19b7)
- refactor: show waiting screen instead of startup HEAD in watch mode (f89347f)
- chore(deps): bump rand from 0.10.2 to 0.10.3 (c2d782c)
- chore(deps): bump toml_edit (76d7e99)
- chore(deps): bump toml from 1.1.5+spec-1.1.0 to 1.1.6+spec-1.1.0 (0b34718)
- chore(deps): bump dirs from 6.0.0 to 7.0.0 (bdcffbc)
- chore(deps): bump toml from 1.1.4+spec-1.1.0 to 1.1.5+spec-1.1.0 (59dc7b3)
- chore(deps): bump chrono-english from 0.2.0 to 0.2.1 (971f97b)
- chore: update flake.nix hashes for v0.11.0 (4868df2)
- v0.11.0Release v0.11.02026-08-30 · 2026-08-30 07:52 UTC
查看更新说明
✨ Features
- feat(syntax): add Godot file highlighting (2aeb59b)
🐛 Bug Fixes
- fix(syntax): narrow GDScript parameter highlights (7362948)
📝 Other Changes
- chore: bump version to v0.11.0 (4896e19)
- chore(nix): update nixpkgs to fix crate downloads (#234) (e20bba9)
- docs: refresh supported language lists (b2991eb)
- chore(deps): bump chrono-english from 0.1.8 to 0.2.0 (#233) (4c2a482)
- docs: count Godot as one supported language (afe9928)
- docs: clarify supported language-family count (5ad3092)
- chore(deps): bump tree-sitter-scala from 0.26.0 to 0.26.2 (2a4fd89)
- chore(ci): use personal git identity for automated commits (8280084)
- chore(deps): bump globset from 0.4.19 to 0.4.20 (6e47f16)
- chore(deps): bump toml from 1.1.3+spec-1.1.0 to 1.1.4+spec-1.1.0 (a282dd3)
- chore(deps): bump tree-sitter-erlang from 0.19.0 to 0.20.0 (1fd9569)
- chore: update flake.nix hashes for v0.10.0 (3fb5c9a)
- v0.10.0Release v0.10.02026-07-25 · 2026-07-25 05:47 UTC
查看更新说明
✨ Features
- feat(git): detect renames in diff extraction and preserve old_path (782e28f)
🐛 Bug Fixes
- fix(ci): bump cachix/install-nix-action to v31 in release.yml (f9c046f)
- fix(ci): bump cachix/install-nix-action from v27 to v31 (d52afc8)
- fix(ci): bump rust-cache prefix-key to invalidate stale cache (e2e1fbf)
- fix: address CodeRabbit review findings on rename detection and ignore handling (2f50404)
📝 Other Changes
- chore: bump version to v0.10.0 (1733beb)
- chore(deps): bump clap from 4.6.2 to 4.6.3 (cb16226)
- chore(deps): bump serde from 1.0.228 to 1.0.229 (bfa2e8f)
- chore(deps): bump anyhow from 1.0.103 to 1.0.104 (59a5273)
- chore(deps): bump globset from 0.4.18 to 0.4.19 (3c39bb3)
- chore(deps): bump clap from 4.6.1 to 4.6.2 (4cd1f8c)
- chore(deps): bump toml_edit (8f39d64)
- chore(deps): bump toml from 1.1.2+spec-1.1.0 to 1.1.3+spec-1.1.0 (8506de7)
- chore(deps): bump rand from 0.10.1 to 0.10.2 (a7bfa2e)
- chore(deps): bump anyhow from 1.0.102 to 1.0.103 (b800f56)
- chore(deps): bump ratatui from 0.30.1 to 0.30.2 (127f59a)
- chore(deps): bump ratatui from 0.30.0 to 0.30.1 (450f68d)
- chore(deps): bump tree-sitter-erlang from 0.18.0 to 0.19.0 (09d4546)
- chore(deps): bump chrono from 0.4.44 to 0.4.45 (b885f16)
- chore(deps): bump tree-sitter-swift from 0.7.2 to 0.7.3 (c055f30)
- chore(deps): bump toml_edit (99d5aa3)
- chore(deps): bump tree-sitter-erlang from 0.17.0 to 0.18.0 (4029ebc)
- chore(deps): bump git2 from 0.20.4 to 0.21.0 (43ac447)
- docs: add HelloGitHub featured badge (e0642e1)
- chore(deps): bump tree-sitter-erlang from 0.16.0 to 0.17.0 (a4a8066)
- docs: add Discord and blog mentions to Support section (c525869)
- docs: add general hashtags to share links (2bb9984)
- docs: add Support section with star and share links to README (bd3b1c9)
- ci: merge test job into coverage run (50321ea)
- ci: add codecov coverage measurement (4ab7bef)
- chore(deps): bump tree-sitter-swift from 0.7.1 to 0.7.2 (74e94cf)
- docs(readme): add hero section with centered demo, badge row, and tagline (460fa22)
- chore: rem
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Watch commits unfold with realistic typing animations, syntax highlighting, and file tree transitions, transforming code changes into a visual experience.
Installation
Using Install Script (Recommended)
curl -fsSL https://raw.githubusercontent.com/unhappychoice/gitlogue/main/install.sh | bash
Using Homebrew
brew install gitlogue
Using Cargo
cargo install gitlogue
On Arch Linux
pacman -S gitlogue
Using Nix
# Run directly without installation
nix run github:unhappychoice/gitlogue
# Or install to your profile
nix profile install github:unhappychoice/gitlogue
# For flake-based configurations, add to your inputs:
# inputs.gitlogue.url = "github:unhappychoice/gitlogue";
# Then use: inputs.gitlogue.packages.${system}.default
From Source
git clone https://github.com/unhappychoice/gitlogue.git
cd gitlogue
cargo install --path .
See the Installation Guide for more options and troubleshooting.
Features
🎬 Commit Replay as Animation — Realistic typing, cursor movement, deletions, and file operations 🔍 Working Tree Diff View — Visualize staged/unstaged changes before committing 🎨 Tree-sitter Syntax Highlighting — 32 languages supported 🌳 Project File Tree — Directory structure with change statistics 🖥️ Screensaver Mode — Endless random commit playback 🎭 Themes — 9 built-in themes + full customization support ⚡ Fast & Lightweight — Built with Rust for performance
Usage
Popular Use Cases
🖥️ Screensaver — Ambient coding display for your workspace
🎓 Education — Visualize how code evolved over time
📺 Presentations — Replay real commit histories live
🎬 Content Creation — Record demos with VHS or asciinema
🎨 Desktop Ricing — A living decoration for your terminal
💼 Look Busy Mode — Appear productive during meetings
[!WARNING] Not a True Screensaver — gitlogue does not include traditional screensaver functions like power management or screen blanking. It's purely a visual display tool.
OLED Burn-in Risk — Static elements (like the editor background and border lines) may cause burn-in on OLED displays over extended periods. LCD displays are generally safe from this issue.
Quick Start
# Start the cinematic screensaver
gitlogue
# View a specific commit
gitlogue --commit abc123
# Replay a range of commits
gitlogue --commit HEAD~5..HEAD
# Replay commits in chronological order (oldest first)
gitlogue --order asc
# Loop a specific commit continuously
gitlogue --commit abc123 --loop
# Loop through a commit range
gitlogue --commit HEAD~10..HEAD --loop
# Watch the repository and replay new commits as they are made
gitlogue --watch
# View staged changes (default)
gitlogue diff
# View unstaged changes instead
gitlogue diff --unstaged
# Filter commits by author or email (case-insensitive partial match)
gitlogue --author "john"
# Filter commits by date
gitlogue --after "2024-01-01"
gitlogue --before "1 week ago"
gitlogue --after "2024-06-01" --before "2024-07-01"
# Use a different theme
gitlogue --theme dracula
# Adjust typing speed (ms per character)
gitlogue --speed 20
# Set different speeds for different file types
gitlogue --speed-rule "*.java:50" --speed-rule "*.xml:5"
# Ignore specific file patterns (e.g., notebooks, lock files)
gitlogue --ignore "*.ipynb" --ignore "poetry.lock"
# Use an ignore file
gitlogue --ignore-file .gitlogue-ignore
# List available themes
gitlogue theme list
# Set default theme
gitlogue theme set dracula
# Combine options
gitlogue --commit HEAD~5 --author "john" --theme nord --speed 15 --ignore "*.ipynb"
Key Bindings
Playback
| Key | Action |
|---|---|
Space | Toggle play / pause |
h | Step one line backward |
l | Step one line forward |
H (Shift+h) | Step one change backward |
L (Shift+l) | Step one change forward |
p | Previous commit |
n | Next commit |
Esc | Open menu |
q / Ctrl+c | Quit |
Menu
| Key | Action |
|---|---|
j / ↓ | Move selection down |
k / ↑ | Move selection up |
Enter | Select item |
Esc | Close menu |
Configuration
gitlogue can be configured via ~/.config/gitlogue/config.toml.
You can set the default theme, typing speed, and background preferences.
See the Configuration Guide for full options and examples.
Supported Languages
Astro, Bash, C, C#, C++, Clojure, CSS, Dart, Elixir, Erlang, Go, Godot (GDScript / Shader / Resource), Haskell, HTML, Java, JavaScript, JSON, Kotlin, Lua, Markdown, Nix, PHP, Python, Ruby, Rust, Scala, Svelte, Swift, TypeScript, XML, YAML, Zig
Documentation
Installation Guide
Usage Guide
Configuration Guide
Theme Customization
Contributing Guidelines
Architecture Overview
Related Projects
Git Visualization & Coding
- GitType - A CLI code-typing game that turns your source code into typing challenges
Terminal Screensavers
- tarts - Collection of terminal screensavers in Rust (Matrix, Game of Life, Boids, 3D effects, and more)
- cbonsai - Grow beautiful bonsai trees in your terminal
- asciiquarium - Enjoy the mysteries of the sea from your terminal
- cmatrix - The Matrix screensaver effect for your terminal
- pipes.sh - Animated pipes flowing through your terminal
Contributing
Contributions are welcome.
See the Contributing Guidelines for details.
License
ISC License. See LICENSE for details.
Author
Support
If you find this project useful, please consider:
- ⭐️ Star on GitHub
- 🐦 Share on X
- 🦋 Share on Bluesky
- 🧵 Share on Threads
- 💼 Share on LinkedIn
- 📘 Share on Facebook
- 🟧 Submit to Hacker News
- 💬 Drop it into your Discord server or developer chat
- ✍️ Write about it on your blog or in a newsletter
Every bit of support helps. Thanks!