- Posted at 2013年07月06日 00:56
- Modified at 2013年07月07日 15:10
X-Finderでフォルダ設定を共通化する
高機能なタブファイラ、X-Finder(現バージョン:11-12)について。
このツールは、カスタマイズ性が高く様々な変更を行う事ができるが、その反面設定がとても面倒臭いというデメリットもある。
そんな設定の中で(個人的に)特に面倒なのが、フォルダ設定について。フォルダ設定とは、フォルダとそれを開いてるタブの表示方法等(カラム幅やソート順、タブ色等)を、フォルダパス別に設定する事ができる。
メニューの「ツール」→「フォルダ設定」から設定できるほか、「表示」→「フォルダの表示設定を保存」で現在のフォルダ表示をフォルダ設定に追加することができる。
この設定の厄介な所は、普通に設定を入力しても「表示設定が継承されない」という点。全てのフォルダや特定のサブフォルダ内で共通で設定したい内容(ソート順や表示項目)等があったとしても、全てに同じ内容を設定しなくてはいけない。
例えば、以下のようにCドライブ以下を対象とした設定があったとする。
ここでは、以下のような設定となっている。これは、フォルダを詳細表示、カラム内容及び横幅自動調整、名前順でソート、という設定。
ViewStyle:4 Columns:名前,-2,サイズ,-2,種類,-2,更新日時,-2 Sort:名前
次に、C:\User\以下のユーザーフォルダを対象とした設定を追加したとする。
ここでは、以下のような設定となっている。これは、タブの色を変更する設定。
Set:TabColor=#FF0000,#F0F0F0
この場合、ユーザーフォルダ以下のフォルダを開いた場合、Cドライブの設定は無視されて後から追加した設定のみが適用される。つまり、フォルダの表示内容はデフォルトに戻され、タブの色変更のみが適用される。なお、優先されるのはフォルダ設定の中で該当する設定のうち、最も後方にあるものとなる。もし、最初の設定も同時に適用させようと思うなら、以下のように全く同じ設定を追加する必要がある。
ViewStyle:4 Columns:名前,-2,サイズ,-2,種類,-2,更新日時,-2 Sort:名前 Set:TabColor=#FF0000,#F0F0F0
もちろん、さらにフォルダ設定を追加した場合、その都度これを行う必要がある。そのため、フォルダ設定が多くなると面倒な事になる。
そこで自分の場合は、スクリプトを利用することで設定を共通化してしまうことにした。
まず、スクリプトのフォルダを確認する。メニューの「ツール」→「基本オプション」→ 「その他」の中にある「スクリプトフォルダ」の位置を確認し、そこにスクリプトを配置する。
とりあえず、ここに「folder.js」というファイルを作成し、その中に以下のテキストを記述する。これは、上で行ったCドライブの設定と全く同じ動作をする。
function setFolderStyle() { WScript.Exec("ViewStyle:4"); WScript.Exec("Columns:名前,-2,サイズ,-2,項目の種類,-2,更新日時,-2"); WScript.Exec("Sort:名前"); }
またフォルダ設定を以下のようにして、作成したスクリプトの関数「setFolderStyle」を呼び出す。これで、上で設定したものと全く同じフォルダ設定になる。
Cドライブ
Include:JScript folder.js /r setFolderStyle
ユーザーフォルダ
Include:JScript folder.js /r setFolderStyle Set:TabColor=#FF0000,#F0F0F0
このように、スクリプトを使用する事で設定を共通化する事ができる。
もちろん、スクリプトはいくらでも自由に記述できるので、アイデアさえあればもっと色々と自由なカスタマイズが行える。例えば自分の場合は以下のような感じになる。
// // 表示種別指定 // [viewType] // list :一覧表示 // image :画像表示 // function setFolderStyle(viewType) { var path = WScript.Env("Current"); // パス var pathType = 0; // パス種別 if (path.match(/^[A-Z]\:\\/) != null) pathType = 1; // ローカルパス else if (path.match(/^\\\\/) != null) pathType = 2; // ネットワークパス // タブ名設定 if (pathType != 0) { // オブジェクト var fs = new ActiveXObject("Scripting.FileSystemObject"); var currentName = fs.GetFileName(path); // フォルダ名 var parentName = fs.GetFileName(fs.GetParentFolderName(path)); // 親フォルダ名 var driveName = ""; // ドライブ名 if (pathType == 1) { driveName = "[" + fs.GetDriveName(path).charAt(0) + "]"; // ドライブ名 } else if (pathType == 2) { driveName = "\\\\"; // ドライブ名 var d = path.split("\\"); currentName == "" ? currentName = d[d.length - 1] : ""; // フォルダ名 parentName == "" && d.length >= 3 ? parentName = d[d.length - 2] : ""; // 親フォルダ名 } // タブ名 var tabName = driveName + currentName + ((parentName != "") ? " (" + parentName + ")" : ""); WScript.Exec("Set:TabName=" + tabName); } // タブ色設定s WScript.Exec("Set:TabColor=#F0F0F0,#FFFFFF"); // フォルダ表示設定 if (viewType == "list") { // 通常フォルダ WScript.Exec("Columns:名前,-2,サイズ,-2,項目の種類,-2,更新日時,-2"); // カラム WScript.Exec("ViewStyle:4"); // 詳細 WScript.Exec("Sort:名前"); // ソート } else if (viewType == "image") { // 画像フォルダ WScript.Exec("Columns:名前,-2,サイズ,-2,項目の種類,-2,更新日時,-2"); // カラム WScript.Exec("ViewStyle:5"); // 縮小版 WScript.Exec("Sort:名前"); // ソート } else { // デフォルト setColumnWidthAuto(); WScript.Exec("ViewStyle:4"); // 詳細 WScript.Exec("Sort:名前"); // ソート } } // // カラム幅自動調整 // [type] // 0: カラム名による幅調整 // 1: カラムインデックスによる幅調整 // function setColumnWidthAuto(type) { if (type == null || type == "" || type == 0) { WScript.Exec("Columns: " + WScript.Env('Columns').replace(/,\d+(,|$)/g,",-2$1")); } else if (type == 1) { var columnNum = WScript.Env("Columns").split(",").length / 2; for (var i = 1; i <= columnNum; i++) WScript.Exec("Columns: " + i + "=-1"); } }
使い方は、以下の何れか。
Include:JScript folder.js /r setFolderStyle
Include:JScript folder.js /r setFolderStyle list
Include:JScript folder.js /r setFolderStyle image
この場合、以下のような動作をする。
ローカルパス及びネットワークパスは、タブ名を[ルート][フォルダ名]([親フォルダ名])とする。
ローカルパスの場合、ルートには「[ドライブレター]」を表示。ネットワークパスの場合、ルートには「\\」を表示。親フォルダ名は一つ上位のフォルダ名を表示し、無ければ表示しない(ネットワークパスの場合、ホスト名や共有ルートも上位フォルダと見なす)。
初期タブ色を設定(これが無いと、以前開いてたタブ色を勝手に引き継いでしまうため)。
引数に”list”が与えられた場合、詳細表示、カラム固定、表示幅自動設定、名前ソート。
引数に”image”が与えられた場合、縮小表示、カラム固定、表示幅自動設定、名前ソート。
それ以外の場合、詳細表示、カラム初期値、表示幅自動設定、名前ソート。
とりあえず、自分のX-Finder設定は以上の通り。これをフォルダ設定に適用することで、自分好みのフォルダ設定を行える。また、更新時にカラム幅を自動的に変更するよう、「更新」ボタンを押した時やF5キーを押した時の動作を、以下のようにする。。
Refresh: Include:JScript folder.js /r setColumnWidthAuto
ちなみに、表示幅の自動調整方法は、カラム名を使った方法とカラムインデックスを使った方法に2種類があり、動作が微妙に異なるので、好きな方を使う。あと、自動調整時のカラム名の分割が超適当なのであしからず。自分の環境で問題なければいい、というスタンスなので。
このように、自分の好きなように設定が作れるので、慣れてしまえば結構便利な感じ。