2019年12月12日

先日に引き続きリリース作業。12月に予定されていた大きなものは大方PRODに流れていったので、そろそろ仕事納めも近づいてきた感じがある。

帰宅して、森博嗣さんの笑わない数学者を読む。犀川創平の言葉の選び方と考え方が面白く、このシリーズは度々読み返してしまう。途中、算数の問題がでてきて1時間ほど挑戦してみたけどどうも解けない。明日また解いてみよう。

次に伴名練さんのなめらかな世界と、その敵を買って表題作を読む。世界設定を理解するのに少し時間がかかったけど、繊細さと終盤に一気に広がる情景のコントラストがとてもきれい。

pecoを使ったzshのhistory検索をもう少し便利にする

pecoを使うと,zshのhistoryをインクリメンタルサーチできるので便利.

[Mac][zsh]コマンドのインクリメンタルサーチツールpecoを使ってzshのhistory(Ctrl+r)をpeco表示 | Coffee Breakにプログラミング備忘録


でも,そのhisotryの中には,間違ったコマンドなんかもあって,そういうのをpecoの結果から引き当ててしまうと,コマンドは失敗するし,historyに失敗したコマンドが追加されてあまり良くない.

なので,historyに溜まっているコマンド列を数えて,多い順にソートして表示してやるようにした.

以下の設定を.zshrc内に記述

function peco-select-history() {
    local tac
    if which tac > /dev/null; then
        tac="tac"
    else
        tac="tail -r"
    fi
    BUFFER=$(\history -n 1 | \
        eval $tac | \
	sort | \
	uniq -c |  \
	sort -r |  \
	sed -e 's/^[ ]*//g' | \
	cut -d " " -f 2-100 | \
        peco --query "$LBUFFER")
    CURSOR=$#BUFFER
    zle clear-screen
}
zle -N peco-select-history
bindkey '^r' peco-select-history

調べてみると,uniqコマンドを使うと行の数も表示しながら重複した行をまとめてくれるらしいので,それを使ってソート.
sedとcutで,表示されている行数を削除してやるという方針で書いた.

tmux-powerlineで複数のバッテリー残量表示をできるようにした

tmuxを使ってはいるもののそこまで設定をしていなかったので、これを機にいろいろと設定をすることにしました。
その中でtmux-powerlineの導入に少し手間取ったので、やったことをここにまとめます。

tmuxは1つの端末上で仮想端末を管理することのできるソフトです。
そして、tmux-powerlineはtmuxのステータスバーをカスタマイズすることができるプラグインです。

インストール方法では以下のサイトを見ながら行ったので、そちらを参考にするといいです。

tmux-powerline - Qiita

本題

現在私の環境では、内蔵バッテリーの他に拡張バッテリーを使用しています。
しかしtmux-powerlineではバッテリー残量が1つしか表示してくれません。
バッテリー表示に関するスクリプトはtmux-powerline/segmentsの中にbattery.shがあります。
今回は、そこを書き換えることにしました。

複数のバッテリー表示に使ったもの

今回はacpiコマンドを用いて複数のバッテリー表示を行うことにしました。
acpiコマンドは、Debianの場合apt-getを用いることによってインストールすることができます。

$ apt-get install acpi

このコマンドによって出力されたものをcutコマンドを用いてバッテリー残量のみを切り取りました。
以下が新しく書いたbattery.shです。

HEART_FULL=""
HEART_EMPTY=""

run_segment() {
    output=$(__cutinate)
    if [ -n "$output" ]; then
        echo "$output"
    fi
}

__cutinate() {
    for i in `acpi | cut -f1 -d"%" | cut -f4 -d" "`
    do
        if test $i -gt 50; then #バッテリー残量が50%以下の場合はHEART_EMPTYを表示
            echo -n $HEART_FULL
        else
            echo -n $HEART_EMPTY
        fi
        echo -n " $i% "
    done
}

するとこのようにバッテリーが複数表示されたことがわかります。

f:id:LazyMii:20140306163245p:plain