Featured image of post CineTTY 讓終端機看起來像電影駭客的小玩具

CineTTY 讓終端機看起來像電影駭客的小玩具

介紹 CineTTY:會自動寫 C 程式、顯示 htop 風格監控與虛構 Kernel Event,重現電影駭客畫面的終端機模擬器

最近做了一個沒有什麼實際用途的小玩具:CineTTY,啟動後,它會在終端機自動寫 C 程式、更新系統監控數字,並快速捲動 Kernel Event,呈現電影裡常見的駭客工作站效果

所有內容都是視覺模擬,不會真的編譯程式、掃描網路或操作系統

起源

這個專案起源於我和朋友拍攝宣傳影片的經驗,當時有幾幕想模擬工程師或駭客工作,希望螢幕上同時有程式碼、系統資訊和快速捲動的文字

我們試過一些網路工具,包括經典的 cmatrix。它的綠色字元雨很有代表性,但畫面較單純,和電影裡資訊量很大的工程師工作站仍有差距,macOS 上雖然也有更複雜的工具,有些卻需要額外安裝 Runtime、套件或 Terminal Library,跨平台使用也不方便

因此我想做一個安裝簡單、輸入一個指令就能啟動,而且能在 Linux、macOS 和 Windows 呈現一致效果的版本

CineTTY 不是真的用 tmux 切割終端機,而是在同一個畫面裡繪製三個面板:

  1. 左側是一個會自動寫 C 的文字編輯器
  2. 右上方是一個類似 htop 的系統監控畫面
  3. 右下方則是不斷捲動的 Kernel Event Stream

早期版本也有 Matrix Rain 和互動式 Console,後來我把兩者拿掉,改成全自動演出,使用者只要執行 cinetty,畫面就會像正在編譯、除錯或維護系統的工作站一樣持續運作

CineTTY 實際執行效果

功能

自動寫code的 C 編輯器

左側模擬一個 Linux Kernel C 編輯器,包含行號、語法顏色、游標、Revision 和進度,程式碼都是固定產生好的,使用 scheduler、memory、IRQ、DMA 和 network 等 Linux 常見概念,但不會被編譯或執行,為了避免短時間內重播,我把虛構 C Source 擴充到原本的 100 倍;在預設速度下,可以持續捲動超過一個小時

填滿畫面的 htop 風格監控器

右上方模擬一個資訊密度很高的 htop 畫面,包括:

  • 多核心 CPU 使用率
  • Memory 與 Swap
  • Tasks、Threads、Load Average 與 Uptime
  • Network、Disk I/O 與溫度
  • 不斷變化的 Process List

畫面會依照終端機大小調整排列,並盡量填滿面板。最低尺寸為 70 × 22,再縮小就會顯示調整視窗的提示

快速捲動的 Kernel Event Stream

右下方會產生不同長度與類型的虛構 Kernel Log,涵蓋 IRQ、排程器、網路封包、NVMe、檔案系統、DMA 和 Systemd 等事件。CineTTY 不會執行 dmesg 或讀取真實 Log

安裝

最簡單的方式是透過 Homebrew 安裝,接著執行 cinetty

1
2
brew install h920032/cinetty/cinetty
cinetty

Homebrew Formula 同時支援 macOS 和 Linux。也可以使用安裝腳本,自動下載適合的版本、驗證 SHA-256 Checksum,再放到 ~/.local/bin

1
curl -fsSL https://raw.githubusercontent.com/h920032/cinetty/main/install.sh | sh

若已安裝 Go 1.22 以上版本,也可以從原始碼安裝:

1
go install github.com/h920032/cinetty@latest

Windows 使用者可以到 最新的 GitHub Release 下載 cinetty_windows_amd64.zip

操作

CineTTY 全自動執行,只保留幾個必要按鍵:

  • Space:暫停或繼續畫面
  • QEscCtrl-C:結束 CineTTY

也可以切換 Green、Cyan 或 Amber 主題,並調整打字速度與幀率:

1
2
3
4
cinetty -theme cyan -speed 1.5
cinetty -theme amber -fps 60
cinetty -no-color
cinetty -version

-speed 支援 0.25.0-fps 支援 10 到 60。

Why Go?

最早的 Prototype 是用 Python 寫的,但我希望使用者下載一個檔案就能執行,不必先準備 Runtime 或額外套件。因此後來改用 Go,並且只使用 Standard Library,編譯完成後是單一 Native Executable,執行時不需要 Go,也沒有第三方 Go Module;畫面與輸入則透過 ANSI Escape Sequence 和各平台的 Terminal API 處理

目前 Release 會自動建立以下版本:

  • Linux x86-64 與 ARM64
  • macOS Intel 與 Apple Silicon
  • Windows x86-64

結語

CineTTY 不是系統監控器或程式編輯器,但它仍然具備完整工具該有的細節:一行指令安裝、跨平台執行、依終端機大小調整,並在離開時恢復原本畫面。它適合用在影片拍攝、Demo 背景,或者單純讓終端機暫時變得很有電影感。

原始碼以 MIT License 開放在 GitHub,歡迎試玩、回報問題或一起增加更多浮誇的畫面:

Hugo Shih World
使用 Hugo 建立
主題 StackJimmy 設計