skittles

command module
v0.0.0-...-f53eb57 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 9, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

README

Skittles

Two-pane file manager with a terminal window.

2画面ファイラーにターミナル画面をくっつけたツールです。

その昔のX68000 用ファイラー mint.x の設計思想をヒントに作りました。

Pure Goで作成しているので、LinuxやWindowsのGo環境下でも動く可能性があります(未検証)

opencode with DeepSeekV4 で設計、開発、検証を行いました。

golangci-lintで検出した問題を潰してあります。

Skittles Screenshot Skittles Screenshot Skittles Screenshot

特徴

  • 2画面 + コンソール の3ペイン: Tab でフォーカス切替、アクティブペインが source、反対が destination
  • ファイル操作: コピー/移動/削除(確認ダイアログ)/マーク/ソート/リネーム
  • パーミッション・所有者・グループ表示: 各行に drwxr-xr-x owner group 形式
  • ビルトインビューア: テキスト・Markdown・ソースコードのシンタックスハイライト対応(スクロール可能)。バイナリは自動HEX表示
  • 文字コード自動判別: UTF-8 / Shift-JIS / EUC-JP を自動検出して表示
  • アーカイブ内部ブラウズ: ZIP/TAR/7z/GZ/BZ2 を pure Goで内部展開、ディレクトリのように閲覧・操作
  • 拡張子→アクション: .go → ビューア、.zip → ブラウズ、.mdx → MP4M.app 等
  • コンソールペイン: cd対応・$プロンプト表示、コマンドのリアルタイム出力、履歴、スクロールバー
  • Pure Go: CGo不要。Goの動作する環境であればどのプラットフォームでも動作するはず(macOSで開発・動作確認、Linux/Windowsは未確認)
  • 日本語入力対応: macOS 起動時・コンソールフォーカス時に自動で英数入力に切替
  • トップバー: アプリ名・バージョン・クレジット・リアルタイム時計(曜日付き)表示
  • 外部プレビュー: p キーで外部アプリ(プレビュー.app等)で開く

インストール

Go
go install github.com/ktam72/skittles@v2.3.1
手動ビルド
git clone git@github.com:ktam72/skittles.git
cd skittles

# ビルド(CGo不要)
go build -o skittles ./src

# 実行
./skittles

設定はプロジェクトルートの config.yaml を編集してください。

アーカイブ形式対応
形式 エンジン
ZIP Go標準 archive/zip
TAR/TGZ Go標準 archive/tar + compress/gzip
BZ2/TBZ2 Go標準 compress/bzip2
7z github.com/bodgit/sevenzip(pure Go)

全て pure Go。CGo不要。外部コマンド依存ゼロ。

使い方

# カレントディレクトリで起動
./skittles

# 左右別のディレクトリで起動
./skittles /usr/local /usr/local

# 同じディレクトリで起動
./skittles ~/Documents
基本操作

3ペイン構成: 左ペイン・右ペイン・コンソールペイン。Tab でフォーカスを切り替えます。 アクティブなペインが source、反対のファイルペインが destination として機能します。

ファイルの選択と操作
Space → カーソル行をマーク(複数選択)
    a → 全ファイルをマーク
    c → マークしたファイルを反対ペインへコピー
    m → マークしたファイルを反対ペインへ移動
    d → 削除(確認ダイアログ表示)
    r → ファイル名リネーム

マークがない場合、コピー/移動/削除はカーソル上の1ファイルのみが対象になります。

アーカイブ(ZIP/TAR/7z等)の操作
  Enter → アーカイブ内部をブラウズ(ディレクトリのように表示)
.. / ← / Backspace → アーカイブルートでは元のディレクトリに戻る
                      (サブフォルダ内では親フォルダへ)
    x → アーカイブをカレントディレクトリに展開
(アーカイブブラウズ中は枠・文字色がピンク色に変化します)

アーカイブ内部では通常のファイル操作(コピー・移動・削除)がそのまま使えます。 アーカイブから戻ると、元のアーカイブファイルにカーソルが復帰します。

コンソールペイン
  ! → コンソールにフォーカス移動
       cd コマンドが使えます(コンソール専用のカレントディレクトリを持つ)
       コマンドを入力 → Enter で実行(結果は goroutine でリアルタイム表示)
  ↑↓ → コマンド履歴(または出力スクロール)
 ESC → ファイルペインに戻る
ビルトインビューア
   Enter → テキスト/ソースコード/HEX をインライン表示
   ↑↓   → 1行スクロール
 ←/→/PgUp/PgDown → ページスクロール
   ESC  → 閉じる

Markdown(.md)は色付きでレンダリング、ソースコードは chroma でシンタックスハイライト、 バイナリは自動で HEX 表示されます。文字コードは UTF-8 / Shift-JIS / EUC-JP を自動判別。

その他
   p → 外部アプリでプレビュー(画像はプレビュー.app等)
   E → エディタ($EDITOR)で開く
   R → ディレクトリ再読込
  sr → ソート順切替(名前→日時→拡張子→サイズ)
 ESC → ESC×2 で終了
キーバインド一覧
キー 機能
↑↓ / kj カーソル移動
→ / l ブラウズモードでは無効
Enter ディレクトリ進入 / ファイルを開く / 実行ファイルはコンソールにパス入力
← / h / Backspace 親ディレクトリへ / アーカイブを抜ける
Tab フォーカス切替(Left→Right→Console→Left)
PgUp / PgDown / b ページ送り / 戻し
Space マーク
a 全マーク
p 外部アプリでプレビュー
c 反対ペインへコピー
m 反対ペインへ移動
d 削除(確認ダイアログ表示)
r ファイル名リネーム
R カレントディレクトリ再読込
sr ソート切替
! コンソールへジャンプ
E エディタで開く
x アーカイブをカレントディレクトリに展開
ESC 終了(2回押し)
ビューア操作
キー 機能
↑↓ 1行スクロール
←→ / PgUp / PgDown 1ページスクロール
ESC 閉じる

設定

config.yaml でアプリ全体の設定を行います。

# 使用するエディタ(e/E キーで起動)
editor: vim
拡張子→アクション定義

actions: 以下で、ファイルの拡張子ごとの動作を定義できます。

actions:
  # テキストビューアで開く
  - match: ".go"
    viewer: true

  # アーカイブブラウズ(内部展開→ディレクトリ表示)
  - match: ".zip"
    browse: true

  # 外部コマンドを実行($P はファイルパスに展開)
  - match: ".mdx"
    command: "open -a MP4M.app $P"
match の形式
形式 説明
.ext .zip 拡張子マッチ
!name !Makefile ファイル名完全一致
* * デフォルト(最下位優先)
アクションの種類
アクション 説明
viewer: true ビルトインビューアで開く(テキスト/HEX/Markdown自動判別)
browse: true アーカイブ内部ブラウズ(ZIP/TAR/7z/GZ/BZ2対応)
command: "..." 外部コマンドを実行
コマンドで使える変数
変数 展開例
$P ファイルのフルパス
$F ファイル名のみ
$D ディレクトリパス

$EDITOR は展開されません。config.yamleditor: 設定が使用されます。

開発

go build -o skittles ./src              # ビルド(CGo不要)
go vet ./src/...                         # 静的解析
golangci-lint run ./src/...              # Lint(0 issues)

# クロスコンパイル
GOOS=linux GOARCH=amd64 go build -o skittles-linux ./src
GOOS=windows GOARCH=amd64 go build -o skittles.exe ./src

ライセンス

Apache License 2.0

クレジット

  • mint.x — X68000 用ファイラー。本プロジェクトはその設計思想に着想を得ています
  • bubbletea — TUI フレームワーク
  • lipgloss — スタイリング
  • glamour — Markdown レンダリング
  • chroma — シンタックスハイライト
  • sevenzip — 7z アーカイブリーダー

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
src
fs
ui

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL