Skip to content

teknocat/electron-ttf

Repository files navigation

Electron TTF (Tiny TF)

screenshot

概要

いわゆる2画面ファイラ。

X680x0 用アプリケーションである TF.x の頃から2画面ファイラを使い続け、未だに他のファイルマネージャに慣れない私が、 Linux 環境でも2画面ファイラを使いたくなったので、Electron と React の勉強を兼ねて作り始めたもの。

基本的には AKT氏作の あふw をリファレンスとした劣化コピー、というスタンスなので、本家が使える環境ではそちらを使ってください(作者もそうしている)。

「あふw」の READMEW.TXT より引用。まさにこれが開発動機であり、ある種の呪縛でもある。

  卵からかえった雛鳥が最初に見たものを親と思うように、私が最初に
  使用したファイラーが TF.x でしたので、これ以外のモノは考えられない
  体となってしまったようです。

なお、開発者がこれ以外でのキーバインドであふを使ったことが無い、という理由により、 いわゆる TF.x 互換モード + 101 キーモードのキーバインドになっている。

起動方法

$ git clone git@github.com:teknocat/electron-ttf.git
$ cd electron-ttf
$ npm install
$ npm run dev

あるいは、アーカイブを展開して実行ファイル(ettf/Electron TTF.exe)を起動。

実装済機能

キー操作

あふ準拠 (※一部機能の相違有)

  • / : カーソル移動

  • / / Tab : 相手窓にカーソルを変更

  • a / Home : アクティブ窓の全ファイルのマーク、マーク解除(トグル動作)

  • A / Shift+Home : アクティブ窓の全アイテム(ファイル、ディレクトリ)のマーク、マーク解除(トグル動作)

  • c : マークされたファイル、ディレクトリを相手窓にコピー

    • ファイルが存在している場合の確認ダイアログで、上書きかファイル名を変更してコピーするか選択可能
      • 新しければ上書き: 対象ディレクトリが新しい場合に上書き
      • 新しければ上書き(サブディレクトリ対象): 対象ディレクトリに関係なく、サブディレクトリ、ファイルが新しいファイルを上書き(rsync -u)
    • ファイルが存在している場合の確認ダイアログにて、Shiftを押しながらOKを押すことで、 それ以降のダイアログを省略(すべてOKを押したことにする)
  • C :

    • マークあり:登録パスへのコピー
  • e : 設定テキストエディタの起動

  • f : ファイル、ディレクトリのインクリメンタルサーチ

  • h : 履歴からのディレクトリ移動

  • j : 登録パスリストからのディレクトリ移動

  • J : 指定ディレクトリへ移動

  • k : マークされたファイルを削除

    • 確認ダイアログの仕様はコピーと同様
  • m :

    • マークなし:ディレクトリ作成&作成ディレクトリへ移動
    • マークあり:相手窓にファイル、ディレクトリを移動
  • M :

    • マークあり:登録パスへの移動
  • o : アクティブ窓のディレクトリを相手窓のディレクトリに変更

  • O : 相手窓のディレクトリをアクティブ窓のディレクトリに変更

  • q : 終了

  • Q : 設定保存なし終了

  • r : ファイル、ディレクトリ名、権限、ファイルタイムスタンプ変更

  • s : ファイルソートタイプ変更

  • v : 内蔵ビューアの起動 ※現時点はテキストビューアのみ

  • x : カーソル位置のファイル、ディレクトリを引数にコマンド実行

  • X : コマンド実行

  • z : 設定画面起動

    • 設定項目
      • 端末エミュレータ: 端末エミュレータ起動時に使用するコマンド名
        • 初期値(Windows): start cmd.exe
        • 初期値(それ以外): xfce4-terminal --working-directory=$P ($P は対象ディレクトリのフルパスを展開)
          • 例えば CentOS の場合は xfce4-terminalgnome-terminal に変更する
      • 101キーモード: 一部のキーバインドを101キー(US)仕様にする(※要再起動)
        • アプリケーション名、バージョン表示: /]
        • カーソル位置のパスをクリップボードにコピー: Alt+_Alt+/
      • 監視除外ディレクトリ: ディレクトリ内のファイル更新に合わせて再読み込みするための監視動作を行わないディレクトリをカンマ区切りで指定
      • タイトルバーに現在のディレクトリパス情報を表示
      • 登録パス: 作業ディレクトリの移動や、ファイル、ディレクトリのコピー、移動先として登録しておくパスリスト
      • テキストファイルパターン: 内蔵ビューアでテキストファイルとみなすファイル名パターン(正規表現)
      • テキストエディタ: e で起動するテキストエディタ ($P は対象ファイルのフルパスを展開)
  • Ctrl+英数記号 : 指定英数記号で始まるファイル、ディレクトリにカーソルを移動

    • Shift を組み合わせたキーにも一部対応
    • Window Managerのキーバインドとぶつかる組み合わせあり
  • \ : ルートディレクトリに移動

  • / (101 キーモード有効時は ]) : アプリケーション名、バージョン表示

  • : : ファイル・ディレクトリマスクの設定(デフォルトは *)

  • Enter

    • ..: 上位ディレクトリへの移動
    • ディレクトリ: 指定ディレクトリへの移動
    • ファイル: ファイル名に対応した内蔵ビューアを起動
      • テキストビューア
        • 対応文字コード
          • UTF-8
          • Shift_JIS
          • EUC-JP
          • JIS
      • 画像ビューア
        • PNG
        • JPEG
  • Ctrl+Enter : デスクトップシステムで定義された動作を実行

  • PageUp / PageDown / Ctrl+↑ / Ctrl+↓ : カーソルをページ単位で移動

  • Backspace : 親ディレクトリへ移動

  • End : 一覧の再読み込み(アイテムマーク解除)

  • Ctrl+End : 一覧の再読み込み(アイテムマーク保持)

  • Shift+End : 非アクティブ窓一覧の再読み込み(アイテムマーク解除)

  • Ctrl+Shift+End : 非アクティブ窓一覧の再読み込み(アイテムマーク保持)

  • Space : アイテムマーク、マーク解除(トグル動作)

  • Ctrl+Space / Shift+Ctrl+Space : 上下マーク位置からの範囲マーク

  • Alt+\ (101 キーモード有効時は Alt+/) : カーソル位置のパスをクリップボードにコピー

    • \が判別出来ないため、実質Alt+¥として動作

オリジナル

  • 1 : ファイル表示タイプの変更
    • ファイルサイズ
    • ファイル所有者
    • ファイル権限
  • Ctrl+\ : ユーザホームディレクトリへ移動
  • Ctrl+Shift+Enter : カーソルがディレクトリの場合、設定した端末エミュレータを起動

コマンドラインオプション

  • -L ディレクトリ 左窓に表示するディレクトリを指定
  • -R ディレクトリ 右窓に表示するディレクトリを指定
  • --debug DevToolsを開く
  • --help ヘルプ表示
  • --version バージョン表示
  • --enable-copy-to-fuse FUSE ファイルシステム(gvfsなど)に対するコピーを有効にする
    • CentOS7でファイルが壊れる現象が発生したため、デフォルトではオフにしている。 事前にrsync/cpでコピーを実施し、問題が発生しない環境でのみ有効にすること

その他機能

  • 表示ディレクトリのディレクトリ数、ファイル数表示
  • マークしたディレクトリ数、ファイル数、ファイルサイズ表示
  • 設定保持(ローカル)
    • 保存内容
      • 最後に開いていたディレクリ
      • ファイル表示タイプ
      • ファイルソートタイプ
  • ディレクトリ変更監視
  • カーソル位置の情報をステータスバーに表示

制限事項

  • 作者が英語キーボードユーザのため、日本語キーボードについては調整出来ていない可能性あり
  • gvfsなどFUSEを使ったファイルシステムに対してはコピー処理を行わないようガードしている(CentOS7でファイルが壊れる現象が発生したため)
    • コピー処理を有効にしたい場合は --enable-copy-to-fuse オプションを指定
    • cifsマウントしたファイルシステムは問題ない
  • ファイルシステムをまたいだ移動処理が出来ない(node.js モジュールの制限)
    • 外部コマンドを使うことで一旦回避
  • すでに存在しているディレクトリに対する移動については、移動先が空ディレクトリのみ可能(内部で呼んでいる mv の制約)
  • Windows 版に関する様々な制約
    • Windows固有のファイル情報表示、操作が出来ない
    • ファイル操作中は停止出来ない
  • macOS 環境を持っていないため未確認
  • ファイルマスク機能はディレクトリにも作用
  • 大量のディレクトリ、ファイルがあるディレクトリの表示、及びカーソル移動が遅くなる
  • 日本語キーボードにおいて Alt+\ Alt+_ が動作しない

未実装で実装したいもの(順不同)

  • エンターキーでの拡張子別ビューア
    • テキストファイル
    • 画像ファイル
  • 再帰操作を自前で実装
    • 現在は外部コマンド、node モジュールにまかせている
  • ファイル、パス入力時の補完機能
  • ファイル検索
  • プログラム実行
  • エディタ起動
  • ディレクトリが存在するファイルシステムの全体容量、空き容量表示
  • smbスキーマ対応
  • 登録済ディレクトリへの作業ディレクトリ移動
  • 登録済ディレクトリへのファイルコピー/移動
  • 仮想フォルダ(アーカイバ)機能

実装予定のないもの

  • 内部命令系
    • 外部シェルとの組み合わせで

無保証

このプログラムは無保証です。このソフトウェアを使用した結果生じた、いかなる損害に対しても、作者は何らの責任も負いません。

ライセンス

The software is available as open source under the terms of the MIT License.

作者

teknocat teknocat@gmail.com