目次はこちら [2010-01-22-1].
GUI で作業しているときに急に CUI に移りたくなる場合や,あるいはその逆の場合がちょくちょくある.そのための手段を仕込んでおく.
まず GUI → CUI の方.基本的には,GUI で開いているフォルダをカレントディレクトリとしたシェルを起動できればよいだけなのだけど,せっかくなので既に起動している screen の中に開きたい.
というわけで,まめFile [2010-01-30-1] に以下のようなクイックランチャを登録しておく:
new_screen.sh [この記事の公開時の版] [最新版] は, /usr/bin/screen を -X オプション付で実行することで,起動中の screen セッションにコマンドを送りつける.指定されているコマンドは eval "chdir $PWD" screen "chdir $HOME",つまり eval に続く 3 つのコマンドを順に実行することになる.
chdir コマンドによって まめFile で開いていたフォルダ ($PWD として受け取れる) をカレントディレクトリとし,次の screen コマンドで新しいウィンドウを開く.この時点で当初の目的はとりあえず果たせたのだが,このままだとこの screen セッション自体のカレントディレクトリが変わったままになってしまう.つまり次に screen 上で新しいウィンドウを開く操作をしたときに,いま開いたディレクトリになってしまう.それでは困るので,再び chdir コマンドで $HOME に戻しておく.「戻しておく」といっても元々 $HOME にいたと信じる根拠はどこにもないのだが,私自身は普段 screen を $HOME 以外で動かすことがないので,とりあえずこれで困らない.
で,これで終わってもよいのだが,screen の動いている putty を前面にポップアップさせるために winactivate.vbs [この記事の公開時の版] [最新版] を呼んでいる.
蛇足だけどちょっとしたミソなのは,起動コマンドが sh.exe ではなく run.exe である点.普通に sh.exe (= bash.exe) とか zsh.exe を起動してしまうとコマンドプロンプトのウィンドウ (いわゆる DOS 窓) が一瞬開いてしまって鬱陶しい.run.exe でそれを回避できる.
以上の方法は まめFile に限らず,run.exe を起動フォルダを指定しながら引数つきで実行できさえすればよいので,他の多くのファイラ (というかファイラに限らず任意のソフトウェア) にも適用できるんではないかと思う.
CUI → GUI の方はそれほどややこしくない.まめFile 自身に,外部アプリケーションからタブを開くための MameFile5.exe が付属してくるので,それを使えばよいというだけの話.強いて挙げるなら,Cygwin で指定したディレクトリを Windows のパス名に変換するために cygpath をかますところがミソかな.
mamefile [この記事の公開時の版] [最新版] のようなスクリプトを,Cygwin 上のシェルからパスの通った場所に置いておく.
% mamefile some/dir
とかすれば,起動中の まめFile の新タブとして開かれる.引数を指定しなければ,新しいまめFile が起動する.
最終更新時間: 2010-01-31 13:20
* [asJepfjpa2i] <a href=http... (2016-08-03 23:24:38)