Linux ディストリビューション Manjaro Linux の使い方 vol.1


##はじめに

最強の Linux ディストリビューション である [Manjaro Linux](http://wiki.manjaro.org/index.php?title=Download_Manjaro) を紹介します｡


`Manjaro Linux`は、[Arch Linux](https://wiki.archlinux.org/) を基に GUI 環境をプラスしたディストリビューションです。


インストールが簡単であり、基本アプリ以外に不要なアプリが入っていないので、開発環境としても、個人のデスクトップ環境としても最適です｡


##感想

Manjaro Linuxの良い所は､Arch Linuxのような壊れやすさがないという点と、初期設定が楽という点です｡


そして、Arch Linuxの良い所は､不要なアプリが入ってない点です。これは、セキュリティ的に見てもプラス要因です｡


もちろん、入っているアプリが少ないということは､低スペックマシンでも快適に動作します。


ただし、この点は､ハイスペックすぎるマシンが溢れている現代において、問題になることは少ないと思われます｡


私は､DesktopにAwesomeを使っています。


Awesomeの良い所は､ウィンドウ操作が定型的である点と、カスタマイズしやすい点です。


個人的には､Windows,Mac,Ubuntuなどの一般的なOSには、無駄なスペックを消費する使わないアプリが沢山インストールされていると思っています｡


この点で、パソコン用途が多岐に渡らないのならば、Arch系のOSを使う価値は十分にあると考えます｡ちなみに、私は､Gentoo系よりも､Arch系のほうが好きです。


理由としては､最新パッケージが試しやすいから...という理由ではなく､ロゴがカッコいいからなんですけどね。

##デスクトップ

デスクトップは、以下のタイプがあります。好みのものを選んでください｡

[イメージ](http://wiki.manjaro.org/index.php/Install_Desktop_Environments#Cinnamon)

[ダウンロード](http://sourceforge.net/projects/manjarolinux/files/community/)


##Awesome

個人的には､[Awesome](https://wiki.archlinux.org/index.php/Awesome_(%E6%97%A5%E6%9C%AC%E8%AA%9E))を使っていますので､[こちら](http://sourceforge.jp/projects/sfnet_manjaro-awesome-respin/)からダウンロードします。

##MacBook Air

ハードにインストールするには､ISOイメージをUSBかDVDに書き込み、それをハードで読み込む必要があります｡

ここでは、USBを使用します｡

読み書き可能な UDIF に変換した後､USBメモリを挿し、情報を確認します｡そして、当該ディスクをアンマウントした後に書き込みを実行します｡

```bash:
$ hdiutil convert -format UDRW -o manjaro-awesome-0.8.8-b4.1-x86_64.dmg manjaro-awesome-0.8.8-b4.1-x86_64.iso

$ diskutil list
 
$ sudo diskutil umountDisk /dev/disk1
 
$ sudo dd if=./manjaro-awesome-0.8.8-b4.1-x86_64.dmg of=/dev/disk1 bs=1m
```

ディスクを取り出すには､以下のコマンドです｡

```bash:
$ sudo diskutil eject /dev/disk1
```

##CUIインストール

GUIを使ったインストールについての解説は省略します。CUIの場合は､以下のページを参考にします｡

[http://wiki.manjaro.org/index.php/Installation_Guide_for_Beginners_0.8.2](http://wiki.manjaro.org/index.php/Installation_Guide_for_Beginners_0.8.2)

重要なのは､インストールディスクの設定と､ブートローダーの設定でしょう｡

これで、GUIインストールが上手く動作しないハードにもインストールが出来ます｡


##Manjaro Linux の初期設定

パッケージマネージャーを動かしていきます｡

遅いので､デフォルトのミラーサーバーを変更しますね。

```bash:
$ sudo vi /etc/pacman-mirrors.conf
```

```bash:/etc/pacman-mirrors.conf
##
## /etc/pacman-mirrors.conf
##
 
## Branch Pacman should use (stable, testing, unstable)
Branch=stable
 
## Generation method
## 1) rank   - rank mirrors depending on their access time
## 2) random - randomly generate the output mirrorlist
Method=rank
 
## Specify to use only mirrors from a specific country
## Disabled by default
OnlyCountry=Japan
 
## Input mirrorlist directory
MirrorlistsDir="/etc/pacman.d/mirrors"
 
## Output mirrorlist
OutputMirrorlist="/etc/pacman.d/mirrors/Japan"
```

応答速度を書き込みます。

```bash:
$ sudo pacman-mirrors -g
```

参考:
[http://wiki.manjaro.org/index.php/Rankmirrors_to_Set_the_Fastest_Download_Server](http://wiki.manjaro.org/index.php/Rankmirrors_to_Set_the_Fastest_Download_Server)



アップデートなどは､以下の様な感じのコマンドで行ってください｡

```
# ソフトのインストール
$ sudo pacman -S pacman
 
# システムのアップデート
$ sudo pacman -Syu
 
# レポジトリと同期
$ sudo pacman -Syy
```

オススメのソフトなどは､初回に選択できるようになっているみたいですが、自分でインストールしました｡ちなみに、初回に起動するスクリプトは、数字を入力して選択していきます｡

参考:
[http://tibiwan8-linux.blogspot.jp/2012/11/manjaro.html](http://tibiwan8-linux.blogspot.jp/2012/11/manjaro.html)

次に､`Awesome`のキーの確認でもしていきます。なお、ここでいう`M`は`Command`キーや`Windows`キーのことです。

|キー|内容|
|---|---|
|M-S-q|シャットダウンなど{s}|
|M-S-c|アプリの終了|
|M-h,l|ウィンドウ幅を調整|
|M-Enter|ターミナル起動|
|M-t|ウィンドウマネージャ起動|
|M-d|ブラウザ起動|
|M-j|フォーカス移動|
|M-f|ウィンドウ最大化|
|M-Space|ウィンドウの配置転換|


##Yaourt

```bash:
# 各種パッケージのインストール
$ pacman -S base-devel
 
# Yaourtのインストール
$ sudo pacman -Sy yaourt
 
# キャッシュの削除
$ sudo pacman -Scc
```

yaourtは開発が終了しています。
[Requesting official statement from developers · Issue #382 · archlinuxfr/yaourt](https://github.com/archlinuxfr/yaourt/issues/382)
下記から開発が継続されている別のパッケージマネージャーを利用するのがよいでしょう。
参考:
[https://wiki.archlinux.org/index.php/Yaourt](https://wiki.archlinux.org/index.php/Yaourt_(%E6%97%A5%E6%9C%AC%E8%AA%9E))


##Clipboard

```
sudo pacman -S xsel
```


##GRUB-Customizer

ブートローダーのカスタマイズをしましょう｡


ブートローダーというのは､簡単に言うと､OSを選択するためのものです。電源ボタンを押すと、一番に起動するシステムです｡


ただし、これが壊れると修復には面倒が伴いますので､ GUI で操作するのが良いと思われます｡

```bash:
$ sudo pacman -S grub-customizer
 
$ sudo grub-customizer
```

参考:
[http://wiki.manjaro.org/index.php?title=Grub-Customizer](http://wiki.manjaro.org/index.php?title=Grub-Customizer)


##SiML

SLiM は、ログインマネージャーです｡


ここでは、SLiM のデフォルト設定が、「起動時にログイン画面を表示する」となっているため、自動ログインを可能にしてみることにします。

```
$ $ sudo echo -e "default_user $USER\nauto_login yes" >> /etc/slim.conf
```

私の場合、ウィンドウマネージャは Awesome なので、自動起動するようにします。

```
$ cat ~/.xinitrc
 
$ sed -i '$d' !$ && echo exec \"awesome\" >> !$
```

後は､再起動でもして確認してみてください。

```
$ reboot
```

なお、Awesomeの再起動は､`M-C-r`だったと思います｡

これで、面倒なログイン画面が消えましたね｡


SLiM 自体を無効にしてもいいのですが､OSの基本機能として残しておいたほうが良いです｡

##Keyboard

続いてキーボードの設定です｡まずは、好みのキー設定を行います｡キーコードを確認しながら変更していきましょう。

```
$ xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
```

```bash:
$ localectl status
 
$ localectl list-keymaps
 
$ mkdir ~/tmp
 
$ cp /usr/share/kbd/keymaps/i386/qwerty/jp106.map.gz .
 
$ gunzip jp106.map.gz
 
$ mv jp106.map jp106_mac.map
 
$ vim jp106_mac.map
 
############################
# keycode  58 = Caps_Lock 行を編集
keycode  58 = Control
 
# keycode  89 = backslash underscore 行を編集
keycode  89 = underscore
############################
 
$ gzip jp106_mac.map
 
$ sudo mv jp106_mac.map.gz /usr/share/kbd/keymaps/i386/qwerty
 
$ loadkeys jp106_mac
 
$ sudo vim /etc/vconsole.conf
 
############################
KEYMAP="jp106_mac"
############################
 
$ sudo vim /etc/X11/xorg.conf.d/20-keyboard.conf
 
############################
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbModel" "jp106_mac"
Option "XkbLayout" "jp"
#Option "XkbVariant" ""
EndSection
############################
```

もっと快適にしたい場合は､以下の設定ファイルを使いましょう｡


[http://d.hatena.ne.jp/munepi/20120114/mba](http://d.hatena.ne.jp/munepi/20120114/mba)


##Firefox

私は､MacやWindowsでは、Chrome(Chromium)を使いますが､Linuxでは、Firefoxを使うという少し変わった人です。


なので、インストール後に最低限の設定をしていきます｡

```
$ sudo pacman -Sy firefox
 
$ firefox &
```

[vimperator](https://addons.mozilla.org/ja/firefox/addon/vimperator/)というアドオンをダウンロードします｡


設定は､ホームディレクトリに設定ファイルを置きます｡

```
" 移動幅変更
noremap j 5<C-e>
noremap k 5<C-y>
 
" ブックマーク追加
map a :bmarks<CR>
 
" 戻る/進む
noremap h <A-Left>
noremap l <A-Right>
```

プラグインマネージャーもあります。

[https://github.com/cd01/vimppm](https://github.com/cd01/vimppm)


##Lilyterm

最強のターミナルアプリ｡軽量、高機能で言うことなし｡

```
$ sudo pacman -S lilyterm
```

設定は､以下の設定ファイルを編集します｡ここでは、デフォルトテーマを変更します｡

```
$ vim ~/.config/lilyterm/default.conf
```


ウィンドウの透過は、以下のような項目を変更します｡

```bash:~/.config/lilyterm/default.conf
transparent_window = 1
 
window_opacity = 0.120
```


[https://wiki.archlinux.org/index.php/LilyTerm](https://wiki.archlinux.org/index.php/LilyTerm)


##Awesome

色々なツールを使い出してきたら､Awesomeの設定を行ってみます｡

```bash:~/.config/awesome/rc.lua
-- https://github.com/silenvx/dotfiles/blob/master/misc/default/XDG_CONFIG_HOME/awesome/rc.lua
-- Terminal
terminal = "lilyterm"
 
-- Applications
-- Firefox
awful.key({modkey}, "d", function () awful.util.spawn_with_shell("firefox") end),
 
 
-- モニターのフォーカスを変更する
awful.key({modkey,            }, "F1",     function () awful.screen.focus(1) end),
awful.key({modkey,            }, "F2",     function () awful.screen.focus(2) end),
-- モニターからモニターにウィンドウを移動させる
awful.key({ modkey,           }, "i",      function(c) awful.client.movetoscreen(c,c.screen-1) end ),
awful.key({ modkey,           }, "o",      function(c) awful.client.movetoscreen(c,c.screen+1) end ),
```

参考:
[https://wiki.archlinux.org/index.php/Awesome](https://wiki.archlinux.org/index.php/Awesome)


##GParted

フォーマットやパーティションの分割など。

```bash:
$ sudo pacman -S gparted
 
$ sudo !$
```

[http://rionaoki.net/misc/ubuntu/grub-2-basics](http://rionaoki.net/misc/ubuntu/grub-2-basics)

##日本語入力
###iBus

```bash:
$ sudo yaourt mozc
 
$ ibus-setup
 
$ sudo vim /etc/X11/xinit/xinitrc.d/99-ibus
```

```/etc/X11/xinit/xinitrc.d/99-ibus
#!/bin/bash
export XMODIFIERS="@im=ibus"
export GTK_IM_MODULE="ibus"
export QT_IM_MODULE="xim"
ibus-daemon -d -x
```

```bash:
$ sudo chmod +x !$
```

かな、英数変換は､`Caps`キーに設定してみます｡

[ASCII キーボードで CapsLock キーを英数キーとして使用する](https://wiki.archlinux.org/index.php/Mozc_(%E6%97%A5%E6%9C%AC%E8%AA%9E)#ASCII_.E3.82.AD.E3.83.BC.E3.83.9C.E3.83.BC.E3.83.89.E3.81.A7_CapsLock_.E3.82.AD.E3.83.BC.E3.82.92.E8.8B.B1.E6.95.B0.E3.82.AD.E3.83.BC.E3.81.A8.E3.81.97.E3.81.A6.E4.BD.BF.E7.94.A8.E3.81.99.E3.82.8B)

###uim


ibusかuimのどちらを使うかは､好みの問題です｡

```bash:
$ yaourt -S uim-mozc
```

参考:
[https://wiki.archlinux.org/index.php/Input_Japanese_using_uim](https://wiki.archlinux.org/index.php/Input_Japanese_using_uim)

##tmux


tmux-powerlineが連続して出てくるので、以下を設定します｡

```bash:/etc/locale.conf
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
#LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
```

`LC_NUMERIC="en_US.UTF-8"`はコメントアウトしないと､ `/etc/X11/xorg.conf.d/20-keyboard.conf`が書き換えられてしまう。

##fdisk


復旧には､LiveUSBなどを使います｡HDDをマウントしましょう｡

```bash:
$ fdisk -l
 
$ mount /dev/sda3 /mnt/sda3
```

##Zsh

最低限の思いつき設定をしてみます｡

```~/.zshrc
autoload -U compinit colors zcalc
compinit
colors

setopt correct          # Auto correct mistakes
setopt extendedglob     # Extended globbing
setopt nocaseglob       # Case insensitive globbing
setopt rcexpandparam    # Array expension with parameters
setopt nocheckjobs      # Don't warn about running processes when exiting
setopt numericglobsort  # Sort filenames numerically when it makes sense
setopt nohup            # Don't kill processes when exiting
setopt nobeep           # No beep
setopt appendhistory    # Immediately append history instead of overwriting
setopt histignorealldups #If a new command is a duplicate, remove the older one

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'       # Case insensitive tab completion
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"         # Colored completion (different colors for dirs/files/etc)

bindkey -e
bindkey '^[[7~' beginning-of-line                   # Home key
bindkey '^[[8~' end-of-line                         # End key
bindkey '^[[2~' overwrite-mode                      # Insert key
bindkey '^[[3~' delete-char                         # Delete key
bindkey '^[[A'  up-line-or-history                  # Up key
bindkey '^[[B'  down-line-or-history                # Down key
bindkey '^[[C'  forward-char                        # Right key
bindkey '^[[D'  backward-char                       # Left key
bindkey '^[[5~' history-beginning-search-backward   # Page up key
bindkey '^[[6~' history-beginning-search-forward    # Page down key

HISTFILE=~/.zhistory
HISTSIZE=10000
SAVEHIST=10000

alias sudo='sudo '
alias ls='ls --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
alias ll='ls -l --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
alias la='ls -la --group-directories-first --time-style=+"%d.%m.%Y %H:%M" --color=auto -F'
alias grep='grep --color=tty -d skip'
alias cp="cp -i"                        # Confirm before overwriting something
alias df='df -h'                        # Human-readable sizes
alias free='free -m'                    # Show sizes in MB

# ex - archive extractor
# usage: ex <file>
ex() {
  if [ -f $1 ] ; then
    case $1 in
      *.tar.bz2)   tar xjf $1   ;;
      *.tar.gz)    tar xzf $1   ;;
      *.bz2)       bunzip2 $1   ;;
      *.rar)       unrar x $1     ;;
      *.gz)        gunzip $1    ;;
      *.tar)       tar xf $1    ;;
      *.tbz2)      tar xjf $1   ;;
      *.tgz)       tar xzf $1   ;;
      *.zip)       unzip $1     ;;
      *.Z)         uncompress $1;;
      *.7z)        7z x $1      ;;
      *)           echo "'$1' cannot be extracted via ex()" ;;
    esac
  else
    echo "'$1' is not a valid file"
  fi
}

# zaw
source /home/manjaro/dotfiles/.zsh/tools/zaw/zaw.zsh

# prompt
source /home/manjaro/dotfiles/.zsh/tools/zsh_prompt/.zshrc.prompt

# autojump
export FPATH="$FPATH:/usr/share/zsh/site-functions/"
[[ -s /home/manjaro/.autojump/etc/profile.d/autojump.sh ]] && source /home/manjaro/.autojump/etc/profile.d/autojump.sh

# http://d.hatena.ne.jp/yarb/20110126/p1
function mkcd() {
if [[ -d $1 ]]; then
echo "It already exsits! Cd to the directory."
cd $1
else
echo "Created the directory and cd to it."
mkdir -p $1 && cd $1
fi
}

# http://d.hatena.ne.jp/hiboma/20120315/1331821642
pbcopy-buffer(){
print -rn $BUFFER | xsel
zle -M "xsel: ${BUFFER}"
}
 
zle -N pbcopy-buffer
bindkey '^p^p' pbcopy-buffer

#google
function go() {
local str opt
if [ $ != 0 ]; then
for i in $*; do
str="$str+$i"
done
str=`echo $str | sed 's/^\+//'`
opt='search?num=50&hl=ja&lr=lang_ja'
opt="${opt}&q=${str}"
fi
w3m http://www.google.co.jp/$opt
}

# complete
autoload -U compinit
compinit
zstyle ':completion:*:default' menu select=2
zstyle ':completion:*' verbose yes
zstyle ':completion:*' completer _expand _complete _match _prefix _approximate _list _history
zstyle ':completion:*:messages' format '%F{YELLOW}%d'$DEFAULT
zstyle ':completion:*:warnings' format '%F{RED}No matches for:''%F{YELLOW} %d'$DEFAULT
zstyle ':completion:*:descriptions' format '%F{YELLOW}completing %B%d%b'$DEFAULT
zstyle ':completion:*:options' description 'yes'
zstyle ':completion:*:descriptions' format '%F{yellow}Completing %B%d%b%f'$DEFAULT
zstyle ':completion:*' list-separator '-->'
zstyle ':completion:*:manuals' separate-sections true
zstyle ':completion:*' group-name ''

# zaw
bindkey '^x^x' zaw

# cd ls
function chpwd() { ls -aF }

# color
autoload colors
colors
source /home/manjaro/dotfiles/.zsh/tools/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh

# code
export LANG=en_US.UTF-8

# alias
alias tmux="tmux -2"
alias ll="ls -Fa"
alias zs="source ~/.zshrc && exec $SHELL"
alias vs="vim ~/.vimrc"
alias ts="vim ~/.tmux.conf"

# tmux
# tmux自動起動
if [ -z "$TMUX" -a -z "$STY" ]; then
if type tmux >/dev/null 2>&1; then
if tmux has-session && tmux list-sessions | /usr/bin/grep -qE '.*]$'; then
tmux attach && echo "tmux attached session "
else
tmux new-session && echo "tmux created new session"
fi
fi
fi
```


参考:
[http://mba-hack.blogspot.jp/2013/03/zsh.html](http://mba-hack.blogspot.jp/2013/03/zsh.html)

##Vim

最低限の思いつき設定をしてみます｡

```~/vimrc
 if has('vim_starting')
   set nocompatible               " Be iMproved
   set runtimepath+=~/.vim/bundle/neobundle.vim/
 endif

 call neobundle#rc(expand('~/.vim/bundle/'))

 " Let NeoBundle manage NeoBundle
 NeoBundleFetch 'Shougo/neobundle.vim'

 " Recommended to install
 NeoBundle 'Shougo/vimproc', {
  \ 'build' : {
  \     'windows' : 'make -f make_mingw32.mak',
  \     'cygwin' : 'make -f make_cygwin.mak',
  \     'mac' : 'make -f make_mac.mak',
  \     'unix' : 'make -f make_unix.mak',
  \    },
  \ }

 " My Bundles here:
 " Refer to |:NeoBundle-examples|.
 "
 " Note: You don't set neobundle setting in .gvimrc!

NeoBundle "Shougo/unite.vim"
NeoBundle "Shougo/neosnippet.vim"
NeoBundle "Shougo/neosnippet-snippets"
NeoBundle "Shougo/vimfiler.vim"
NeoBundle "Shougo/neocomplete.vim"
NeoBundle "t9md/vim-smalls"
NeoBundle "rhysd/clever-f.vim"
NeoBundle "kana/vim-textobj-user"
NeoBundle "tpope/vim-surround"
NeoBundle "osyo-manga/vim-over"

" color theme
NeoBundle 'nanotech/jellybeans.vim'
NeoBundle 'w0ng/vim-hybrid'
NeoBundle 'vim-scripts/twilight'
NeoBundle 'jonathanfilip/vim-lucius'
NeoBundle 'jpo/vim-railscasts-theme'
NeoBundle 'altercation/vim-colors-solarized'
NeoBundle 'vim-scripts/Wombat'
NeoBundle 'tomasr/molokai'
NeoBundle 'vim-scripts/rdark'

 filetype plugin indent on     " Required!
 "
 " Brief help
 " :NeoBundleList          - list configured bundles
 " :NeoBundleInstall(!)    - install(update) bundles
 " :NeoBundleClean(!)      - confirm(or auto-approve) removal of unused bundles

 " Installation check.
 NeoBundleCheck


" keymap
inoremap <silent><C-j> <ESC>
inoremap <silent>jj <ESC>
nmap <C-p> "*p
nmap Q :q!<CR>

" color
colorscheme molokai
syntax on
set t_Co=256
" plugin
" vim-smalls

nmap s <Plug>(smalls-excursion)
let g:smalls_auto_excursion_min_input_length = 2
let cli_table_custom = {
      \ }
call smalls#keyboard#cli#extend_table(cli_table_custom)

let excursion_table_custom = {
      \ "\<CR>": 'do_set',
      \ "\;": 'do_jump',
      \ }
call smalls#keyboard#excursion#extend_table(excursion_table_custom)

"vim-over
nnoremap <silent> <C-n> :OverCommandLine<CR>%s/

" code
set encoding=utf-8

" clipboard
set clipboard=unnamedplus,unnamed

" commnet
" https://gist.github.com/rbtnn/8540338
augroup auto_comment_off
  autocmd!
  autocmd BufEnter * setlocal formatoptions-=ro
augroup END
```


参考:
[http://mba-hack.blogspot.jp/2013/02/vim.html](http://mba-hack.blogspot.jp/2013/02/vim.html)


##Nexus7

`Nexus7`をマウントするには､以下のツールを使います｡MTPをインストールします｡MTPとは、メディア転送プロトコルの略です。

```bash:
$ sudo yaourt -S go-mtpfs-git
 
$ cd
 
$ mkdir Android
 
$ go-mtpfs Android
```

`Android`はポイントです｡アンマウントは、以下の通りです｡

```bash:
$ fusermount -u Android
```

参考:
[https://wiki.archlinux.org/index.php/MTP](https://wiki.archlinux.org/index.php/MTP)