iTerm2を便利に使うマネージャーのようなものを作った


##i-manager(airfile)



###追記

マネージャーを機能毎に分割しました。

[https://github.com/syui/airchrome.zsh](https://github.com/syui/airchrome.zsh)

[https://github.com/syui/airgoogleplus](https://github.com/syui/airgoogleplus)

[https://github.com/syui/airkeepass](https://github.com/syui/airkeepass)


###はじめに
[i-manager](https://github.com/syui/airfile)は、[percol](https://github.com/mooz/percol)を利用したiTerm2の専用マネージャーです｡

ウィンドウの大きさと位置を保存し､そこに移動できる機能のほか､ウィンドウの透明度を調整することができます。

また、ShellScript,AppleScriptで書かれているスクリプトを簡単に登録、実行できるようにしました。今回は､一応､拡張性も考えて作りました｡

テーマファイルが用意されており､初心者の方は､`percol`をインストールすれば､すぐに使えるようになっています。

上級者の方は､テーマを変更して使ってみてください｡`theme/all`では、すべての機能を有効にします｡

最初は､外部ツールに依存しない形で作っていましたが､途中から`percol`を採用したほうが分かりやすいだろうと思い､外部ツールに依存した形になりました｡


[https://github.com/syui/airfile](https://github.com/syui/airfile)

###iterm-managerに必要なもの

```
$ sudo pip install percol
```

###iterm-managerの使い方

####ダウンロードと実行

```
$ git clone https://github.com/syui/airfile

$ cd !$:t

$ ./i-manager
```


####デフォルトの機能


|項目|内容|
|---|---|
|:|終了します|
|-w 1|記憶した場所「その1」にウィンドウを移動させます|
|-w 2|記憶した場所「その2」にウィンドウを移動させます|
|-i 1|ウィンドウの位置と大きさを「その1」に保存します|
|-i 2|ウィンドウの位置と大きさを「その2」に保存します|
|-v|iTerm2からボリュームを調整します。|
|-s|iTerm2からシャットダウンを行います。ウィンドウは保存され次回起動時に有効です|
|-sys|iTerm2からシステム環境設定を開きます|
|-wifi|iTerm2からWi-Fiの有効無効を切り替えます|
|-auto|オートモードを使用します。項目を選択しても「percol」の選択画面が続きます|
|-theme|テーマの変更です。上級者の方は､「all」を選択してください|
|-delete|追加した個人ファイルをすべて削除します|
|-exit|iterm-managerを終了します|

####すべての機能

|項目|内容|
|---|---|
|-g s|「w3m」でGoogle検索を実行します|
|-g i|「w3m」でGoogleの画像検索を行います。HTMLタグを取得します。JSONを扱う「jq」が必要です|
|-g en|「w3m」でGoogle翻訳の英語->日本語を実行します|
|-g jp|「w3m」でGoogle翻訳の日本語->英語を実行します|
|-c|「growlnotify」でFinderのコピー終了を通知します|
|-r|「Google Chrome」のリロードを定期的に実行します|
|-vbox|「VirtualBox」のイメージを起動します|
|-vbox-make|「VirtualBox」のイメージを作ります|
|-pass|「Keepass」のデータベースファイルからIDとパスワードを読み取り､「Google Chrome」で自動ログインを試みます。この際、「kptool」が自動ダウンロードされます。|
|-pass-kdb|データベースファイルのパスを更新します|
|-pass-test|データベースのサンプルを使ってコマンドラインからのログインをテストします|
|-clip|「ClipMenu」から1行ごとのクリップボード履歴を参照します|
|-chrome on|「Google Chrome」のブラウジングをzshより行います。詳しくは下記です。「gauche」が必要になります
|-chrome off|onにより書き込まれた設定を設定ファイルから削除します|
|-chrome feedly|Chromeで現在開いているページをFeedlyに登録します|
|-chrome url|Chromeで現在開いているページのタイトルとURLを取得します|
|-ffmpeg|ffmpegを使って､メディアファイルを変換します「ffmpeg」が必要になります|
|-exit|iterm-managerを終了します|

####テーマ:allに必要なものをインストール

```
$ brew install w3m jq gauche ffmpeg mplayer swftools youtube-dl

$ pip install pycrypto googlecl

# GUIツールのイントール
$ brew cask install google-chrome clipmenu keepassx growlnotify
```

####拡張

`iterm-manager`の仕組みは簡単です｡

1. まず、テーマファイル`theme/default`が読み取られ､`percol`に渡されます。

2. 次に､`:`より前の文字列が処理に渡されます。`percol | cut -d ":" -f 1`

3. 最後に､渡された文字列により､各スクリプトが実行されるという流れになっています｡

よって、拡張する場合､`theme/origin`と`iterm-manager`を編集すればOKです。


現在は､以下の様な感じになっています｡


```bash:iterm-manager/theme/origin
sample: Start, Sample Script.
-theme: Theme Change.
-exit: Exit Quit
```

```bash:iterm-manager/iterm-manager
"sample")
$scpt/sample_script.sh
;;
 
"1")
echo "ここにコマンドを入れます"
echo test 1 ... done.
;;
 
"2")
echo "ここにコマンドを入れます"
echo test 2 ... done.
;;
 
*);;
esac
```


なお、テーマファイルの選択は､`-theme`で検索をかけて選択してください｡`3`または、`origin`になります。

###chrome-mode

`vi-mode`のキーバインドにて`Google Chrome`を操作しようという試みです｡

`vi-mode`への移行は､`esc`や`jj`を押します｡

|キー|効果|
|---|---|
|j|下にスクロール|
|k|上にスクロール|
|h|戻る|
|l|進む|
|t|タブを閉じる|
|f|f{2文字}|
|b|続けてキー{Enter,Esc,Delete,Shift}を押す|
|i|vi-modeの終了|


###その他

今回､試しに[GitHub Pages](http://syui.github.io/i-manager/)を作ってみました｡

```
$ git branch -r

$ git checkout gh-pages
```

カスタマイズも簡単そうですし、いいですね｡


###変更点

1. VirtualBoxのイメージをコマンドラインから作成するスクリプトを追加しました
>`-vbox-make`
>これにより、コマンドラインからのイメージ作成が容易になります

2. VirtualBoxのイメージを選択する際、リストを表示するようにしました
>`-vbox`
>これにより、イメージの起動が容易になります

3. Auto-Modeを追加しました
>`-auto`
>これにより、動作を実行しても選択画面が続きます

4. Chrome-Modeのキー入力を改善しました
>`-chrome on`
>Vi-Modeが継続するようにしました
>一部パスが間違っていた問題を修正

5. Keepassのコマンドラインからの自動ログインを改善しました
>`-pass`
>初回時に必要な情報入力とログイン処理が分離していた問題について、これを1回で繋げるようにしました。これにより、初回時にも情報の登録とログイン処理がスムーズに行えます

6. Keepassのコマンドラインからの自動ログインにテストを追加しました
>`-pass-test`
>これにより、データベースのサンプルファイルにより、自動ログインを試みます。サンプルのIDとパスワードは、コマンドラインに表示されますので、それを使ってロックを解除してください。

###To-Do

ブラウザの読み込み具合から、keepassを使った自動ログインが上手くいかない場合があるので､処理を確実にする
>`-pass`
>IDの貼り付け処理をキーを使って行うため、`scripts/chrome_selection_paste.sh`を使った処理に変更してみる

...ok

GitHub Pagesをモバイルで表示した場合､一部レイアウト崩れがあるので､修正する
>`.pre`
>幅の設定を全て消してしまったので､その影響が出ているのかも。

...ok

###お願い

自分の環境でしか動作確認していないので、動いた、動かなかったを教えてもらえると嬉しいです｡