毎日もくもく

毎日もくもく

主に備忘録と日記

Powerline を導入する(tmux のステータスラインのカスタマイズ)

前の記事: xartaky.hatenablog.jp

zsh, tmux に Powerline を入れたので設定をいじる. といっても zsh の方は文句ないし,tmux の方も色は文句ないので,tmux のステータスラインをいじっていく. インストールガイドのこれを見てやっていく.
設定ファイルをいじる前に,元からある設定ファイル ~/.local/lib/python3.6/site-packages/powerline/config-files/*.config/powerline にコピーする.

$ cp -r ~/.local/lib/python3.6/site-packages/powerline/config-files ~/.config/powerline

今後は ~/.config/powerline 以下のファイルをいじる.
~/.config/powerline を見ると,config.json というファイルがあり,このファイルで,どの設定ファイルを読むか決めている. config.json の中身を見ると,tmux に関するところでは以下のようになっている.

"tmux": {
  "colorscheme": "default",
  "theme": "default"
},

自明に “colorscheme” は色について,"theme" はステータスラインで表示するものについて設定していることが分かる. 今回は色はいじらないので,"theme" だけいじる.
tmux の theme 設定ファイルは ~/.config/powerline/themes/tmux に入っている. 最初は default.json だけ入っていて,上記の config.json では "theme": "default" として default.json を指定している.
ステータスラインをいじっていくので,まずは default.jsonmytheme.json としてコピーして,mytheme.json をいじっていく.

$ cp default.json mytheme.json

特にいじっていない mytheme.json(つまり default.json)は拙者の環境では以下のようになっていた.

{
    "segments": {
        "right": [
            {
                "function": "powerline.segments.common.sys.uptime",
                "priority": 50
            },
            {
                "function": "powerline.segments.common.sys.system_load",
                "priority": 50
            },
            {
                "function": "powerline.segments.common.time.date"
            },
            {
                "function": "powerline.segments.common.time.date",
                "name": "time",
                "args": {
                    "format": "%H:%M",
                    "istime": true
                }
            },
            {
                "function": "powerline.segments.common.net.hostname"
            }
        ]
    }
}

これを見ると

  • powerline.segments.common.sys.uptime
  • powerline.segments.common.sys.system_load
    • Return system load average
  • powerline.segments.common.time.date
    • Return the current date
  • powerline.segments.common.net.hostname
    • Return the current hostname

といった segment が読み込まれていることが分かる. これに通信の状態(powerline.segments.common.net.network_load)やバッテリーの残量(powerline.segments.common.bat.battery)などを加えた. 最終的に mytheme.json は以下のようになった.

{
    "segments": {
        "right": [
            {
                "function": "powerline.segments.common.sys.uptime",
                "priority": 60
            },
            {
                "function":"powerline.segments.common.sys.cpu_load_percent",
                "before": "CPU:",
                "width": 7,
                "align": "c",
                "priority": 50
            },
            {
                "function":"powerline.segments.common.sys.system_load",
                "before": "System:",
                "width": 3,
                "align": "c",
                "priority": 50
            },
            {
                "function":"powerline.segments.common.net.network_load",
                "width": 15,
                "align": "c",
                "priority": 40
            },
            {
                "function": "powerline.segments.common.bat.battery",
                "before": "Battery:",
                "width": 16,
                "align": "c"
            },
            {
                "function": "powerline.segments.common.time.date"
            },
            {
                "function": "powerline.segments.common.time.date",
                "name": "time",
                "args": {
                    "format": "%H:%M",
                    "istime": true
                }
            },
            {
                "function": "powerline.segments.common.env.user"
            },
            {
                "function": "powerline.segments.common.net.hostname"
            }
        ]
    }
}

この変更を反映させるために ~/.config/powerline/config.json の tmux の部分を以下のようにする.

"tmux": {
  "colorscheme": "default",
  "theme": "mytheme"
},

これで tmux のステータスラインがそれっぽくなった. ちなみに tmux のステータスラインの segment として使えるものはこれCommon segmentsTmux segments に載っているものだと思う(多分). また,before などについてはこれを参照.

  • before
    • A string which will be prepended to the segment contents.

  • width
    • Enforces a specific width for this segment. This segment will work as a spacer if the width is set to auto. Several spacers may be used, and the space will be distributed equally among all the spacer segments. Spacers may have contents, either returned by a function or a static string, and the contents can be aligned with the align property.

  • align
    • Aligns the segments contents to the left (l), center © or right ®. Has no sense if width key was not specified or if segment provides its own function for auto width handling and does not care about this option.

  • priority
    • Optional segment priority. Segments with priority None (the default priority, represented by null in json) will always be included, regardless of the width of the prompt/statusline. If the priority is any number, the segment may be removed if the prompt/statusline width is too small for all the segments to be rendered. A lower number means that the segment has a higher priority. Segments are removed according to their priority, with low priority segments (i.e. with a greater priority number) being removed first.

  • args
    • A dict of arguments to be passed to a function segment.

Powerline を導入する(tmux)

前の記事: xartaky.hatenablog.jp

tmux にも Powerline を入れて装飾する.
tmux の設定ファイル ~/.tmux.conf に以下を追記すれば良い(インストールガイド参照).

run-shell "powerline-daemon -q"
source ~.local/lib/python3.6/site-packages/powerline/bindings/tmux/powerline.conf

これで終わり(多分)(もしかしたら pip でいろいろ入れる必要があるかもしれないが).
次の記事: xartaky.hatenablog.jp

Powerline を導入する(zsh)

今までテキトー~/.zshrc を書いてテキトーなプロンプトを表示していたが,拙者も Powerline に興味が湧いたので導入した. いろんな Blog を見てやったが,自明に Installation — Powerline beta documentation 見てやったほうが良い.

Powerline を入れる

$ pip install --user powerline-status

これで Powerline 関連のものが ~/.local/bin に入っているはずなので,PATH を通す. ~/.zshrc に以下を追記する.

export PATH=~/.local/bin/:$PATH

これで PATH が通る.実際に Powerline を使うためには以下も ~/.zshrc に追記する.

powerline-daemon -q
. ~/.local/lib/python3.6/site-packages/powerline/bindings/zsh/powerline.zsh

これは拙者の環境なので,しっかり Python のバージョンや ~/.local/lib/python3.6/site-packages/powerline/bindings 以下を確認すべし.
これでターミナルを再起動するとめっちゃ装飾されたプロンプトになっているはず. ところが文字化け箇所があり,直すには Powerline 用のフォントを入れる必要がある.

Powerline 用のフォントを入れる

「Powerline フォント」とかで検索すると GitHub - powerline/fonts: Patched fonts for Powerline users. とかが出てくるが,今まで拙者は Ricty を使っていたので GitHub - mzyy94/RictyDiminished-for-Powerline: Ricty Diminished with Powerline patched --- fonts for programming を使うことにした.

$ git clone https://github.com/mzyy94/RictyDiminished-for-Powerline.git
$ sudo cp -r ~/RictyDiminished-for-Powerline /usr/share/fonts/truetype
$ fc-cache -vf

フォントを置く場所は ~/.fonts でも良い(というかインストールガイドだとそうなっていた)(ユーザ毎とか?).

$ cp -r ~/RictyDiminished-for-Powerline ~/.fonts
$ fc-cache -vf ~/.fonts/

あとは使用するフォントを設定して終わり(本当はもっと必要なものがあるっぽいけど,何も言われないし……(結局この後 tmux とかも使いたかったので pip などでいろいろ入れた.必要なものはインストールガイドにか書いてある)).
次の記事: xartaky.hatenablog.jp

TensorFlow のインストール(with Anaconda)

完全に個人的なメモ.特に Anaconda の環境とかよく分かっていないので.
Python 3.6, Anaconda, CPU only.
まあ https://www.tensorflow.org/install/install_linux#ValidateYourInstallation そのまま.
まず tensorflow という環境を作る.よく分からないが Python が 3.6 で Anaconda を全部ぶち込む.

$ conda create -n tensorflow python=3.6 anaconda

次に tensorflow を activate する.

$ source activate tensorflow

こうするとプロンプトが変わって,左に (tensorflow) がつくようになる.

(tensorflow) xartaky@Thinkpad-X260(12:14:20) ~
% 

私は Python 3.6.1 だったので,Python 3.6 用の TensorFlow を取ってくる(https://www.tensorflow.org/install/install_linux#the_url_of_the_tensorflow_python_package).

$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.1.0-cp36-cp36m-linux_x86_64.whl

これで終わり.
試しに Pythonインタープリタに次のように打ち込んでみる.

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))

すると sess = tf.Session() のところでこんな warning が出て(他に似たようなものも出た)

W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.

最後の print の出力はこんな感じになった.

b'Hello, TensorFlow!'

まあ,いいか.

setup.py でインストールしたものを消す

最近パソコンポチポチしているが,

$ python setup.py install

でインストールしたものを消したくなった.
その方法を調べたところこんなページがあったのでまとめる.
まずどこに何が入ったか知る必要があるので,再インストールし,その際に --record を付け,ファイルに結果を吐き出す.

$ python setup.py install --record ~/result.txt 

そして,この ~/result.txt を使って入れたものを消す.

$ cat ~/result.txt | xargs rm -rf

rm -rf するから、一応その前に ~/result.txt を確認する.
パーミッションほげほげ言われたら適宜 sudo を付ける.

$ sudo python setup.py install --record ~/result.txt 
$ cat ~/result.txt | xargs sudo rm -rf

これで消せたいものが消せて幸せになった.

VirtualBox 捨てた

タイトルのまま.
Ubuntu を入れてたけど,グラフィックの面で使い物にならなかった.
多分自分の設定が悪かったんだろうけど,面倒くさくなってやめた.
普通にデュアルブートしようと思う.