パーツごとに見る仕組み
プログラム全体を支えるルールはひとつだけです。ウィンドウの状態はメモリ上にあり、設定はファイルの中にあります。以下のすべては、そこから導かれます。
すべての土台にあるルール
ウィンドウはタブを持ち、タブはブロックを持ちます。ブロックとは、ターミナル、編集中のファイル、ファイルパネル、Webページ、画像、PDF、Markdownページ、差分(diff)、システムモニター、設定画面、アドオンのパネルのいずれかです。これらは任意の方向に分割でき、入れ子にでき、ドラッグでき、サイズ変更でき、閉じられます。しかもすべて同じ一組のルールに従っていて、機能が増えるたびに新しいルールが追加されるわけではありません。全員のものにするには大きすぎるものは、vobuda自身のカタログのアドオンとして提供され(これまでのところDesignとDirector)、1回の操作で丸ごとインストール・削除できます。
この配置についての情報はデータベースには一切保存されません。そもそもデータベース自体が存在しないからです。ウィンドウが何をしているかはメモリの中にあり、あなたが何を決めたかはファイルの中にあります。だからこそ、ボタン、キー、メニューバー、Cmd+K、コマンドラインはすべて同じ名前で同じアクションを呼び出します。そして挙動を変えたければ、ほとんどの場合JSONを編集すればいいということになります。
だからこそ、この種の作業のために作られたMac向けのターミナルエミュレータとして最良のものは、中身を覗ける製品だということになります。設定が存在するなら、それを保持しているファイル中の一行が必ずあります。アクションが存在するなら、それを呼び出すための名前が必ずあります。
アクションへの5つの経路、それでも中身は同じアクション
アクションがこれだけあると、プログラムの大部分は実質的に隠れてしまいます。Cmd+Kは「これをやれ」ではなく「何ができるか」に答えてくれる手段です。
-
キーを置き換えるのではなく、キーを教えてくれる
どの行にも、そのアクション自身のショートカットが表示されています。同じアクションのために2回リストを開いた人は、3回目までにはキーを覚えているはずです。
-
5つ目の辞書があるわけではない
どの行も、他の4つの経路とまったく同じように、名前でアクションを実行します。あるチェックが、この一覧が参照するテーブルをコア側のキー割り当て可能なアクション一覧と突き合わせており、双方向で検証しています。存在するのにここに表示されないアクションがあれば、ビルドは失敗します。
-
コマンドラインも同じ集合を使う
vobuda do block.split-down、vobuda button files、vobuda theme catppuccin-mocha、vobuda send、vobuda signal、vobuda state、vobuda logは、どのvobudaブロックでも入力でき、
vobuda mcpは同じコマンドをMCPツールとしてエージェントに提供します。これはスクリプト用の裏口ではありません。インターフェースのテストはこれを通じてプログラム全体を操作しており、だからこそ信頼できるし、エージェントがあなたのウィンドウを再配置しても、それが何をしたのかを正確に読み取れるのです。
ブロックが約束すること
ブロックはシェルを動かしたままタブを移動できる
ブロックのヘッダーをつかんで、タブストリップ内のタブの上にドラッグすると、そこに収まります。同じID、同じシェル、同じフォルダのまま、それまで動いていたものはそのまま動き続けます。ブロックがタブの上に来ると、そのタブはアクセントカラーで光ります。これにもblock.to-tab:2というアクションが用意されているので、キーに割り当てることができ、マウスなしのチェックでも実行できます。
サイズは記憶され、下限もある
ブロックごとに記憶され、どのブロックも使い物にならないほど狭くはなりません。200ポイントの幅しかないパネルは、誰にも使えないパネルです。
あなたのものは黙って失われません
実行中のものを閉じる前には、名前を挙げて確認します。誰かの作業を一度でも失わせてしまえば、機能ひとつ分の価値以上に信頼を失うことになるからです。同じ理由で、プロジェクトのフォルダはエージェントの各ターンの前にスナップショットが取られ、1回の操作で元に戻せます。エージェントに貼り付けたキーは、エージェントが目にする前に止められます。オンにできる囲いは、プロジェクトの外へのエージェントの書き込みと削除を拒否します。
セッションは標準で復元されます
タブ、ブロック、各ブロックの作業フォルダは、再起動後に復元されます。これは標準でオンで、「一般」セクションのスイッチ1つでオフにできます。別のマシンから届いたセッションは、開けるものは開き、開けなかったものは黙って捨てるのではなく、その旨を伝えます。
設定フォルダを1ファイルずつ見る
~/.config/vobuda の中身はすべて読みやすいJSONで、プログラムの実行中は監視されています。ファイルを保存すれば、ウィンドウはすぐに再描画されます。
| ファイル | 内容 |
|---|---|
| settings.json | テーマ、外観、ターミナル、シェル、ウィンドウ、通知音。10のセクションのすべての設定 |
| themes/*.json | ターミナルとウィンドウの配色。25種類のパレットが同梱されており、うち2つは色覚特性に配慮して作られています |
| looks/*.json | ウィンドウの形。角、影、パネルの色、透明度。29種類が同梱されています |
| skins/*.json | モニターのどのパネルを、どのように表示するか |
| buttons.json | ドックの設定。ボタン、並び順、位置、形、そして目立たせる価値のある一部のボタンの色 |
| agents.json | エージェントをどう認識し、何を提供するか |
| keys.json | すべてのショートカット。ネイティブのmacOSメニューもこの同じファイルから構築されます |
| workspaces/*.json | プロジェクト。それぞれが専用のタブ、フォルダ、テーマ、ドックを持つウィンドウ |
内蔵テーマはバイナリの中にあり、フォルダの設定がそれを上書きする形になっているため、アップデートが来ても新しい配色が追加されるだけで、あなたが編集した内容が消えることはありません。フォルダ全体を1つのアーカイブとして保存し、別のMacで復元でき、Macではそのコピーが標準でiCloud Driveに置かれ、スイッチ1つでオフにできます。
ファイルで配置を決めるシステムモニター
12種類のパネルがあり、どれを表示するかは誰かが一度だけデザインした画面ではなく、スキンによって決まります。
-
数値は自分自身について正直だ
システムが実測ではなく推定した値にはチルダ(〜)を付けて表示し、存在しないハードウェアの値はゼロではなく「値なし」として表示します。単体GPUを搭載していないマシンで、GPUパネルが0パーセントと表示されることはありません。
-
両方のアドレスに、それぞれコピーボタンが付いている
アドレスパネルには、インターネット側から見えるアドレスと、その下にこのマシンが自分のネットワーク上で持っているアドレスが表示されます。問い合わせはパネルが画面に表示されている間だけ、約10分に1回(アドレスがまだ分からない間は30秒ごと)行われ、そのリクエストにこのマシンに関する情報は一切含まれません。
-
他のあらゆるものと同じく、ドラッグで並び替えられる
モニターのパネルも、ドックのボタンも、エージェントバーの各パーツも、すべて同じ操作でつかんで望みの場所に置けます。設定の行は、行のどこでもなく左端のつまみでつかむようになっているので、テキストフィールド上から始まるドラッグ操作が、変更したかった単語を選択する邪魔にならません。
シェルの隣でファイルが開く
普通のターミナルなら別のアプリに追いやられていた作業です。出力の中にパスが現れ、2行だけ直す必要があります。これまでなら、エディタを開くために離れ、戻ってきた時にはシェルの文脈が失われていました。
-
保存は意図的な操作だ
Cmd+Sを押すまで、何も書き込まれません。入力するそばから書き込んでしまうエディタは、メモアプリの中でなら良いものですが、動作中のシェルの隣にあるとよろしくありません。保存は単なるキー入力ではなくアクションであり、だからこそ他のすべてと同じように、メニュー項目、ショートカット、コマンドラインのエントリを持っています。
-
書き込みと同じくらい、拒否することが重要だ
開いた後にディスク上で変更されたファイルは上書きされません。バイナリファイルは文字化けしたテキストとして表示されません。フォルダはそもそも開かれません。未保存の変更には目に見える印が付き、編集済みのファイルを閉じようとすると確認が入ります。
-
ファイルを見つける
ファイルパネルは、今いるフォルダ以下を名前で検索し、各結果はそれがどの2階層のフォルダにあるかを示します。名前だけでは2つのindex.tsを区別できないからです。node_modules、.git、targetなどは検索対象から外され、階層は8つまで、結果は200件までで打ち切られます。そして2文字未満の入力では何も検索しません。
画面としての設定、ファイルとしての設定
「一般」から「データとプライバシー」までの10のセクションと、すべての設定を対象にした検索があり、そのすべてが、手で直接編集することもできるファイル中の一行として存在しています。
-
設定の方がブロックのところへやって来る
パネルを右クリックするというのは「ここにあるこれを変えたい」という意味です。だからブロック自身のメニューから設定項目を選ぶと、設定画面まで連れて行かれるのではなく、そのメニューの角の位置に、該当するセクションがウィンドウの上に開きます。これも他のすべてと同じくアクションであり、settings.here:themes、settings.here:monitorという名前を持ちます。
-
選んだその場で聞こえる音
通知音やターミナルのベル音を選ぶと、その場で音が鳴ります。聞こえない名前のリストから音を選ぶのは、結局のところ名前を選んでいるにすぎません。
-
再起動を求められることはない
設定フォルダは常に監視されており、それはコアが管理する2つのもの、つまりショートカットファイルから構築されるmacOSのメニューバーと、ドロップダウンウィンドウのグローバルキーも含まれます。グローバルキーは、新しいキーが登録される前に古いキーが解放されるので、2つが同時に反応することはありません。あるチェックが設定画面のヒントをすべて読み取り、「再起動」という言葉が出てきたら失敗するようになっています。
話しかけることと、読み上げてもらうこと
どちらもこのマシン上で動くシステム標準の音声機能を使います。音声データがこのコンピュータの外に出ることはありません。
音声入力
Cmd+Shift+Vを押すと、話した内容が今作業中のブロックに文字として入力されます。ストリップには、どの言語で聞き取っているかが2文字で表示されます。音声で入力された文章は、あくまで「入力」されるだけで、勝手に「実行」されることはありません。音声認識は聞き間違えるものであり、聞き間違えたコマンドが勝手に実行されるようでは、ラジオがついていただけでファイルを削除するプログラムになってしまいます。一方、エージェントの隣ではフレーズはコマンドではなくメッセージなので、自動的に送信することもできます。これはフレーズが終わった瞬間に読み取られる設定によって決まります。
答えを読み上げてもらう
Cmd+Shift+Rを押すと、エージェントの直近の回答を音声で読み上げます。もう一度押すと止まります。読み上げられるのは回答そのものであって、画面ではありません。先頭の箇条書き記号、強調語を囲むアスタリスク、名前を囲むバッククォート、罫線、ファイル名で足りるところに書かれたフルパスは取り除かれ、その中にある言葉だけが読み上げられます。読み上げの範囲は言葉ではなく形によって決められていて、下端はエージェントの入力欄、上端はそのロゴです。エージェントの周辺の見た目はバージョンが上がるたびに変わるからです。
使い続けるかどうかを左右する細部
右ボタンは私たちのものだ
ウィンドウのどこでも同じです。ブロック内部のブロック自身のメニュー、ブロックの外側にあるウィンドウのメニュー、タブストリップ、ドック、タイルとタイルの間の隙間。どの行もアクションであり、メニュー自体にもblock.menuというアクションが用意されているので、手でしか届かない操作が、何のチェックもできない操作になることはありません。システム標準のメニューを残している唯一の場所はテキストフィールドで、そこでは切り取り、コピー、貼り付け、辞書が使えます。
どこからでもフォルダを開ける
vobuda://open?path=/some/path というURLは、Finderのアクション、スクリプト、別のアプリのいずれからでも、そのフォルダでタブを開きます。macOSにはシステムレベルの既定ターミナル設定というものが存在しないので、これは守れない約束をするのではなく、その機能の正直な代替です。
ブロック内を検索する
Cmd+F。検索フィールドは、それが検索しているブロックに属していて、閉じても表示位置は一致箇所のままになります。
ブロックの中身を持ち出す
Cmd+Shift+Xはブロックのテキストをコピーします。ターミナル自体にテキストを問い合わせているため、ページ内に選択できるテキストが存在しないGPU描画をオンにしていても動作します。ブロックの画像は、Cmd+Kの2つのアクション「ブロックのスクリーンショットをコピー」と「ブロックのスクリーンショットをファイルへ」で取得できます。
宿題にならないアップデート確認
コアは専用のスレッドで1日に1回だけ確認します。表示されるのはレイアウトに重なる通知ではなく、レイアウトの上に添えられる帯です。ターミナルを覆い隠す通知は、読まずに閉じられることを人は学習してしまうからです。押すまで何もインストールされません。エージェントの場合、アップデートはアクティブなブロックに入力するコマンドとして実行され、その出力を見ることができます。Macのvobudaの場合は、ボタンを押すと新しいバージョンがバックグラウンドでインストールされ、その後に再起動を案内し、何も実行中でなければ10秒後に自動で再起動します。
40の言語、それぞれにガイド付き
コアがシステム側で構築するmacOSのメニューバーも含まれます。アラビア語とヘブライ語では、ターミナル自体を除くウィンドウ全体が左右反転します。ターミナルまで反転させると、出力やパスが読めなくなってしまうからです。翻訳のキーには英語の文字列そのものが使われているので、翻訳されていない文字列は、空欄や識別子ではなく、読める英語にフォールバックします。
今読んだ機能を実際に試してみる
初回起動時の2つの簡単な質問のあと、ターミナルブロックが1つあるだけで開きます。ここまで紹介してきたものはすべて、必要になった時に自分でオンにする機能です。
curl -fsSL https://vobuda.com/install.sh | sh