vhs - CLIホームビデオレコーダー 📼

(Your CLI home video recorder ?)

Created at: 2022-07-19 22:28:36
Language: Go
License: MIT

ティッカー


最新リリース ドキュメントに行く ビルドステータス

ターミナルGIFを、統合テストとCLIツールのデモ用のコードとして記述します。

VHSへようこそ

上記の例はVHSで生成されました(ソースを表示)。

チュートリアル

開始するには、VHSをインストールして新しいファイルを作成します。

.tape

vhs new demo.tape

を開きますお気に入りのファイル。

.tape
$EDITOR

vim demo.tape

テープ ファイルは、一連のコマンドで構成されます。コマンドは次のとおりです。 VHSが仮想端末で実行するための命令。すべてのリストについて 使用可能なコマンドは、コマンド リファレンスを参照してください

# Where should we write the GIF?
Output demo.gif

# Set up a 1200x600 terminal with 46px font.
Set FontSize 46
Set Width 1200
Set Height 600

# Type a command in the terminal.
Type "echo 'Welcome to VHS!'"

# Pause for dramatic effect...
Sleep 500ms

# Run the command by pressing enter.
Enter

# Admire the output for a bit.
Sleep 5s

完了したら、ファイルを保存してVHSにフィードします。

vhs < demo.tape

すべて完了しました!という新しいファイルが表示されます(または名前を付けたもの )をディレクトリに格納します。

demo.gif
Output

上記のVHSコードによって生成されたGIF

その他の例については、例/ディレクトリを参照してください。

取り付け

手記VHSでは、ttydffmpegをインストールして利用できるようにする必要があります。

PATH

パッケージマネージャーを使用します。

# macOS or Linux
brew install charmbracelet/tap/vhs ffmpeg
brew install ttyd --HEAD

# Arch Linux (btw)
yay -S vhs-bin ttyd ffmpeg

# Nix
nix-env -iA nixpkgs.vhs

# Debian/Ubuntu
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg
echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list
# Install ttyd from https://github.com/tsl0922/ttyd/releases
sudo apt update && sudo apt install vhs ffmpeg

# Fedora/RHEL
echo '[charm]
name=Charm
baseurl=https://repo.charm.sh/yum/
enabled=1
gpgcheck=1
gpgkey=https://repo.charm.sh/yum/gpg.key' | sudo tee /etc/yum.repos.d/charm.repo
# Install ttyd from https://github.com/tsl0922/ttyd/releases
sudo yum install vhs ffmpeg

# Void Linux
sudo xbps-install vhs

または、Dockerを使用してVHSを直接実行し、依存関係は次のとおりです。

docker run --rm -v $PWD:/vhs ghcr.io/charmbracelet/vhs <cassette>.tape

または、ダウンロードしてください。

  • パッケージは Debian および RPM フォーマットで利用可能です
  • バイナリは、Linux、macOS、およびWindowsで利用できます

または、次のようにインストールします。

go

go install github.com/charmbracelet/vhs@latest

VHSサーバ

VHSにはSSHサーバーが組み込まれています!VHSをセルフホストすると、次のようにアクセスできます ローカルにインストールされましたが。VHSはコマンドにアクセスでき、 アプリケーションをホスト上に配置できるため、マシンにインストールする必要はありません。

サーバーを起動するには、次のコマンドを実行します。

vhs serve
構成オプション
  • VHS_PORT
    : リッスンするポート (
    1976
    )
  • VHS_HOST
    : リッスンするホスト (
    localhost
    )
  • VHS_GID
    : サーバーを実行するグループ ID (現在のユーザーの GID)
  • VHS_UID
    : サーバーを実行するユーザー ID (現在のユーザーの UID)
  • VHS_KEY_PATH
    : 使用する SSH キーへのパス (
    .ssh/vhs_ed25519
    )
  • VHS_AUTHORIZED_KEYS_PATH
    : 承認されたキー ファイルへのパス (空、パブリックにアクセス可能)

次に、次の方法で別のマシンからVHSにアクセスします。

ssh

ssh vhs.example.com < demo.tape > demo.gif

VHS コマンド リファレンス

手記すべてのVHSドキュメントは、コマンドラインで表示できます。

vhs manual

VHS コマンドにはいくつかの基本的なタイプがあります。

アウトプット

このコマンドを使用すると、場所とファイル形式を指定できます レンダリングの。テープ・ファイルに複数の出力を指定することができます。 それらをそれぞれの場所にレンダリングします。

Output

Output out.gif
Output out.mp4
Output out.webm
Output frames/ # a directory of frames as a PNG sequence

設定

コマンドを使用すると、次のような端末のグローバルな側面を変更できます。 フォント設定、ウィンドウのサイズ、およびGIF出力場所。

Set

設定は、テープ ファイルの先頭で管理する必要があります。非設定または非出力コマンドの後に適用される設定(除く)は、 無視。

TypingSpeed

フォントサイズの設定

でフォントサイズを設定しますコマンド。

Set FontSize <number>

Set FontSize 10
Set FontSize 20
Set FontSize 40

フォントサイズを10ピクセルに設定した場合の例

フォントサイズを20ピクセルに設定した場合の例

フォントサイズを40ピクセルに設定する例

フォントファミリの設定

でフォントファミリを設定しますコマンド

Set FontFamily "<font>"

Set FontFamily "Monoflow"

フォントファミリをモノフローに変更する例

幅を設定

で端末の幅を設定しますコマンド。

Set Width

Set Width 300

端子の幅を変更した例

高さを設定

でターミナルの高さを設定しますコマンド。

Set Height

Set Height 1000

端子の高さ変更例

文字間隔の設定

文字間の間隔を設定します(追跡)コマンド。

Set LetterSpacing

Set LetterSpacing 20

文字間の文字間隔を20ピクセルに変更する例

行の高さを設定

で行間の間隔を設定しますコマンド。

Set LineHeight

Set LineHeight 1.8

線の高さを1.8に変更する例

入力速度を設定する

Set TypingSpeed 500ms # 500ms
Set TypingSpeed 1s    # 1s

キーを押すあたりの入力速度を秒単位で設定します。たとえば、入力速度は、入力される各文字の間にa()遅延が発生します。

0.1
0.1s
100ms

この設定は、コマンドごとに構文で上書きすることもできます。

@<time>

Set TypingSpeed 0.1
Type "100ms delay per character"
Type@500ms "500ms delay per character"

入力速度を変更して別の単語を入力する例

テーマを設定

でターミナルのテーマを設定しますコマンド。テーマの値 ベース 16 色と前景 + 背景を持つ JSON 文字列である必要があります。

Set Theme

Set Theme { "name": "Whimsy", "black": "#535178", "red": "#ef6487", "green": "#5eca89", "yellow": "#fdd877", "blue": "#65aef7", "purple": "#aa7ff0", "cyan": "#43c1be", "white": "#ffffff", "brightBlack": "#535178", "brightRed": "#ef6487", "brightGreen": "#5eca89", "brightYellow": "#fdd877", "brightBlue": "#65aef7", "brightPurple": "#aa7ff0", "brightCyan": "#43c1be", "brightWhite": "#ffffff", "background": "#29283b", "foreground": "#b3b0d6", "selectionBackground": "#3d3c58", "cursorColor": "#b3b0d6" }

テーマを気まぐれに変更する例

パディングを設定する

で端子フレームのパディング(ピクセル単位)を設定しますコマンド。

Set Padding

Set Padding 0

パディングを 0 に設定する例

フレームレートの設定

VHSがフレームをキャプチャする速度を設定しますコマンド。

Set Framerate

Set Framerate 60

再生速度を設定する

最終レンダリングの再生速度を設定します。

Set PlaybackSpeed 0.5 # Make output 2 times slower
Set PlaybackSpeed 1.0 # Keep output at normal speed (default)
Set PlaybackSpeed 2.0 # Make output 2 times faster

種類

使用するキー押下をエミュレートします。つまり、スクリプト入力に使用できます ターミナルで。タイプは、コマンドの入力と操作の両方に便利です ターミナルのプロンプトと TUI。このコマンドは、 入力する文字。

Type
Type

標準のタイピング速度を設定するには、タイピング速度を設定するで、引数で場所でそれをオーバーライドします。

@time

# Type something
Type "Whatever you want"

# Type something really slowly!
Type@500ms "Slow down there, partner."

VHSでタイプコマンドを使用する例

キー

キーボードショートカットは、オプションとオプションの繰り返しを取ります繰り返しの場合 の間隔ごとにキーを押します。

@time
count
<time>

Key[@<time>] [count]

バックスペース

でバックスペースキーを押しますコマンド。

Backspace

Backspace 18

バックスペースキーを18回押した例

Ctrl

コマンドを使用して、制御修飾子にアクセスし、制御シーケンスを送信できます。

Ctrl

Ctrl+R

Ctrl+R キーを押して逆検索する例

入る

Press the enter key with the command.

Enter

Enter 2

Example of pressing the Enter key twice

Arrow Keys

Press any of the arrow keys with the , , , commands.

Up
Down
Left
Right

Up 2
Down 2
Left
Right
Left
Right
Type "B"
Type "A"

Example of pressing the arrow keys to navigate text

Tab

Enter a tab with the command.

Tab

Tab@500ms 2

Example of pressing the tab key twice for autocomplete

Space

Press the space bar with the command.

Space

Space 10

Example of pressing the space key

Sleep

The command allows you to continue capturing frames without interacting with the terminal. This is useful when you need to wait on something to complete while including it in the recording like a spinner or loading state. The command takes a number argument in seconds.

Sleep

Sleep 0.5   # 500ms
Sleep 2     # 2s
Sleep 100ms # 100ms
Sleep 1s    # 1s

Hide

The command allows you to exclude commands from the output.

Hide

Hide

This command is helpful for performing any setup and cleanup required to record a GIF, such as building the latest version of a binary and removing the binary once the demo is recorded.

Output example.gif

# Setup
Hide
Type "go build -o example . && clear"
Enter
Show

# Recording...
Type 'Running ./example'
...
Enter

# Cleanup
Hide
Type 'rm example'

Show

The command allows you to specify that the following commands should be un-hidden in the output. Since commands are shown by default, this command is really only useful after using the command.

Show
Hide

Hide
Type "You won't see this being typed."
Show
Type "You will see this being typed."

Example of typing something while hidden


Continuous Integration

You can hook up VHS to your CI pipeline to keep your GIFs up-to-date with the official VHS GitHub Action:

⚙️ charmbracelet/vhs-action

VHS can also be used for integration testing. Use the or output to generate golden files. Store these files in a git repository to ensure there are no diffs between runs of the tape file.

.txt
.ascii

Output golden.ascii

構文の強調表示

ツリーシッターの文法があります 編集者が利用できるファイル ツリーシッターによる構文の強調表示をサポートします。

.tape

🌳チャームブレスレット/ツリーシッター-VHS

Neovim、Emacsなどでうまく機能します!

フィードバック

このプロジェクトについてのご意見をお聞かせください。お気軽にメモをお送りください!

ライセンス

マサチューセッツ工科大学


魅力の一部。

チャームのロゴ

チャーム热爱开源•チャームはオープンソースが大好き