Tablacus Explorer に行きついたお話

## はじめに

最近、 Windows 標準の Explorer で、ウィンドウ開きすぎてどこに何があるかわからなくなっていたので、便利なファイラーソフトがないかと探してみたのが切っ掛け
あまり多く触ってはないけど、 [Tablacus Explorer](https://tablacus.github.io/explorer.html) が思っていた以上にやりたいことを実現できたので備忘録がてら

※会社の PC は Windows 10 なので Windows 11 のタブ機能は知らない子


## 試したファイラーソフト

個人的に重視したポイントは以下の内容

- Must
    - ダークモード: 基本的にダークモードでしか使わない人種なので
    - タブ機能: ウィンドウの整理が目的なので
    - パネル分割: ウィンドウの整理が目的なので
    - 動作速度、安定性: しょっちゅう使うものが不安定だとイライラするので
- Want
    - デザイン性: 便利でもデザインが好みに合わないと萎えるので
    - 環境構築のしやすさ: 複数 PC での使用や設定共有が楽だと嬉しい

### [Files](https://files.community/)

>Explore a beautiful Windows-first design. Manage all your files with increased productivity. Work across multiple folders with tabs. And so much more.

導入方法や基本的な使い方は [Files 公式](https://files.community/) や [ファイルマネージャー「Files」の導入方法と使い方を紹介！](https://aprico-media.com/posts/7934) とかを参考に

#### 良かった点

- デザイン性
    - `beautiful design` の通り、デザインがモダンでおしゃ
    - 見た目でモチベーションを上げる効果は一番あった
- 機能面
    - ダークモードの設定、タブ、パネル分割ができ、設定の共有もしやすかった

#### 悪かった点

- インストール必要
    - ~~会社 PC では MS Store からインストールできないので、依存パッケージのインストールに苦戦~~
    - よくよく確認すれば exe 形式でもインストーラが提供されていたので、そっちを使えばよかっただけの話ではある
- 動作速度、安定性
    - クイックアクセスの取得が中途半端に遅い
        - クイックアクセスを消すのは無しなので、絶妙に苛立たしい感じがした
    - 存在しないパスにアクセスしたときに変に固まったり、最悪落ちることがあった
- パネル分割
    - 二分割以上にできなかった


### [Explorer++](https://explorerplusplus.com/)

>Explorer++ is a lightweight and fast file manager for Windows.

導入方法や基本的な使い方は [Explorer++ 公式](https://explorerplusplus.com/) や [Explorer++ のインストールと使い方](https://eizone.info/explorer-plusplus/) とかを参考に

#### 良かった点

- 機能面
    - `lightweight` とある通り、動作は軽快
- インストール不要
    - zip を解凍して、日本語化のモジュールをそのフォルダに入れるだけで使える
- 設定共有
    - xml 形式にできるので、フォルダ一式を別の PC に持っていくだけで OK

#### 悪かった点

- ダークモード
    - 2023/04/08 時点で公式ページトップからダウンロードできる `1.4.0 beta-2 (1.4.0.1748)` だと設定できない
    - [GitHub](https://github.com/derceg/explorerplusplus) からダウンロードしたバージョン `1.4.0.2010` だと設定できたので公式ページが古い…？
        - ただし、メニューバーやタブが中途半端なので、ちょっと残念なダークモード感
- パネル分割
    - 機能がない
- アドレスバー
    - パンくずリストのアドレスバーになっていないので、一気に上の階層に戻るのが面倒


### [Tablacus Explorer](https://tablacus.github.io/explorer.html)

>アドオンで拡張できるエクスプローラ互換のタブ型ファイラー

導入方法や基本的な使い方は [Tablacus Explorer 公式](https://tablacus.github.io/explorer.html) や [[Tablacus Explorer]エクスプローラーは既に「過去」である](https://pouhon.net/tablacus-first/5023/) とかを参考に

#### 良かった点

- 機能面
    - アドオンで Must, Want の項目をクリアできた
- インストール不要
    - zip を解凍するだけ
- 設定共有
    - アドオンや設定はすべてインストールフォルダ内に作成されるので、フォルダ一式を別の PC に持っていくだけで OK

#### 悪かった点

- 自由度の高さ
    - アドオンによる自由度が高すぎるため取っつきずらい
    - カスタマイズしようにもドキュメントは必要最小限の内容しかないので、読解が難しい


#### 設定内容

現時点ではこんな感じに設定している

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/750616/1202127b-95c3-b15f-8d20-f53b8dcd3e35.png)

##### アドオン

- デフォルトインストール済みで残したアドオン (これ以外はいらないなと思ったので削除)
    - mouse
    - key
    - multithread
    - aboutblank
    - mainmenu
    - segoeicons
    - tabplus
    - undoclosetab
- 追加インストールしたアドオン
    - firebug: マウスジェスチャー、ショートカット等で JScript 書く時のデバッグ (普段は非アクティブ)
    - switchpane: パネル分割時に次のパネルに移動
    - switchprevpane: パネル分割時に前のパネルに移動
    - darkmode: ダークモード設定
    - foldersettings: 列の表示を統一
    - favoritesbar: お気に入りバーを表示
    - branchbar: 現在のブランチ名表示
    - fullpathbar: フルパス表示
    - split: パネル分割
    - split3: パネル 3 分割
    - split6: パネル 6 分割
    - split8: パネル 8 分割
    - split9: パネル 9 分割
    - split12: パネル 12 分割
    - inactivepane: 非アクティブパネルの可視化
    - innerback: パネル分割時の戻る
    - innerforward: パネル分割時の進む
    - innerrefresh: パネル分割時の更新
    - innersyncselect: パネル分割時の選択同期
    - innerup: パネル分割時の上へ
    - innerbreadcrumbsaddressbar: パネル分割時のパンくずリストアドレスバー
    - innerfilterbar: パネル分割時のフィルタ
    - innersearchbar: パネル分割時の検索
    - stripes: 縞々
    - tabgroups: タブのグループ化
    - tabcolorplus: タブの色付け
    - tooltippreview: ファイルをツールチップでプレビュー

##### 設定ファイル

```xml:te/config/addons.xml
<TablacusExplorer>
  <firebug Enabled="0" Level="2"/>
  <mouse Enabled="1" Level="2"/>
  <key Enabled="1" Level="2" Set="1"/>
  <switchpane Enabled="1" Level="2"/>
  <switchprevpane Enabled="1" Level="2"/>
  <darkmode Enabled="1" Level="2" Set="1"/>
  <multithread Enabled="1" Level="2" Copy="1" Move="1" Delete="1"/>
  <aboutblank Enabled="1" Level="2"/>
  <foldersettings Enabled="1" Level="2"/>
  <mainmenu Enabled="1" Level="2"/>
  <favoritesbar Set="1" NewTab="1" Enabled="1" Level="2"/>
  <branchbar Enabled="1" Level="2" Location="ToolBar2Left"/>
  <fullpathbar Set="1" Title="1" Enabled="1" Level="2" Location="ToolBar2Left"/>
  <split Enabled="1" Level="2" Set="1" Location="ToolBar2Right" No1x2="-1"/>
  <split3 Enabled="1" Level="2" Set="1" Notop2bottom1="-1" Noleft2right1="-1" Location="ToolBar2Right" No1x3="-1"/>
  <split6 Enabled="1" Level="2" Location="ToolBar2Right" Set="1" No2x3="-1"/>
  <split8 Enabled="1" Level="2" Location="ToolBar2Right"/>
  <split9 Enabled="1" Level="2" Location="ToolBar2Right"/>
  <split12 Enabled="1" Level="2" Location="ToolBar2Right"/>
  <inactivepane Set="1" Enabled="1" Level="2" Color="#373737"/>
  <innerback Enabled="1" Level="2"/>
  <innerforward Enabled="1" Level="2"/>
  <innerrefresh Enabled="1" Level="2"/>
  <innersyncselect Enabled="3" Level="2" MenuExec="1" Menu="Edit" MenuPos="-1" Position="0" KeyOn="List" MouseOn="List"/>
  <innerup Enabled="1" Level="2"/>
  <innerbreadcrumbsaddressbar Enabled="1" Level="2" Menu="Edit" MenuPos="-1" KeyExec="1" KeyOn="All" Key="Alt+D,Ctrl+L" Set="1"/>
  <innerfilterbar Enabled="1" Level="2"/>
  <innersearchbar Enabled="1" Level="2"/>
  <segoeicons Enabled="1" Level="2"/>
  <stripes Enabled="1" Level="2" Set="1" Alpha="20"/>
  <tabgroups Location="ToolBar5Center" Set="1" Enabled="1" Level="2"/>
  <tabplus Enabled="1" Level="2" Icon="1" Drive="1" New="1"/>
  <tabcolorplus Set="1" Enabled="1" Level="2"/>
  <undoclosetab Enabled="1" Level="2" MenuExec="1" Menu="Tabs" MenuPos="0" KeyExec="1" Key="Shift+Ctrl+T" KeyOn="All" MouseExec="1" Mouse="3" MouseOn="Tabs_Background"/>
  <tooltippreview Enabled="1" Level="2" Set="1"/>
</TablacusExplorer>
```

```xml:te/config/key.xml
<TablacusExplorer>
  <All Key="$3f,Ctrl+R" Type="Tabs">Refresh</All>
  <All Key="$200f,$214d" Type="Tabs">Next Tab</All>
  <All Key="$300f,$214b" Type="Tabs">Previous Tab</All>
  <All Key="Ctrl+1" Type="Tabs">0</All>
  <All Key="Ctrl+2" Type="Tabs">1</All>
  <All Key="Ctrl+3" Type="Tabs">2</All>
  <All Key="Ctrl+4" Type="Tabs">3</All>
  <All Key="Ctrl+5" Type="Tabs">4</All>
  <All Key="Ctrl+6" Type="Tabs">5</All>
  <All Key="Ctrl+7" Type="Tabs">6</All>
  <All Key="Ctrl+8" Type="Tabs">7</All>
  <All Key="Ctrl+9" Type="Tabs">8</All>
  <All Key="Ctrl+0" Type="Tabs">-1</All>
  <All Key="Ctrl+F" Type="Tools">Search</All>
  <All Key="$414b" Type="Tabs">Back</All>
  <All Key="$414d" Type="Tabs">Forward</All>
  <All Key="$4148" Type="Tabs">Up</All>
  <All Key="Ctrl+Shift+C" Type="Tools">Copy full path</All>
  <All Key="Ctrl+Shift+W" Type="Tabs">Close other tabs</All>
  <All Key="Ctrl+Alt+T" Type="JScript">Sync.Tabgroups.Add();
Addons.Tabgroups.Change(te.Data.Tabgroups.Index + 1);
Addons.Tabgroups.Edit(this);</All>
  <All Key="Ctrl+Alt+W" Type="JScript">Addons.Tabgroups.Close(te.Data.Tabgroups.Index, false);</All>
  <All Key="Ctrl+Shift+Alt+W" Type="JScript">Addons.Tabgroups.CloseOther(te.Data.Tabgroups.Index);</All>
  <All Key="$614b" Type="JScript">Addons.Tabgroups.Change(te.Data.Tabgroups.Index &gt; 1 ? te.Data.Tabgroups.Index - 1 : te.Data.Tabgroups.Data.length);</All>
  <All Key="$614d" Type="JScript">Addons.Tabgroups.Change(te.Data.Tabgroups.Index &lt; te.Data.Tabgroups.Data.length ? te.Data.Tabgroups.Index + 1 : 1);</All>
  <List Key="$1,$35" Type="JScript">Ctrl.SelectItem(null, SVSI_DESELECTOTHERS);</List>
  <List Key="Ctrl+D" Type="Tools">Add to favorites</List>
  <List Key="Ctrl+K" Type="Tools">New folder</List>
  <List Key="Ctrl+S" Type="Tools">New file</List>
  <List Key="Ctrl+T" Type="Tabs">New tab</List>
  <List Key="Ctrl+W" Type="Tabs">Close tab</List>
  <List Key="$103c" Type="Selected Items">Notepad.exe</List>
  <List Key="Shift+0" Type="Open">0</List>
  <List Key="Shift+1" Type="Open">17</List>
  <List Key="Shift+2" Type="Open">C:\</List>
  <List Key="Shift+3" Type="Open">D:\</List>
  <List Key="Ctrl+Shift+N" Type="Background">NewFolder</List>
  <List Key="$f" Type="Add-ons">Switch to next pane</List>
  <List Key="$100f" Type="Add-ons">Switch to previous pane</List>
</TablacusExplorer>
```


以下の三つはそれっぽく動いているけど自分で JScript 書いたから合っているかはよくわからん

```js:新規タブグループ (Ctrl+Alt+T)
Sync.Tabgroups.Add();
Addons.Tabgroups.Change(te.Data.Tabgroups.Data.length);
Addons.Split.Exec(4, 4);
Addons.Tabgroups.Edit(this);
```

```js:タブグループを閉じる (Ctrl+Alt+W)
Addons.Tabgroups.Close(te.Data.Tabgroups.Index, false);
```

```js:他のタブグループを閉じる (Ctrl+Shift+Alt+W)
Addons.Tabgroups.CloseOther(te.Data.Tabgroups.Index);
```


## おわりに

何の疑いもなく Windows 標準の Explorer を使っていたけど、実はストレスの元になっていたんだなぁと実感
当たり前になっている習慣って恐ろしい・・・


## 更新履歴

- 新規タブグループ (Ctrl+Alt+T) の動作を修正 (2023-04-20)
  - `te.Data.Tabgroups.Index + 1` → `te.Data.Tabgroups.Data.length` で、追加されたタブグループをアクティブ化
  - `Addons.Split.Exec(4, 4);` を追加し、新規のタブグループを 2x2 のレイアウトに変更

## 関連、参考リンク

- [Files](https://files.community/)
    - [ファイルマネージャー「Files」の導入方法と使い方を紹介！](https://aprico-media.com/posts/7934)
- [Explorer++](https://explorerplusplus.com/)
    - [Explorer++ のインストールと使い方](https://eizone.info/explorer-plusplus/)
- [Tablacus Explorer](https://tablacus.github.io/explorer.html)
    - [[Tablacus Explorer]エクスプローラーは既に「過去」である](https://pouhon.net/tablacus-first/5023/)
    - [Revolver Tablacus ExplorerのスクリプトやWindowsの小技などの備忘録](https://revolver2011.blog.fc2.com/)