Edited at

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


はじめに

最強の Linux ディストリビューション である Manjaro Linux を紹介します。

Manjaro Linuxは、Arch Linux を基に GUI 環境をプラスしたディストリビューションです。

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


感想

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

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

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

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

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

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

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

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

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


デスクトップ

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

イメージ

ダウンロード


Awesome

個人的には、Awesomeを使っていますので、こちらからダウンロードします。


MacBook Air

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

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

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

$ 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

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

$ sudo diskutil eject /dev/disk1


CUIインストール

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

http://wiki.manjaro.org/index.php/Installation_Guide_for_Beginners_0.8.2

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

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


Manjaro Linux の初期設定

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

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

$ sudo vi /etc/pacman-mirrors.conf


/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"


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

$ sudo pacman-mirrors -g

参考:

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

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

キー
内容

M-S-q
シャットダウンなど{s}

M-S-c
アプリの終了

M-h,l
ウィンドウ幅を調整

M-Enter
ターミナル起動

M-t
ウィンドウマネージャ起動

M-d
ブラウザ起動

M-j
フォーカス移動

M-f
ウィンドウ最大化

M-Space
ウィンドウの配置転換


Yaourt

# 各種パッケージのインストール

$ pacman -S base-devel

# Yaourtのインストール
$ sudo pacman -Sy yaourt

# キャッシュの削除
$ sudo pacman -Scc

yaourtは開発が終了しています。

Requesting official statement from developers · Issue #382 · archlinuxfr/yaourt

下記から開発が継続されている別のパッケージマネージャーを利用するのがよいでしょう。

参考:

https://wiki.archlinux.org/index.php/Yaourt


Clipboard

sudo pacman -S xsel


GRUB-Customizer

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

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

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

$ sudo pacman -S grub-customizer

$ sudo 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'

$ 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


Firefox

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

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

$ sudo pacman -Sy firefox

$ firefox &

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


Lilyterm

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

$ sudo pacman -S lilyterm

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

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

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


~/.config/lilyterm/default.conf

transparent_window = 1

window_opacity = 0.120


https://wiki.archlinux.org/index.php/LilyTerm


Awesome

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


~/.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


GParted

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

$ sudo pacman -S gparted

$ sudo !$

http://rionaoki.net/misc/ubuntu/grub-2-basics


日本語入力


iBus

$ 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

$ sudo chmod +x !$

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

ASCII キーボードで CapsLock キーを英数キーとして使用する


uim

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

$ yaourt -S uim-mozc

参考:

https://wiki.archlinux.org/index.php/Input_Japanese_using_uim


tmux

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


/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をマウントしましょう。

$ 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


Vim

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

 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


Nexus7

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

$ sudo yaourt -S go-mtpfs-git

$ cd

$ mkdir Android

$ go-mtpfs Android

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

$ fusermount -u Android

参考:

https://wiki.archlinux.org/index.php/MTP