tmuxのステータスラインの色を起動したホスト毎に変える

自宅でMBAでtmux起動して作業したり、会社のPCでtmuxして作業したり、リモートにsshしてからtmux起動して作業したり、しかも更にそれらを入れ子で行ったり、といったふうに使い方に応じて色んな場所でtmuxを起動してるんだが。たまに今作業してる端末がどこのtmuxなのか勘違いしたまま作業をしてしまい、あれ?てなることがあります。
一応ステータスラインの脇の方にホスト名は表示してるので確認すればわかるんだけど、普段はあまり目に入らない模様。
そんなわけでより目に入りやすいステータスライン全体の色を変えたら良いんじゃないかなってことで試してみた。

設定内容

自分用の設定ファイルは基本githubで管理しててどのホストでも共通のを使ってるので環境変数をみて切り替えるようにしてみた。
以下が ~/.tmux.conf の抜粋。デフォルト(その他サーバ)はマゼンダ、仕事PC(ホスト名:trooper)はシアン、MacbookAirは緑。

set-option -g status-bg magenta
if-shell '[[ "$HOSTNAME" == "trooper" ]]' "set-option -g status-bg cyan"
if-shell '[[ "${OSTYPE:0:6}" == "darwin" ]]' "set-option -g status-bg green"

適用後の見た目

こんな感じ。現在の作業端末がわかりやすくなって満足。

ところでこの入れ子スクリーンショット取ってて気づいてしまったんだが、各ホストで時計ズレ過ぎww
この後ntpdateした上でntpdが起動するようにしておきました(^^;

Qiitaへ移転中

http://qiita.com/items/a538a7aa0342335d922d
新はてダの存在により旧はてダが阻害されてる感に辟易したので脱出中

tmuxでマウスモードのON/OFFを単一キーで簡単に切り替えたい!

tmuxのマウスモードってたまに使いたくなるんだけど常時ONだと邪魔に感じることもしばしば。それでマウス関連の設定を簡単にON/OFF出来るようにしたいなーと思って試行錯誤した歴史。

初期:とりあえずマウス使えるらしいから使ってみよう

マウス関連オプションを全部有効にする設定を ~/.tmux.conf に↓こんな感じに書いていた。

## マウス関連
set-option -gw mode-mouse on
set-option -g mouse-utf8 on
set-option -g mouse-resize-pane on
set-option -g mouse-select-pane on
set-option -g mouse-select-window on

当然これだと常にマウスは有効。でもたまにネイティブのマウス動作を使いたくなった時に詰むので、適当なキーバインドで切り替えたいなーと思い始める。

中期:mとMで切り替えられるようにしてみた

とりあえずデフォルトONのまま、以下のようなキーバインドを更に追加してみた。

# prefix + m/M でマウスのON/OFFが切り替えられるようにする
bind-key m \
  set-option -g mode-mouse on \; \
  set-option -g mouse-utf8 on \; \
  set-option -g mouse-resize-pane on \; \
  set-option -g mouse-select-pane on \; \
  set-option -g mouse-select-window on \; \
  display-message "Mouse: ON"
bind-key M \
  set-option -g mode-mouse off \; \
  set-option -g mouse-utf8 off \; \
  set-option -g mouse-resize-pane off \; \
  set-option -g mouse-select-pane off \; \
  set-option -g mouse-select-window off \; \
  display-message "Mouse: off"

bind-keyのコマンドが \; で繋ぐと複数コマンドを実行できるという発見に喜びつつも、それはすぐに落胆に変わる。この設定には欠点があったのだ!
やってみてすぐに気がついたんだが、C-z した後の M(Shift-m) は非常に押しづらいという…。でもマウスを連想させる m/M 以外のキーに変えたら多分僕には覚えられないことも分かっていたので他のキーに変えることも出来なかった。
他にいい案が思い浮かばなかったのでしばらく運用してみることした。

最新版:mだけで切り替えたい!

やっぱり C-z M の入力は僕には敷居が高すぎた。
1週間もしないうちに嫌になった。前回は諦めたけど何とか覚えるキーを1つだけで切り替えが出来ないかと考え始める。
単一キーでON/OFFを切替えるならif文が必要だと思って調べたらif-shellというコマンドを発見した。でもif-shellは複数コマンド群を纏めて実行することは出来ないっぽいので、bind-keyにif-shellを繋げるやり方にしてみた。ちょっと長くなったけど上手く行った。

# マウス関連(デフォルトはOFFにしておいて、prefix+mでマウスモードを切替える)http://bit.ly/Z8fLmm
set-option -gw mode-mouse off
bind-key m \
  if-shell "tmux show-options -gw mode-mouse | grep off" "set-option -gq mouse-utf8 on" "set-option -gq mouse-utf8 off" \;\
  if-shell "tmux show-options -gw mode-mouse | grep off" "set-option -gq mouse-resize-pane on" "set-option -gq mouse-resize-pane off" \;\
  if-shell "tmux show-options -gw mode-mouse | grep off" "set-option -gq mouse-select-pane on" "set-option -gq mouse-select-pane off" \;\
  if-shell "tmux show-options -gw mode-mouse | grep off" "set-option -gq mouse-select-window on" "set-option -gq mouse-select-window off" \;\
  if-shell "tmux show-options -gw mode-mouse | grep off" "set-option -gw mode-mouse on" "set-option -gw mode-mouse off"

これで prefix + m だけで、マウスの有効無効が切り替え出来るようになった。快適!
ついでにステータスラインのどっかに #(tmux show-option -gw mode-mouse|sed 's/mode-//;s/ /:/') とかを足しておくと、「mouse:off」とか「mouse:on」とかって風に今のマウスモードが確認できて便利です。
ちなみに、上記設定の最後の1つ以外の set-option で -q を付けてるのは、どうやらif-shellの第2第3引数のtmuxコマンドは第1引数のシェル実行完了後に非同期で実行しされるようで、切り替えを実行する度にステータスラインに表示されるメッセージ(最後に実行されたset-optionの出力)が変わってウザいからである。

Qiitaに移転

http://qiita.com/items/7b15e18ca8e072c1dc57
新はてダの存在により旧はてダが阻害されてる感に辟易したので脱出中

iPhone/iPadのChromeが落ちる問題→解決

今朝、iPhoneChromeがバージョンアップしていたのでアップデートをしたらChromeがすぐに死んで使い物にならなくなりました。
症状は「起動後5秒程で死ぬ」これだけ。どんな操作をしようと、起動後何も触らなくても5秒経つと死ぬ\(^o^)/
しかも再インストールしても症状変わらず死ぬww

問題のバージョンは3月4日リリース 25.0.1364.86 って奴です。iPhoneというかiOSChromeですね、iPadも同じです。

対応方法(簡単だが再インストールが必要な手順)

色々試してみたところ、初回起動時に表示されるクラッシュレポート*1有効化のチェックボックスをONにしてやると直る。

この同意画面は初回起動時しか出ないようなので、死にまくって困ってる人は一度アプリを削除して再インストールしてチェックして同意をやりなおせばOK。
一度チェックして同意したら、それ以降はもう普段通りなんの心配もなく使えるようになります。

対応方法(再インストール不要だが、難しい手順)

再起動しなくても直せることが分かったのでその手順も書いときますね。

  1. Chrome起動
  2. ツールバーの「三」ボタンをタップ
  3. 「設定をタップ」(下の方)
  4. 「プライバシー」をタップ(詳細設定の2番目)
  5. 「使用状況データの送信」をタップ(下の方)
  6. 「常時」もしくは「Wi-Fi接続時のみ」のどちらかをタップ

これらを5秒以内に行えば再インストールなしで復活出来ます。ちなみにかなり難しいですw下手なアクションゲームよりムズいです。僕は10回くらいやってやっと成功しました。メニューの配置を暗記して画面が切り替わる前に指を構えておくのがコツですw
一応成功できたのでアリな方法ということで紹介しておきます、頑張ってくださいw


ちなみに、現在問題なく使えてる人もこの最後の設定項目で「許可しない」にしてしまうと、次にChromeを完全終了&起動した時点から5秒ゲームが開始されてしまうのでご注意を(^^;

Googleも問題を認識

Google側もこの問題をバグとして認識してるらしいですが、Appleの審査もあるので修正版のアップデートは数日後になりそうですね。

ていうか開発陣はこんな致命的なバグに誰も気づかずにリリースしちゃったとか信じられなったんだが、事情を想像するに開発者やテスターの人達はその性質上みんなクラッシュレポートONでやってたから気づかなかったということなのかな?それだとちょっと納得だが(^^;
あとAppleの審査の人も気づかなったとか、障害レポート送らない人だけ再現ってのはテスターの盲点だったんだね…。

修正版リリースされました(追記3/13

確かに直ったみたいですね。

*1:「使用統計情報と障害レポートをGoogleに自動送信してGoogle Chromeの性能向上に役立てる」ってやつ

脱獄アプリメモ for iOS6.1

iPhone5の脱獄が出来るようになったけど、公式でテザリングも出来るようになるなど過去脱獄アプリで実現していた機能も主要なところは大体公式に取り入れられて来たのでもう脱獄しなくてもいいかな?と思いながら、過去に作った自分用の脱獄アプリメモを眺めて脱獄時代を思い出してたんだが、やっぱ細かい使い勝手系はあると便利だよなぁ…。

そんなわけで、今時でも脱獄したらどんなメリットがあるのかお勧めアプリをまとめてみました。
有料・無料はごちゃまぜです。

おすすめアプリ

  • AndroidLock XT ロック画面をショルダーハックリスクが高い数字入力から、スマートなパターン入力にする
  • NCSettings 通知センターに各種ON/OFFボタンを表示
    • 設定アプリの通知から明示的に通知センターをONにすることで利用可能になる
    • デフォはボタン多すぎなので、幅5でWiFi・明るさ・回転ロック・自動ロック・電源・ssh に絞って使ってる
  • SpringPrefs for NotificationCenter IPや空きメモリ・等を通知センターにシンプル表示(設定>通知ONを忘れずに)
  • StatusTab フルスクリーンで通知センターを出す時出てくるタブをステータスバーにする(ステータスバーがすぐに確認できるようになるので便利)
  • DietBulletin 通知バナーをステータスバーのサイズにしてくれる
  • Swipebright ステータスバーの左右スワイプで明るさ調整ができるようになる
  • Infinifolders フォルダにいくつでもアプリが入れられるようになる(アイコン配置をリストアする機能もあるので入獄→再脱獄時に最初に入れると良い)
  • Infinidock ドッグアイコンを5アイコンにしたり横スクロール可能にしたりする
  • PlayAwake 時計アプリのアラームでiPod内の曲を選択できるようになる
  • AnyRing 着信音をiPod内の曲やYoutubeから簡単に作成・設定できる
  • MarkThatMessage SMSの全メッセージに日時が表示されるようにする(デフォでは連続メッセージに表示されない)
  • Cyntact 連絡先リストに写真が表示されるようになる
  • OneByOne Contacts 電話帳の登録をスワイプで削除可能に(設定でConfirmはオンにしておく方が安全)
  • iFile iPhone内のファイルをブラウズ
    • 備忘録:VoiceControlを無効にする方法(設定の一般でSiri無効と合わせればホーム長押しがうるさいのを完璧に抑制出来る)
      • /System/Library/CoreServices/SpringBoard.app/N[数字]AP.plist をプロパティリーダーで開く
      • capabilities/voice-control をオフにしてSpringBoard再起動
    • 備忘録:シャッター音など(以下のフォルダにシステム上の色んな音声ファイルがあるのでこれを消したり差し替えたりすることで音を消したり変えたりが出来る)
      • /System/Library/Audio/UISound/photoShutter.caf(カメラのシャッター音)
  • CloakStatus ステータスバーに日付や曜日を表示&不要なアイコン非表示(まだCydiaに無くTwitterでdeb配布してるのを落としてiFileでインストール)
  • NoNewsIsGoodNews 邪魔なNewsstandを消す
  • Pull To Dismiss 下に引っ張ってキーボード格納
  • SwipeShiftCaret 文字入力欄内ならどこでも左右スワイプでカーソル移動ができるようになる(設定でCaretMagnifierをONにしておく)
  • ChargingBackground 充電中も壁紙を表示出来るようにする
  • MapsOpener デフォルトの地図アプリをGoogleMapsにする(連絡先などの住所クリックでGoogleMapが開くようになる)
  • SwipeAway マルチタスクバーのアイコン上下スワイプでアプリを終了できる(デフォ設定は下スワイプで個別終了/上スワイプで全終了だが、上下逆の設定で使ってる)
  • MultiStorey マルチタスクバーを2段にする(一覧性が上がりアプリ履歴の発見が捗る
  • LowPowertBanner バッテリー警告を邪魔なポップアップではなくバナー通知にする(アプリの利用が邪魔されない)
  • Software Update Killer ソフトウェアアップデートが出てもバッジを表示しないようにしたり
  • tsProtector P Skypeなど脱獄検知で使えなくなるアプリを使えるようにする
  • LandscapeVideos 動画再生を自動で横向きにして開始する
  • AdBlock Safari上に表示される広告を消す
  • Flashorama カメラアプリのパノラマ中にLEDを付けられるようにする(純正はLED+パノラマが出来ない)
  • Dimmer 最低輝度よりも暗く出来るようにする(輝度ゼロまで行けちゃうから操作不能にならないよう注意、安全装置としてデフォでボリュームアップx4に明るさ回復が割り当て済み)
  • Activator ジェスチャーに機能を割り当てるミドルウェア(以下のアクションを別途インストール・設定している)
    • LastApp 直前のアプリを起動(ホーム画面上でのホームボタンに割り当ててる)
    • UIRotation for Activator 画面を回転させるアクション、アプリ毎・回転ロック状態のまま回せるので横固定も出来る(アプリ上でのホームボタン長押しにLandscapeLeftを割り当ててる)
    • Display Recorder iPhone画面を録画する(常時のボリュームボタン上下同時押しに録画切り替えを割り当ててる)
    • Dimmer (Darken action) 画面を一気に暗くする(常時のステータスバー左スワイプに割り当ててる)
    • Dimmer (Safety feature action) 画面を一気に明るくする(常時のステータスバー右スワイプに割り当ててる)
  • MobileTerminal デバイス単体で動くターミナル
    • mobileとrootのパスワードは変えておく(ssh入れてなくてもとりあえず変えておく)
    • 備忘録:CydiaからAptitude入れて aptitude install apt してとりあえずaptが使えるようにしとくと何かと便利
  • OpenSSH sshサーバ(起動・停止はNCSettingsのトグルで行う)
    • mobileとrootのパスワードも変えておくのを絶対忘れずに!

昔は入れてたモノ

  • WinterBord依存系は重くなったり不具合出たりとか色々ウザいからもう入れない
    • Silent Camera Theme カメラのシャッター音を無音にする(iFileで音声ファイルをリネームして対応
    • Silent Audio Rec Theme 動画・音声の録音開始音を無音にする(iFileで音声ファイルをリネームして対応
    • Disable Voice Control ボイスコントロールを無効にする(iFileでplist編集することで対応するようにした
    • Mario Sounds 音をマリオにする(公式iOSで着信音設定できるようになったし、それ以外でもiFileで差し替えられる
  • MyWi テザリングアプリ(公式テザリングがあるからもう要らない
  • My3G 3G利用に制限があるアプリを騙して3Gでも使えるようにする(最近必要性を感じなくなってきた
  • SBSetting 要らない機能も多いしダサいので、今はシンプルなNCSettingに移行した
  • Zephyr マルチタスクジェスチャーでホームボタン要らず(ホームの効きが悪くなった時に使ってた
  • iBlacklist 着信拒否を設定(課金がCydiaじゃないのが何か嫌
  • CyDelete 脱獄アプリを長押しで削除できるようになる(そもそも削除することなんて滅多になかった
  • FakeLocation 位置情報を詐称できるようにする(必要性を感じなくなった
  • NoSpot たまにSpotlight検索使いたくなるときもあるし消さなくてもいいかなって
  • Icon Renamer 入れてみたもののアプリアイコン名を変えるシチュエーションが無いことに気がついた
  • QuickBrightness 明るさ調整バーをすぐに出す(Activatorで割り当てて使ってたがあんま使ってない事に気がついた
  • MultiIconMover アイコンを同時に複数個移動できる(必要性を感じなくなった
  • BrowserChanger デフォルトブラウザアプリを変更する(必要性を感じなくなった
  • Wi-Fi Sync 無線でiTunesと同期できるようになる(もう公式で出来るし
  • Synchronicity/FreeSync 同期中にiPhone操作が出来るようになる(もう公式で出来るし
  • AutoProtect 特定SSIDWiFi接続時はロック解除のパスロックを不要にする(AndroidLock入れてると解除楽なので要らない
  • AddCallHistory 着信履歴を自在に編集(捏造)できるようにする(必要性を感じなくなった
  • StatusBarCustomClock4 ステータスバーに日付や曜日を表示(CloakStatusへ乗り換えた
  • AppInfo インストールアプリの一覧を作る(ここにメモるようにしてから不要になった
  • KillBackground マルチタスクバーに全終了ボタンを追加する(SwipeAwayの方が便利なので乗り換えた
  • Brightivator 明るさ調整アクションを追加する(Swipebrightの方が気持ちよく使えるので乗り換えた