私のデスクトップ画面 #premiumdesktops

New computer今回は、 あなたのデスクトップ画面を見せてください。」という企画に乗っかって、ブログでは紹介しきれていなかった環境を紹介していきたいと思います。
photo credit: Johan Larsson



はじめに


Qiitaには紹介した内容ではあったかと思いますが、ブログではどうだったかを忘れてしまったので、再度紹介してみようと思います。ただし、新規の内容もありますので、既に見たという人もぜひ。


あと、各ツールのリンクはこちらの記事から参照してください。

Command Line で使用しているツールまとめ vol.1

Command Line で使用しているツールまとめ vol.2

Command Line で使用しているツールまとめ vol.3


Power ON!


私がパソコンの電源を入れた瞬間立ち上がるデスクトップは以下の様な感じになっています。




画面構成


普段使いのデスクトップは以下の様な感じになっています。





tmux-powerline








# tmux-powerline
set-option -g status on
set-option -g status-interval 2
set-option -g status-utf8 on
#set-option -g status-justify "centre"
set-option -g status-left-length 80
set-option -g status-right-length 90
set-option -g status-left "#(~/dotfiles/tmux-powerline/status-left.sh)#[bg=red]#[fg=black]⮀#[bg=red]#[fg=white] mem #(used-mem) %% #[bg=black]#[fg=red]⮀"
set-option -g status-right "#(~/dotfiles/tmux-powerline/status-right.sh)"




# tmux自動起動
is_screen_running() {
# tscreen also uses this varariable.
[ ! -z "$WINDOW" ]
}
is_tmux_runnning() {
[ ! -z "$TMUX" ]
}
is_screen_or_tmux_running() {
is_screen_running || is_tmux_runnning
}
shell_has_started_interactively() {
[ ! -z "$PS1" ]
}
resolve_alias() {
cmd="$1"
while \
whence "$cmd" >/dev/null 2>/dev/null \
&& [ "$(whence "$cmd")" != "$cmd" ]
do
cmd=$(whence "$cmd")
done
echo "$cmd"
}


if ! is_screen_or_tmux_running && shell_has_started_interactively; then
for cmd in tmux tscreen screen; do
if whence $cmd >/dev/null 2>/dev/null; then
$(resolve_alias "$cmd")
break
fi
done
fi




#!/bin/sh
## debug mode
#DEBUG="yes"
if [ "$DEBUG" = "yes" ]; then
set -x
fi

## vm_stat コマンドのチェック
if ! type vm_stat > /dev/null 2>&1; then
exit 1
fi

#
# メモリ使用率(%)を求める
# 精度は小数点第1位までとする
#
calculate_used_mem() {
# vm_stat
# page size of 4096 bytes
VM_STAT=$(vm_stat)
PAGES_FREE=$(echo "$VM_STAT" | awk '/Pages free/ {print $3}' | tr -d '.')
PAGES_ACTIVE=$(echo "$VM_STAT" | awk '/Pages active/ {print $3}' | tr -d '.')
PAGES_INACTIVE=$(echo "$VM_STAT" | awk '/Pages inactive/ {print $3}' | tr -d '.')
PAGES_SPECULATIVE=$(echo "$VM_STAT" | awk '/Pages speculative/ {print $3}' | tr -d '.')
PAGES_WIRED=$(echo "$VM_STAT" | awk '/Pages wired down/ {print $4}' | tr -d '.')

# 空きメモリ
FREE_MEM=$(($PAGES_FREE + $PAGES_SPECULATIVE))

# 使用中メモリ
USED_MEM=$(($PAGES_ACTIVE + $PAGES_INACTIVE + $PAGES_WIRED))

# 合計
TOTAL_MEM=$(($FREE_MEM + $USED_MEM))


# 使用中メモリ(%)
# 小数点第1位まで求めて後から小数点文字(ドット)を挿入
USED_MEM_PERCENT=$(echo "$(($USED_MEM * 1000 / $TOTAL_MEM))" | sed -e 's/\(.*\)\([0-9]\)/\1.\2/' -e 's/^\./0./')
echo "${USED_MEM_PERCENT}"

# RET
return 0
}

# Debug
debug() {
if [ "$DEBUG" = "yes" ]; then
echo "PAGES_FREE: $PAGES_FREE pages"
echo "PAGES_FREE: $(($PAGES_FREE * 4096 / 1024 / 1024 )) MB"
echo "PAGES_ACTIVE: $PAGES_ACTIVE pages"
echo "PAGES_ACTIVE: $(($PAGES_ACTIVE * 4096 / 1024 / 1024)) MB"
echo "PAGES_INACTIVE: $PAGES_INACTIVE pages"
echo "PAGES_INACTIVE: $(($PAGES_INACTIVE * 4096 / 1024 / 1024)) MB"
echo "PAGES_SPECULATIVE: $PAGES_SPECULATIVE pages"
echo "PAGES_SPECULATIVE: $(($PAGES_SPECULATIVE * 4096 / 1024 / 1024 )) MB"
echo "PAGES_WIRED: $PAGES_WIRED pages"
echo "PAGES_WIRED: $(($PAGES_WIRED * 4096 / 1024 / 1024)) MB"
echo "FREE_MEM: $FREE_MEM pages"
echo "FREE_MEM: $(($FREE_MEM * 4096 / 1024 / 1024)) MB"
echo "USED_MEM: $USED_MEM pages"
echo "USED_MEM: $(($USED_MEM * 4096 / 1024 / 1024)) MB"
echo "TOTAL_MEM: $TOTAL_MEM pages"
echo "TOTAL_MEM: $(($TOTAL_MEM * 4096 / 1024 / 1024)) MB"
echo "---------------"
# 搭載メモリ(理論値): 8GBの場合
echo "TOTAL_MEM: $((8 * 1024)) MB (Theoretical value)"
echo "---------------"
echo "USED_MEM: $(($USED_MEM * 1000 / $TOTAL_MEM)) %"
fi
}

RET=0
## メイン処理 -----
calculate_used_mem
RET=$?

## デバッグ -----
#DEBUG=yes debug

## exit
exit $RET



zsh-prompt








# PROMPT# {{{
setopt prompt_subst
setopt prompt_percent
setopt transient_rprompt

color256()
{
local red=$1; shift
local green=$2; shift
local blue=$3; shift

echo -n $[$red * 36 + $green * 6 + $blue + 16]
}

fg256()
{
echo -n $'\e[38;5;'$(color256 "$@")"m"
}

bg256()
{
echo -n $'\e[48;5;'$(color256 "$@")"m"
}

zstyle ':vcs_info:*' max-exports 3
zstyle ':vcs_info:hg:*' get-revision true # hg で check-for-changes を有効にするには
zstyle ':vcs_info:hg:*' use-simple true # この2つの設定が必要

autoload -Uz is-at-least
zstyle ':vcs_info:git:*' check-for-changes true
zstyle ':vcs_info:git:*' stagedstr "⚡" # 適当な文字列に変更する
zstyle ':vcs_info:git:*' unstagedstr "±" # 適当の文字列に変更する

# Gitブランチ名や作業状態を表示する
zstyle ':vcs_info:git:*' formats '%K{green}%F{black}⮀%k%f%{%F{white}%K{green}%} %s %{%k%f%}%K{blue}%F{green}⮀%k%f%{%F{white}%K{blue}%} %b %{%k%f%}%K{black}%F{blue}⮀%k%f%{%F{white}%K{black}%} %c%u %{%k%f%}'

# プロンプトの左
autoload -Uz vcs_info
prompt_bar_left_self="%{%F{white}%K{blue}%} %n%{%k%f%}%{%F{white}%K{blue}%}@%{%k%f%}%{%F{white}%K{blue}%}%m %{%k%f%}%{%B%F{blue}%K{blue}%}%{%b%f%k%}%K{cyan}%F{blue}⮀%k%f%{%B%F{white}%K{cyan}%} [%~] %{%k%f%b%}%{%k%f%}%K{red}%F{cyan}⮀%k%f%(?.%F{white}%K{red}%} COMP %k%f.%B%K{red}%F{red}%} ERROR %b%k%f)%{%K{green}%F{red}⮀%k%f%F{white}%K{green}%} -%h %{%k%f%}%K{green}%F{white}⮂%k%f"

# プロンプトンの左下
prompt_bar_left="${prompt_bar_left_self} ${prompt_bar_left_status} ${prompt_bar_left_date}"
prompt_left='%{%F{white}%K{black}%} $SHELL %{%k%f%}%{%K{white}%F{black}⮀%k%f%B%F{black}%K{white}%} %# %{%b%k%f%f%}%K{black}%F{white}⮀%k%f > '

count_prompt_characters()
{
print -n -P -- "$1" | sed -e $'s/\e\[[0-9;]*m//g' | wc -m | sed -e 's/ //g'
}

update_prompt()
{
local bar_left_length=$(count_prompt_characters "$prompt_bar_left")
local bar_rest_length=$[COLUMNS - bar_left_length]

local bar_left="$prompt_bar_left"
local bar_right_without_path="${prompt_bar_right:s/%d//}"
local bar_right_without_path_length=$(count_prompt_characters "$bar_right_without_path")
local max_path_length=$[bar_rest_length - bar_right_without_path_length]
bar_right=${prompt_bar_right:s/%d/%(C,%${max_path_length}<...<%d%<<,)/}
bar_right="%${bar_rest_length}<<${separator}${bar_right}%<<"

PROMPT="${bar_left}${bar_right}"$'\n'"${prompt_left}"

# プロンプトの右下
RPROMPT="%K{white}%F{black}⮀%k%f%{%F{black}%K{white}%} %l %K{black}%F{white}⮀%k%f%{%k%f%}%{%F{white}%K{black}%} $LANG %{%k%f%}%K{black}%F{white}⮂%k%f"
case "$TERM_PROGRAM" in
Apple_Terminal)

RPROMPT="${RPROMPT}"
;;
esac

LANG=C vcs_info >&/dev/null
if [ -n "$vcs_info_msg_0_" ]; then
RPROMPT="${vcs_info_msg_0_}${RPROMPT}"
fi
}

precmd_functions=($precmd_functions update_prompt)
# }}}



zsh


zshについては、よく使っているものを画像を使って簡潔に説明します。


zaw : unite.vimみたいなuiで各項目を検索



zsh-history-search : デフォルト機能だったと思いますが、historyの検索



auto-jump : フォルダ移動を補助...zでもいいけど



auto-fu.zsh : 補完強化



tw、その他


Terminalを2重にして、tweetを流すには、 twが便利です。




gem install tw


while true; do date; tw @PSP_T; sleep 6; clear; done;

(watchでもできるかもしれませんが)


その他、RSSを流したり、Musicを流したりなどなど。そういえば、tmux-powerlineは、デフォルトで再生中の曲名を表示したりなどけっこう便利だったと思います。


Dock


Dockはこんな感じです。




GIMP



Dockは、画像編集などの作業をする時以外は、あまり使用しません。画像関連をターミナル上で行うのは、非常に非効率だと思います。画像編集には、 GIMPを使用しています。あと、 Finderも使用します。


ただし、ファイル形式の変換や一括作業は、 ImageMagickを使用することが多いです。



mogrify -format png -quality 100 *.jpg



システム環境設定とInsomniaT


MacBookAir11の蓋を閉じてもスリープしないようにする InsomniaTをよく使用します。


alias ins='open /Library/PreferencePanes/InsomniaT.prefPane'


システム環境設定へは、ここから移動します(あまり開くこともないのでこれで十分です)。

Cmd+↑




その他


夜フクロウは、Growl通知に便利なので使ってます。 ClamXavはウィルススキャンアプリです。