Skip to content

shibadogcap/dpgk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dpgk

ドーパミン中毒のガキ 専用、問答無用でターミナルを虹色にするやつ。

$ dpgk ls -la
$ dpgk vim main.go
$ dpgk --speed=0 htop

名前の由来は dpkg のパロディです。dpgkはドーパミン中毒のガキの略です。だから虹色になります。

使い方

dpgk [options] <command> [args...]

オプション

フラグ デフォルト 説明
--speed 20 虹のアニメーション速度(Hz)。0で静止します。
--freq 1.0 虹の周波数/広がり(0.1-10.0)
--redraw 0 静止画面の再描画アニメーション(Hz)。1-5推奨。TUIはちらつくかもしれません
--version バージョン表示

使用例

# 基本的な使い方
dpgk ls -la

# スクロール出力も虹色
dpgk dmesg -w

# vim/htop も虹色
dpgk vim main.go

# アニメーションなし
dpgk --speed=0 htop

# 静止画面も呼吸する虹色(実験的)
dpgk --redraw=2 htop

# パイプのときは自動で素通り(虹色オフ)
echo hello | dpgk cat

インストール

インストールせずに実行 (Go 1.17+)

Goがインストールされている環境であれば、ビルドやインストールなしで、以下のコマンドで直接実行できます。

go run github.com/shibadogcap/dpgk@latest --help
go run github.com/shibadogcap/dpgk@latest ls -la

バイナリマネージャ経由でインストール

mise

mise を使用している場合は、以下のコマンドでGitHubのリリースから直接インストールできます(Zipアセットからバイナリが自動抽出されます)。

mise use -g github:shibadogcap/dpgk

aqua

aqua を使用している場合は、aqua.yaml と同じディレクトリに registry.yaml を作成し、ローカルレジストリとして登録することでインストールできます(Zipアセットからバイナリが自動抽出されます)。

aqua.yaml の設定例:

registries:
  - name: local
    type: local
    path: registry.yaml

packages:
  - name: shibadogcap/dpgk@v0.1.2
    registry: local

registry.yaml の設定例:

packages:
  - type: github_release
    repo_owner: shibadogcap
    repo_name: dpgk
    asset: dpgk-{{.OS}}-{{.Arch}}.zip
    files:
      - name: dpgk

バイナリをダウンロード

Releases から各プラットフォームのバイナリをダウンロードし、パスの通った場所に配置してください。

自分でビルド

git clone https://github.com/shibadogcap/dpgk.git
cd dpgk
go build -o dpgk .

クロスコンパイル:

GOOS=linux   GOARCH=amd64 go build -ldflags="-s -w" -o dpgk-linux .
GOOS=darwin  GOARCH=amd64 go build -ldflags="-s -w" -o dpgk-macos .
GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o dpgk.exe .

仕組み

dpgk <command>
  │
  ├── ptyx.NewConsole()        ← ローカル端末を掌握
  ├── console.MakeRaw()        ← Rawモードでキーを素通り
  ├── ptyx.Spawn(cmd, PTY)    ← 子プロセスを擬似端末で起動
  │
  ├── stdin  ─────────────────→ PTY(キー入力そのまま)
  ├── PTY ───→ RainbowTransformer ───→ stdout(虹色)
  ├── resize ─────────────────→ PTY(端末リサイズ転送)
  └── signal ─────────────────→ PTY(Ctrl+C 等を転送)

RainbowTransformer がANSIエスケープシーケンスをパース:

  • SGRの色指定(fg/bg/truecolor)だけを剥がして虹色に置換
  • カーソル移動、画面消去、alternate screen、スタイル属性(bold/italic等)は素通し
  • カーソル位置を追跡して斜めグラデーションを計算
  • 画面バッファを保持し、任意で定周期再描画(--redraw

必須環境

  • Go 1.24+(ビルド用)
  • Linux / macOS / Windows(Windows は ConPTY)

謝辞

  • ptyx — クロスプラットフォームPTYライブラリ
  • lolcat — 虹色出力のインスピレーション元
  • dpkg — 名前にインスパイアされています

コントリビューター

ご協力ありがとうございます!

  • @iorinu (PR #1) — READMEのタイポ修正
  • @rokuosan (PR #2) — go run による直接実行を可能にするためのモジュール名修正
  • @chan-mai (PR #3) — 端末リサイズ時のバグ修正、ユニットテスト追加
  • @Tangping_Manong (X/Twitter) — mise および aqua によるインストール方法の追加をご提案いただきました (ポスト)
  • @Thukumo (PR #4) — foot, kittyでの画像表示サポート、ZWJ絵文字のサポート

About

ドーパミン中毒のガキ専用、問答無用でターミナルを虹色にするやつ

Resources

License

Stars

147 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages