ローカルディレクトリブラウザ(仮)
English
X11 + Athena Widgetsで動作する簡易ファイル操作ユーティリティ(いわゆるファイラー)です。まだ大したことはできません。
画面イメージ
1フレーム状態
縦1列にファイル名が表示されます。属性によって色分けがなされます。
複数フレーム状態
フレームを縦/横に分割できます。サンプルでは横に分割した後、右側のフレームをさらに縦に分割しています。
登録コマンド
DFと同じように事前に実行コマンドを登録しておくことができます。
登録ディレクトリ
DFと同じように事前にディレクトリを登録しておき、カレントディレクトリを選択、変更することができます。
インクリメンタルサーチ
インクリメンタルサーチによってカーソルを移動させることができます。
1フレーム複数バッファ
複数のディレクトリを参照している状態では、1つのフレームで表示するディレクトリを切り換えることができます。
ドットファイルの表示切り換え
ドットファイルの表示、非表示を切り替えることができます。
ローカルディレクトリブラウザ(仮)独自の関連付け
内部命令open(初期状態ではEnterに割り当て)を実行した再の動作を独自に設定できます。
~/.dfx/appsファイルでopen実行時に起動するアプリケーションを指定します。
- *.html: emacsclient $F
- *.jpg: display $F
このように書いておくと、*.htmlにマッチするファイルでopenするとemacsclientを起動します。同様に*.jpgファイルではdisplayが起動しImageMagikのdisplayでjpg画像を表示できます。
コンパイル方法
Linuxでは標準ライブラリにiconv()が含まれているため、libiconvをリンクしようとしてもエラーになります。
この場合、ImakefileにあるるLOCAL_LIBRARIESの行の末尾に「-liconv」を削除してください。Imakefileを修正した場合は、xmkmfを実行してMakfefileを作り直してmakeしてください。
- 修正前
- LOCAL_LIBRARIES = -lXaw -lXt -lX11 -lpthread -liconv
- 修正後
- LOCAL_LIBRARIES = -lXaw -lXt -lX11 -lpthread
ToDo
課題 | 解決への障壁 | 対処 |
localeと違うiocharsetのファイルシステムをマウントすると表示が信じられないほど乱れる。 |
MacOSの濁点・半濁点を考えると内部エンコードと表示エンコードを分けなければならない。 |
EUC-SJISだけ処理しても中途半端なのでUTF-8の変換処理を作ってから考える |
更新履歴
alpha 3.15
alpha 3.14
- テキストビューアで半角カナがあるEUCファイルを開くとEUCだと認識しなかったのを修正しました。
- チラつきを抑えてみました。
- 細部を調整。
alpha 3.13
- 情報表示エリアができたことでフレームがウィンドウの外に追い出された場合にフレームを消すように変更。
- 細部を調整。
alpha 3.12
- enlarge_h、enlarge_v、shrink_h、shrink_vにキーを割り当て。「{」「}」「^」「_」。
- 細部を調整。
alpha 3.11
- ディレクトリ一覧読み込み時、バックグラウンドスレッドで解放済みメモリをアクセスする場合があったのを修正。
- フレームのサイズを変更するコマンド enlarge_h、enlarge_v、shrink_h、shrink_vコマンドを追加。
- カーソルが一番したにある時にダイアログを出すコマンドを実行すると、ダイアログの位置計算に失敗してアクセス違反になっていたのを修正。
alpha 3.10
- 問い合わせダイアログ表示時に範囲外のメモリをアクセスしていたので修正。
- スクロール描画の効率化。
- スクロール時に不正な描画になることがあったので修正。
alpha 3.9
- ディレクトリ変更時にまだアクセスしているメモリを解放してしまっていたので修正。
- ファイル一覧が空になったときに(no files)と表記。
- カーソル位置の描画の効率化。
- フィルタ摘要時の処理を効率化。
- スクロール描画の効率化。
alpha 3.8
- フィルタの描画更新タイミングの調整。
- スクロール時のもたつき改善。
alpha 3.7
- samba経由で System Voume Informationを参照したあとにディレクトリを移動するとアクセス違反が出ていたので修正。
alpha 3.6
- テキストビューアで文字コードの変換に失敗していたのを修正。
- テキストビューアで読み込んだバッファの境目にシフトJISの1バイト目があるとストールしていたのを修正。
alpha 3.5
- フレーム分割時、既存バッファを表示した場合に再描画していなかったのを修正。
alpha 3.4
- インクリメンタルサーチの後、アクセス違反が発生するのを修正。
alpha 3.3
- 何らかの処理でエラーが発生したときに終了できなくなっていたのを修正。
- execコマンドのパラメータで""でエスケープしても空白で区切られていたのを修正。
- 空ディレクトリをコピーしていなかったのをコピーする(ディレクトリを作る)ように変更。
- mkdir、mkfile、cp、mv, ln、symln、rm、multimarkコマンドでパラメータとして対象ファイルを指定できるように変更。
- 空ディレクトリでインクリメンタルサーチが動作していないかったのを修正。
- delコマンドをrmコマンドに変更。
- スレッドリークの修正。
alpha 3.2
- カーソル移動を2%ほど高速化。
- フレームのサイズが変わった後に誤動作していたのを修正。
alpha 3.1
- cmdlist、pathlistなどのバッファを閉じたときにSEGVするのを修正。
alpha 3
- 内部構造の変更。
- ディレクトリやファイルを作ったときにカーソルを作成したディレクトリ、ファイルに設定。
- インクリメンタルサーチの後、カーソル位置がいまいちだったので修正。
alpha 2.44
- フォーカス制御の処理が中途半端でいろいろとぶっ壊れていたので再度修正。
alpha 2.43
- スクロール方法の変更。現在の位置が多少わかりやすくなったような気がします。
- フォーカス制御の処理が中途半端でいろいろとぶっ壊れていたので修正。
alpha 2.42
- バッファ一覧表示の追加。コマンド名はblist。キーには割り当てていないのでxからblist。
- killframeなどでフレームが消えたりするとフォーカスの切り替わる順序が解りにくくなってしまうので修正。
alpha 2.41
- インクリメンタルフィルタを追加。コマンド名はifiler、初期状態でCtrl + fに割り当て。
alpha 2.40
alpha 2.36
- テキストビューアで検索できるように。
- UTF-8の表示を改善。
- x86-64でコンパイルしたときの誤動作を修正。
- chmodの内部処理に付いて細部を調整。
alpha 2.35
- テキストビューアでUTF-8をShift_JISと誤判定するケースに対処。
- テスト用の出力文が混じっていたので削除。
alpha 2.34
alpha 2.33
- コピー先として指定したディレクトリが作成できないときのエラーメッセージ追加。
- 入力補完でアクセス違反を起こしていたのを修正。
alpha 2.32
- X Toolkitの初期化方法の誤りを修正。これでXIMが動作。
alpha 2.31
- ディレクトリ一覧の取得を別スレッドで実行。
- ファイルが一つもないディレクトリでコマンドを実行しようとするとアクセス違反を起こしていたバグの修正。
alpha 2.30
- openでビューアで開く代わりに~/.dfx/appsで指定したコマンドを実行するように。
alpha 2.29
- フィルタをクリアした時にプロンプトが残っていたので消去。
- コマンド未入力で確定するとアクセス違反になっていたので修正。
alpha 2.28
- ディレクトリの削除中にエラーが発生するとスキップした際にアクセス違反(closedir()を二度呼ぶ)していたのを修正。
- RPM版のインストール先を/usr/local/から/usrに変更。
alpha 2.27
- ディレクトリを選択してコピーする時にディレクトリが作れないとスキップすることができなかった不具合を修正。
alpha 2.26
- cmdlistコマンドを改善。コマンド一覧として使用するファイルを指定できるように。
- execコマンドにパラメータを渡すと即実行できるように。
- 登録コマンドから内部コマンドを実行できるように。
alpha 2.25
- ディレクトリの削除中、サブディレクトリに含まれるファイルが無くなっていた場合にアクセス違反を起こしていたのを修正。
alpha 2.24
- とりあえずファイルサイズを64ビット対応に。
- ディレクトリまでサイズを表示する意味がわからないので消去。
alpha 2.23
- ビューアが文字コード判別でやけにShift_JISだと判定してしまううっかりミスを修正。
alpha 2.22
- スクロール時に隣のバッファにはみでて描画するのを修正。
- スクロール時にカーソル位置を二度描画するのを一度だけにする。
- バックグラウンド差行中に最後のバッファを削除できていたのを修正。
- その他、細部を調整。
alpha 2.21
- ファイルのコピーや削除をバックグラウンドで行うように。
- 上記に伴い、動作にはpthreadが必要に。
- バックグラウンド動作の中止を行う CANCEL コマンドを追加。初期状態ではCtrl+Cに割り当てています。
- ファイルのコピー時に既にコピー先に同名のファイルがあった場合、Skipを選択すると全部スキップしていたのを修正。
alpha 2.20
- infoでシンボリックリンクのリンク先を表示するように。
- 登録コマンドで$Pを展開する処理に誤りがあったので修正。
- 登録コマンド一覧を表示して$Rを指定していないコマンドを選択後、実行をキャンセルするとフレームのサイズが戻らなかったのを修正。
alpha 2.19
- mvコマンドの処理がコピーして削除という流れになっていたため、遅くなっていたのを修正。renameで済む場合にはrenameで済ませるように。
- サブディレクトリのmvを実行したときに、移動元のディレクトリを削除していなかったので修正。
alpha 2.18
- 他のフレームを消去するコマンド、killotherを追加。Emacsでいう C-x 1 に相当します。キー割り当ては w 1。
- コマンド選択バッファやディレクトリ選択バッファを開いたまま別のフレームに移動してcloseなどを実行するとSEGVしていたのを修正。
alpha 2.17
- 入力候補として空白を含むファイル名を列挙するときの処理の改善。
- 空白を含むパス、ファイルを実行できるように。
alpha 2.16
- ファイル名比較関数の不具合により、インクリメンタルサーチを行っているときにフリーズしていたので修正。
- ファイル名比較関数にエスケープ処理追加。これにより、「[」を検索できるように。あとでコードを整理したい。
- ln、symlnコマンドで表示しているプロンプトをcpと同じものを使いまわしていたので追加。
- リソースのアプリケーション名を「dfx」から「Dfx」に変更。
alpha 2.15
- 期待したフォントがロードできないとアクセス違反を起こしていたので、取り合えず終了しておくように修正。
- s tで更新時刻順にソートするつもりが、アクセス時刻順にソートしていたのを修正。
- filterやmultimarkで[]を使った表現を使えるように。たとえば「*.[ch]」は「*.c:*.h」と同じように振る舞います。しかし、「[」をエスケープするような処理はまだありません。
alpha 2.14
- パーミッション変更ダイアログでTabキーを押すと、何かを補完しようとしてセグメンテーション違反を出していたので修正。
- chdirなどの実行後にステータスバー部分にキャプションが残っていたので修正。0.2.7でつぶしたのが0.2.10の副作用で再発生。
alpha 2.13
- ファイルの更新時刻とサイズを表示するように。
- ファイル名を横スクロールする機能の追加。初期設定では「(」「)」に割り当てています。
alpha 2.12
- コピーなどの上書き確認時、ステータスバー部分にerrnoが0の時の文字列が表示されていたので修正。
- ビューアでpagedownを使ってスクロールさせた時、最後の一回が空振りしていたので修正。これで今夜はホームラン。
alpha 2.11
- ファイル作成、ディレクトリ作成後に表示が更新されなかった不具合を修正。
alpha 2.10
- テキストビューアでTab文字がある行で表示に誤りがあったので細部を調整。
- テキストビューアでpageup/pagedownコマンドが使用できるように細部を調整。
- リンク、シンボリックリンクを作成するコマンドln/symlnを追加。
- コード削減のため細部を調整。
- ファイル(dfx.man)を変更(2005-12-19)。
alpha 2.9
- テキストビューアでTab文字がある行で表示に誤りがあったのを修正。
- 表示ファイルが無い状態でopenなどを実行するとアクセス違反を起こしていたのを修正。
- chmod/chgrpの追加。
- 一行入力ボックスを表示するときに画面がちらつくため細部を調整。
alpha 2.8
- 入力欄の表示中にサイズを変更すると大変なことになる件。
- ファイルのコピー/移動時に既に同じ名前のファイルがあったときに別の名前でコピーする機能。
- 入力欄でTabキーを押すことで入力補完。
- テキストビューアでTabの処理。現在、8桁固定。
- 問い合わせダイアログの表示位置で悪あがき。
- ビューアでもnextflame/prevflame/switchbufferが使用できるように。
- ワイルドカード展開処理の修正。マッチすべきファイルがマッチしないことがあったのを修正。
- バイナリ配布版においてコンパイルオプションの細部を調整。
alpha 2.7
- キー定義ファイルに直接コマンドを記述できるように。
- キー定義ファイルに解釈不能な部分があるとエラーメッセージを出力するように。また、そのまま誤動作することがあったので対処。
- 設定ファイルについて、ホームディレクトリだけではなくて/etc/dfx/の下も読むように。
- コマンド実行後、ステータスバー部分(?)に入力ボックスのタイトルが残っていたのを修正。
alpha 2.6
- バッファの分割時にサイズや属性をコピーできていないケースがあったので修正。
- switchbufferで切替え先のバッファに切替元の属性を反映させるように修正。
alpha 2.5
- テキストビューアで文字コードを自動認識するように。
- 改行コードも認識できるように。
- テキストビューアで文字コードを切り換えられるように。
- テキストビューアで改行コードを切り換えられるように。
- キー定義をバッファ種別ごとに分けて設定できるように。たとえばファイラでのEnterとビューアでのEnterに別のコマンドを割り当てることができます。
- インクリメンタルサーチ中に、通常ファイルで/を押すとopenコマンドが実行されていたためビューアが起動して画面が乱れていたのを修正。
- ビューア起動時に、ファイルが開けなかった場合の処理が抜けていたので修正。
alpha 2.4
- テキストビューアで
- EUC(というかローカルのロケール)
- Shift_JIS
- ISO-2022-JP
を表示できるように。Shift_JISとISO-2022-JPはEUCに変換して描画するので、LANG=ja_JP.eucJPの時だけ動作します。markコマンド実行で文字コード切り換え。
- テキストビューアでウィンドウに納まってしまう程度のファイルを表示して上にスクロールさせようとすると虚数空間に引き込まれていたのを修正。
- テキストビューアで最下行とファイルの読み込み単位が重なったとき、行の途中までしか描画していなかった問題を修正。
alpha 2.3
alpha 2.2
alpha 2.1
- 複数のファイルをマークした状態でマークを解除してコマンドを実行しようとアクセス違反となる不具合を修正。
alpha 2.0
- 枠線追加。
- 入力用テキストウィジェットを埋め込みに変更。
- ドットファイルを非表示にする機能実装。
- フィルタ機能実装。
- ファイルのコピー時に、コピー先を表示している別のバッファの表示を更新しない不具合を修正。
- ファイルの削除時に表示を更新しない不具合を修正。
- ファイルの移動時に表示を更新しない不具合を修正。
- ファイルの移動時に表示を更新しない不具合を修正。
- キー定義にKeySymだけではなくて文字も使用できるように。
alpha 1
動作環境
実行バイナリはlibXaw.so.7にリンクしてます。そのためlibXaw.so.6環境などの方はソースファイルを用いてインストールするか、X11をアップデートしてください。
開発環境
- Fedore Core 8
- Linux kernel 2.6.26rc8
- X.org X11R7.1.1
- Windows XP
- Cygwin
- Cygwin/X X11R6.8.2.0-4
簡単な起動を確認した環境
- SuSE Linux Professional 9.3
- OpenSuSE Linux 11
- RedHat Enterprise Linux 4
- RedHat Enterprise Linux 5
- MIRACLE Linux 2.0
ダウンロード
インストール
ソースファイルからのインストール
- tar xfj dfx*-src.tar.bz2
- xmkmf
- make
- 適当にコピー
実行ファイルからのインストール
- tar xfj dfx*.tar.bz2
- 適当にコピー
不具合
いろいろ。
メールはこちらCopyrigiht © 2005,2006 びい(@nifty ID:RXA01732)