1. 程式人生 > >Awesome+tmux+gnomeDo打造高效Linux桌面環境

Awesome+tmux+gnomeDo打造高效Linux桌面環境

引言

近期一直在Linux下工作,使用Ubuntu 11.10,經過一段時間的使用和磨合,終於打造出一套適合自己的高效Linux桌面環境,之前也在部落格中零散的寫了幾篇文章分享,在此做一番總結.

首先先放出桌面截圖 Awesome 桌面截圖

Awesome

使用Ubuntu 11.10不習慣預設搭載的Unity,Gnome 3也不盡人如意,也使用xfce/openbox,但使用都不是很好,沒有Windows的體驗好,然後接觸了Awesome,Awesome是一款平鋪式窗體管理器,Awesome會去除視窗的標題欄等.會使視窗儘量小的佔用桌面空間,而且大部分視窗操作都可以通過鍵盤來進行操作,免除了各位身為鍵盤高手的碼農們頻繁拿滑鼠的煩惱.

安裝

Awesome Ubuntu下安裝十分簡單:

sudo apt-get install awesome

配置

拷貝配置檔案

Awesome 的配置檔案使用lua指令碼,所以如果你會lua配置起來會得心應手,我們先拷貝一個基礎配置檔案,然後在這個基礎上進行更改:

cp /etc/xdg/awesome/rc.lua ~/.config/awesome #  ~/.confg下如沒有awesome則手動建立

配置自動啟程式

使用awesome之後之前設定的自動啟動就會失效,因為Awesome啟動是通過配置檔案控制的,在配置檔案(~/.config/awesome/rc.lua)加上如下內容可以配置自啟動程式:

autorun
= true autorunApps = { "pidgin", "fcitx", "dbus-launch gnome-do", "guake", "/opt/qq2012/wineapp/qq/qq.sh", } if autorun then for app = 1, #autorunApps do awful.util.spawn_with_shell(autorunApps[app]) end end

在autorunApps中新增要自動啟動程式的命令即可在登入時啟動相應的程式

使用gnome桌面元素

awesome僅僅是一款窗體管理器,如果不進行相應配置awesome會使用預設的x window元素,非常醜陋我們來配置awesome使用GNOME桌面管理: 在宿主目錄建立.xinitrc,新增如下內容:

#!/bin/sh
gnome-settings-daemon &     # 使用gnome桌面元素
nm-applet --sm-disable &    # 托盤欄新增網絡卡圖示
exec awesome

如果不生效,則執行下面命令:

ln -sf ~/.xinitrc ~/.xprofile

美化

可以自己編寫lua指令碼對Awesome進行美化,當然還有很多已經寫好的配置,我們叫他為主題 awesome的所有主題可以在 https://github.com/mikar/awesome-themes 上下載. 我們可以使用git將主題整體克隆下來

git clone git://github.com/mikar/awesome-themes.git ~/.config/awesome/themes

然後修改~/.config/awesome/rc.lua的beautiful.init()的引數改為主題的路徑:

beautiful.init("/your/home/path/.config/awesome/themes/bamboo/theme.lua")

如果背景圖片無法顯示,安裝feh:

sudo apt-get install feh

使用

配置完成後登出使用Awesome會話登入,Awesome使用Win鍵作為主鍵,幾個常用的為:

Win+num 可以在多個桌面切換
Win+Ctrl+r 可以重啟Awesome,
Win+k/j可以切換視窗(類Vim操作),
Win+m/n可以最大/小化視窗,
Win+Shift+num 可以將當前視窗傳送到其他桌面.
Win+Shift+C可以關閉當前視窗,
Win+Space可以切換佈局,Awesome有多種佈局,這裡不作介紹,大家可以自己稍作嘗試.

下面給出完整的快捷鍵:

Mod4 + Enter           開啟終端                                               
Mod4 + r               執行程式或命令
Mod4 + w               開啟Awesome主選單(滑鼠右鍵關閉)                                                   
Mod4 + Shift + c       關閉當前視窗或應用                                     
Mod4 + Control + r     重啟Awesome                                            
Mod4 + Shift + q       退出Awesome

Mod4 + j               切換到下一個視窗                                       
Mod4 + k               切換到前一個視窗                                       
Mod4 + Left            檢視前一個tag                                          
Mod4 + Right           檢視後一個tag                                          
Mod4 + 1-9             切換到tag 1-9                                          

Mod4 + Control + j     切換到下一個螢幕                                       
Mod4 + Control + k     切換到上一個螢幕                                       
Mod4 + Shift + j       當前視窗和前一個視窗互換位置                           
Mod4 + Shift + k       當前視窗和後一個視窗互換位置                           
Mod4 + h               把主區域的寬度增大5%                                   
Mod4 + l               把主區域的寬度減少5%

Mod4 + m               最大化視窗
Mod4 + n               最小化視窗

Mod4 + Shift + h       增加主區域視窗的數量                                   
Mod4 + Shift + l       減少主區域視窗的數量                                   
Mod4 + Space           切換窗口布局                                           
Mod4 + Shift + space   把當前tag更換為前一種佈局                              
Mod4 + Control + space 切換當前視窗是否為浮動                                 

Mod4 + Shift + i       顯示當前視窗的Class和instance,這在寫指令碼的時候尤其有用

Mod4 + Shift + r       重繪當前視窗                                           
Mod4 + t               標記視窗(可標記多個)                                 
Mod4 + Shift + F1~F9   把標記的視窗移動到第1~9個標記上                        

Ctrl + Mod4 + 1~9      把當前桌面和1~9桌面是顯示                              
Mod4 + 1~9             恢復                                                   

Mod4 + Esc             快速切換到上一個桌面

更加詳盡的介紹和配置請參見http://josephpan.net/blog/?p=992

Tmux

tmux是一款替代screen的產品,除了擁有screen的基本功能外,還有視窗分隔,多人共享等功能.尤其是視窗分隔功能異常突出.同時tmux簡化了很多快捷鍵.還支援vi/emacs風格的快捷鍵繫結

安裝

sudo apt-get install tmux

配置

tmux 使用~/.tmux.conf作為配置檔案,所以我們可以將配置新增到這個檔案中,網上很多資料都將字首鍵繫結到Ctrl+a,但我喜歡使用Ctrl+a跳到行首,所以我還是使用預設的字首鍵Ctrl+b.下面是我的配置檔案:

set -g default-terminal "screen-256color" 
set -g display-time 3000                   
set -g escape-time 0
set -g history-limit 65535                 
set -g base-index 1                        
setw -g utf8 on                           

# split window
unbind '"'
bind - splitw -v # vertical split (prefix -)
unbind %
bind | splitw -h # horizontal split (prefix |)

# select pane
bind k selectp -U # above (prefix k)
bind j selectp -D # below (prefix j)
bind h selectp -L # left (prefix h)
bind l selectp -R # right (prefix l)

# resize pane
bind -r ^k resizep -U 5 # upward (prefix Ctrl+k)
bind -r ^j resizep -D 5 # downward (prefix Ctrl+j)
bind -r ^h resizep -L 5 # to the left (prefix Ctrl+h)
bind -r ^l resizep -R 5 # to the right (prefix Ctrl+l)

# swap pane
bind ^u swapp -U # swap with the previous pane (prefix Ctrl+u)
bind ^d swapp -D # swap with the next pane (prefix Ctrl+d)

# misc
bind e lastp  # select the last pane (prefix e)
bind ^e last  # select the last window (prefix Ctrl+e)
bind q killp  # kill pane (prefix q)
bind ^q killw # kill window (prefix Ctrl+q)

# copy mode
bind Escape copy-mode             # enter copy mode (prefix Escape)
bind ^p pasteb                    # paste buffer (prefix Ctrl+p)
bind -t vi-copy v begin-selection # select (v)
bind -t vi-copy y copy-selection  # copy (y)

# zoom pane <-> window 
# see also: http://tmux.svn.sourceforge.net/viewvc/tmux/trunk/examples/tmux-zoom.sh
bind ^z run "tmux-zoom"

# app
bind ! splitw htop                                     # htop (prefix !)
bind m command-prompt "splitw 'exec man %%'"           # man (prefix m)
bind @ command-prompt "splitw 'exec perldoc -t -f %%'" # perl func (prefix @)
bind * command-prompt "splitw 'exec perldoc -t -v %%'" # perl var (prefix *)
bind % command-prompt "splitw 'exec perldoc -t %%'"    # perl doc (prefix %)
bind / command-prompt "splitw 'exec ri %%'"            # ruby doc (prefix /)

# reload config (prefix r)
bind r source ~/.tmux.conf \; display "Configuration reloaded!"

setw -g mode-keys vi
setw -g automatic-rename off

#-- colorscheme --#
# see also: https://github.com/daethorian/conf-tmux/blob/master/colors/zenburn.conf

# modes
setw -g clock-mode-colour colour223
setw -g mode-attr bold
setw -g mode-fg colour223
setw -g mode-bg colour235

# panes
set -g pane-border-bg default
set -g pane-border-fg colour234
set -g pane-active-border-bg default 
set -g pane-active-border-fg green

# messages
set -g message-attr bold
set -g message-fg colour223
set -g message-bg default

#-- statusbar --#
set -g status-utf8 on
set -g status-interval 1
set -g status-keys vi
set -g status-justify left
set -g display-time 3000
set -g status-bg default
set -g status-fg white
set-window-option -g window-status-current-attr default
set-window-option -g window-status-current-fg red
set-window-option -g window-status-current-bg default
set -g status-left-length 15
set -g status-right-length 55
#set -g status-left "#[fg=white,bg=blue] > #I #W < #[default] |" # 0:bash
set -g status-left "#[fg=white,bg=default] > #S < #[default] |" # session-name
set -g status-right "#[fg=red,bright][ #[fg=cyan]#H #[fg=red]]#[default] #[fg=yellow,bright]- %Y.%m.%d #[fg=green]%H:%M #[default]#[fg=magenta,bright](load: #(cat /proc/loadavg | cut -d \" \" -f 1,2,3))#[default]"

使用

我使用terminator配合tmux使用,更改terminator的配置(~/.config/terminator/conf)

[profiles]
  [[default]]
    login_shell = True
    use_custom_command = True   # 允許自定義命令
    custom_command = tmux -2     # 開啟終端時執行tmux(-2 是強制終端使用256顏色)   
    background_type = transparent
    scrollbar_position = hidden
    foreground_color = "#ffffff"
    show_titlebar = False
    background_darkness = 0.2

常用快捷鍵:

Ctrl+b - 建立一個水平分隔 
Ctrl+b | 建立一個垂直分隔
Ctrl+b j/k/h/l 上下左右切換分割窗
Ctrl+b Ctrl+j/k/h/l 向上下左右擴充套件分割窗大小
Ctrl+b c 建立一個視窗
Ctrl+b , 重新命名視窗
Ctrl+b n 切換到下一個視窗
Ctrl+b p 切換到前一個視窗

Gnome-Do

Gnome Do 之前部落格裡有介紹請看這裡,由於Gonme Do使用Win+Space快捷鍵已經被Awesome佔用,所以為了正常使用Gnome Do 我將Gnome Do的快捷鍵繫結到Win+G.