gitlogue README

The project's README from github.com/unhappychoice/gitlogue. As one markdown file: README.md.

gitlogue

crates.io release CI codecov license Terminal Trove Tool of The Week Featured|HelloGitHub

A cinematic Git commit replay tool for the terminal.
Turn your Git history into a living, animated story — typing, syntax highlighting, file tree transitions.

Watch commits unfold with realistic typing animations, syntax highlighting, and file tree transitions, transforming code changes into a visual experience.

Installation

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

🖥️ 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

# 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

Git Visualization & Coding

Terminal Screensavers

Contributing

Contributions are welcome.
See the Contributing Guidelines for details.

License

ISC License. See LICENSE for details.

Author

@unhappychoice

Support

If you find this project useful, please consider:

Every bit of support helps. Thanks!

gitlogue (unhappychoice/gitlogue)

Searching Database…

这是什么?gitlogue 是一款在终端里播放 Git 提交回放的工具:它把你的 Git 历史变成一段生动的故事动画,带有逼真的打字效果、语法高亮和文件树切换动画。
它是图形界面程序,还是在终端里运行的工具?它是终端程序——一个用 Rust(基于 ratatui)编写的 TUI,动画回放直接在你的终端里呈现。
怎么安装?有多种方式:安装脚本(推荐)、Homebrew、Cargo、Arch Linux 软件包、Nix,或者从源码编译——README 里链接了一份安装指南,列出了所有选项。
需要先装 Rust 或其他东西吗?不用——安装脚本、Homebrew、Arch Linux 和 Nix 这几种方式都会直接给你编译好的二进制文件;只有 Cargo 和从源码编译这两种方式需要 Rust 工具链。
它能像真正的屏保那样黑屏或接管电源管理吗?不能——它纯粹是一个视觉展示工具,没有电源管理或黑屏功能。另外,长时间运行时,静止画面可能会让 OLED 屏幕出现烧屏;LCD 屏幕一般没有问题。
提交回放到底会显示什么?逼真的打字、光标移动、删除和文件操作,还有基于 tree-sitter 的语法高亮,以及一个项目文件树,文件变化时会显示改动统计。
它只能回放旧提交,还是也能展示未提交的改动?它还有工作区差异视图,可以在提交之前直观地查看已暂存和未暂存的改动。
哪些语言支持语法高亮?通过 tree-sitter 支持 32 种语言——包括 Rust、Go、Python、JavaScript、TypeScript、Java 和 C++ 这些常见的,还有 Astro、Godot GDScript、Svelte、Nix 和 Zig。
播放时我能控制吗?可以——空格键切换播放/暂停,h/l 逐行步进,H/L 逐个改动步进,p/n 在提交之间跳转,Esc 打开菜单,q 退出。
能换主题或调打字速度吗?内置 9 种主题,还支持完全自定义;~/.config/gitlogue/config.toml 可以设置默认主题、打字速度和背景偏好。
大家用它来做什么?当作工作环境的氛围屏保、教学、演示、用 VHS 或 asciinema 录制的 Demo、桌面美化——或者开会时的“假装很忙”模式。屏保模式会无限循环回放随机提交。
What are similar projects?toast, cbirds, superfile, difftastic, edit, rataflow, micro, spotatui
Size
79.7 MB
Stars
5.1K
Age
11mo
Commits · 90 Days