🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

前言

最近引入了 Omarchy,或是在瀏覽 r/unixporn,我了解到了終端螢幕保護程式的存在。
像是 cbonsaiasciiquariumtarts 等,各種各樣的工具為終端增添了色彩。

我想試著自己做一些,所以借鑒了之前製作的 GitType 的經驗,決定實作一個以 Git 的提交為題材的螢幕保護程式。

因此,完成的產品就是 gitlogue
這是一個將 Git 的提交歷史以電影感的動畫播放的 CLI 工具。

GIF

demo2.gif

截圖

screenshot-editor.png

特性

  • 🎬 提交動畫播放
  • 🌳 專案的檔案樹
  • 🎨 透過 Tree-sitter 進行語法高亮
  • 🖥️ 螢幕保護程式
  • 🎭 9 種主題

安裝

一行命令(推薦)

curl -fsSL https://raw.githubusercontent.com/unhappychoice/gitlogue/main/install.sh | bash

Homebrew(macOS/Linux)

brew install unhappychoice/tap/gitlogue

Cargo

cargo install gitlogue

使用方法

透過以下指令啟動螢幕保護程式。

gitlogue

若想顯示特定的提交,請指定提交哈希或範圍。

# 播放特定的提交
gitlogue --commit abc123

# 播放最近 5 次提交
gitlogue --commit HEAD~5..HEAD

# 按照時間順序播放
gitlogue --order asc

# 循環播放
gitlogue --commit abc123 --loop

其他選項

# 更改主題
gitlogue --theme dracula

# 調整打字速度(每個字元的毫秒)
gitlogue --speed 20

# 忽略特定的檔案模式
gitlogue --ignore "*.ipynb" --ignore "poetry.lock"

# 顯示主題列表
gitlogue theme list

# 設定預設主題
gitlogue theme set dracula

也可以在設定檔(~/.config/gitlogue/config.toml)中進行自定義。
詳細資料請參考 Configuration Guide

用例

  • 🖥️ 螢幕保護程式 — 隨機提交的無限播放
  • 📺 演示 — 實際的提交歷史實時播放
  • 🎬 內容製作 — 使用 VHS 或 asciinema 錄製演示
  • 🎓 學習用途 — 可視化代碼的演變,作為學習材料
  • 🎨 桌面自訂 — 為桌面增色

為何要製作

之前在製作 GitType 時,已經熟悉了如 ratatui 和 tree-sitter 等 TUI 技術。
所以我想利用這些技能來製作一款「Git 版的螢幕保護程式」。

在實作過程中,我有意識地考慮了以下幾點。

  • 真實的打字表現

    • 不僅僅是流出 diff,而是重現實際編寫代碼的動作。
    • 包括光標的移動和刪除的動作,展示「提交的過程」。
  • 視覺上的樂趣

    • 為了能作為終端螢幕保護程式使用,十分注重外觀。
    • 借由主題的自訂和語法高亮,使得單純觀看的過程也能享受樂趣。
  • 與 Git 的自然整合

    • 不是取代現有的工作流程如 git loggit diff,而是作為補充。
    • 允許靈活使用,如指定特定提交或播放範圍。

技術

  • Rust
  • ratatui(TUI 實作)
  • tree-sitter(語法高亮,支援 26 種語言)
  • git2-rs(Git 操作)

製作 GitType 的經驗對這次幫助很大。
特別是在 ratatui 進行 TUI 實作及使用 tree-sitter 進行語法高亮的部分,前次的經驗得以直接運用。
這讓我能專注於 UI 的設計和動畫的實作,這是相當重要的。

支援的語言

Rust、TypeScript、JavaScript、Python、Go、Ruby、Swift、Kotlin、Java、PHP、C#、C、C++、Haskell、Dart、Scala、Clojure、Zig、Elixir、Erlang、HTML、CSS、JSON、Markdown、YAML、XML

連結

關聯專案

  • GitType - 可以用自己的代碼進行打字練習的 CLI 遊戲

結尾

gitlogue 是我帶著「這或許有趣」的輕鬆心情而製作的工具。

然而在發布後,竟然被選為 Terminal Trove 的本週工具,還獲得了超過 1200 顆星的反響,讓我感到意外。
老實說,我並不認為這是一款如此重要的工具,因此我自己也感到驚訝。

回想起來,專注於 UI 設計可能是成功的一個原因。
目的是不僅僅顯示提交歷史,而是要讓人覺得「好看、有趣」「想放在終端裡」。

不論是作為螢幕保護程式,演示工具,或是單純欣賞 Git 歷史的樂趣,請務必試試看。

gitlogue

原文出處:https://qiita.com/unhappychoice/items/7e2d792dbf7993ac4465


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝16   💬10   ❤️5
428
🥈
我愛JS
📝2   💬8   ❤️4
94
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付