0 说明:

本文适合linux的新手,或者只接触过gnome/kde/xfce的用户.

老鸟请绕道,以免被我降低智商.CLI无用论者或GUI无用论者勿入.

0.1 写作缘由

由于我的blog出了点问题,文章内容被清空,所以干脆重新整理一下.把原先blog中零散的配置编辑成系统的教程.

0.2 平台说明

我使用的平台为2*Intel core 2,debian sid amd64.

ubuntu上的配置应该也是一样的,其他发行版,比如redhat系列,arch,gentoo,slackware等会有所不同,使用32位debian的用户也许会有更多些的软件包可选.

0.3 license

文章以GNU Free Documentation License发布,欢迎共享,但希望保持原文的完整,如果原文有更新,也希望保持同步

对于文章中出现的代码请遵照其原先的许可.

0.4 其他

注意命令前的提示符#和$

1 openbox介绍

1.1 为何选择openbox

因为如果我选择了fluxbox,就会有人来问我:"为何选择fluxbox?”

openbox是一个可定制度高,小巧灵活,使用配置简单且非常强大的窗口管理器,在我的机器上openbox本身占用12M内存.lxde就是用openbox作为其窗口管理器.可惜我并不喜欢lxde.

openbox是在blackbox基础上开发的,但青出于蓝而胜于蓝,相对与blackbox,openbox得到了更好的发展.

openbox属于NetWM家族,也可称其为EWMH,家族成员包括大名鼎鼎的kwin(kde),metacity(gnome2.12以后的默认WM),enlightenment(盛极一时的e16),fluxbox,blackbox等等.

openbox是UNIX哲学中模块化思想的集中体现,默认的openbox是非常单一的,好在它并不丑陋,配置也非常简单,它不像fvwm需要大量的配置,不像awesome需要学习lua语言,不像icewm那样只能作有限的配置…obconf和obmenu这两个图形界面的工具使得openbox的入门非常简单,xml格式的配置文件也使得深入的配置及其容易.

1.2 几个有用的网站:

Crunchbang一个ubuntu的衍生版,以openbox作为WM):

[http://crunchbanglinux.org/]

2 从lenny到openbox

2.1 准备工作

安装完lenny的最小系统后,首先是升级到unstable,根据我的经验,软件越少,升级越安全,毕竟"This aptitude does not have Super Cow Powers."

debian的最小系统不包含X以及其他软件,需要安装一些软件来支持openbox更好地工作

安装硬件抽象层,设备自动发现以及alsa声卡:

# aptitude install -y hal pmount alsa-base

安装中文字体:

# apt-get install -y ttf-wqy-zenhei ttf-wqy-microhei xfonts-wqy ttf-arphic-*

安装openbox,obmenu,obconf和menu-xdg:

# aptitude install -y openbox obmenu obconf menu-xdg

其中menu-xdg用以生成菜单.obmenu是配置openbox菜单的GUI软件,obconf是配置openbox行为的GUI软件,它们两个几乎可以直接配置出一个好用的openbox来.

此时通过startx或者gdm就可以进入openbox了,只看到黑漆漆一片,用右键菜单可以打开几个软件.

Ps:如果安装有多个窗口管理器可以用如下命令指定默认WM

# update-alternatives --config x-session-manager

2.2 启动配置

openbox在启动时会读取~/.config/openbox/autostart.sh文件,然后启动一些程序.

autostart.sh的本质就是一个shell脚本,所以我们可以在其中自由发挥,但是我推荐每行一个程序,如果运行改程序需要占几行,最好另外写一个脚本,在autostart.sh中调用它,使得autostart.sh看起来清晰

值得注意的是每行程序的最后要用"&"表示后台运行,否则该程序不结束就不会执行下一行,出现这种情况后,你只能按ctrl+alt+f*进入控制台修改autostart.sh,并pkill掉openbox了

以下是一个例子,在openbox启动时启动网络管理器和一个位于~/.config/conky/下的脚本

#表示注释,如果装了wicd而非network-manager,则取消wicd的注释并注释掉nm-applet,sleep 4s表示启动4秒后启动wicd-client

nm-applet &

#(sleep 4s && wicd-client) &

~/.config/conky/start.sh &

2.3 主题的配置

这里theme主要分三种:qt-theme,gnome-theme和openbox-theme.

qt程序一般默认就用clearlooks了,不配置倒也不难看,但我们需要对qt的字体做配置,需要qt4-qtconfig和qt3-qtconfig两个软件

gtk-chtheme可以设置iceweasel,synaptic等gnome软件的theme,需要gtk2-engines或gtk2-engines-*提供主题包支持,所以安装之:

# aptitude install -y qt4-qtconfig qt3-qtconfig gtk-chtheme gtk2-engines

运行如下命令就能对qt程序进行配置了.

$ qtconfig-qt3 $ qtconfig-qt4

gtk2-engines中包含了几个常用的主题:Clearlooks,Crux,High contrast,Industrial,LighthouseBlue,Metal,Mist,Redmond95,ThinIce.

如下命令可以看到可选的gtk+主题包:

# aptitude search gtk2-engines

在配置openbox之前我们需要将一个配置文件模板放入自己的目录:

$ mkdir -pv ~/.config/openbox/ $ cp /etc/xdg/openbox/rc.xml ~/.config/openbox/rc.xml

openbox的主题默认已经装了,如果还不满意可以去http://www.box-look.org/看看.

下载下来的主题obt格式的就用obconf导入,压缩包的就解压到 /usr/share/themes/或者$HOME/.themes/,然后用obconf选择该主题

我自己制作了一个主题,主要参考了系统中原有的Curdled主题, 今天是我生日,所以就叫birthday_openbox了,献给伟大的老爸老妈~

下载解压到~/.themes:

$ wget http://blogimg.chinaunix.net/blog/upfile2/100423193525.bz2 -O birthday_openbox.tar $ mkdir -pv ~/.themes $ tar xvf -C ~/.themes

2.4 右键菜单

由于有obmenu,所以我们不需要直接面对menu.xml配置文件,只要先把全局菜单放到自己的目录下就行了:

$ cp /etc/xdg/openbox/menu.xml ~/.config/openbox/

默认地,里面有一句:

,这就是debian菜单,默认位置为/var/lib/openbox/debian-menu.xml,如果你将它cp到~/.config/openbox/,并且在rc.xml中将/var/lib/openbox/debian-menu.xml这句话删掉,那么将会默认使用~/.config/openbox/debian-menu.xml.

………

/var/lib/openbox/debian-menu.xml

debian-menu.xml

menu.xml

……….

~/.config/openbox/debian-menu.xml是静态的,而/var/lib/openbox/debian-menu.xml则会随着软件的安装卸载而变化.

如果刚安装软件后debian菜单没有变化则需要

# update-menus $ touch ~/.config/openbox/menu.xml

2.5 快捷键定义

快捷键定义可以通过openbox本身或者xbindkeys来实现,xbindkeys放到下一章讨论,先说说openbox自带的设置.

在openbox配置文件rc.xml中快捷键定义占了很大一部分篇幅,由于目前obconf还无法对快捷键定制,所以只能自己修改rc.xml

xml的语法非常简单,下面是一个例子:

<keybindkey="W-v"><!--定义一个快捷键win健+v --><actionname="Execute"><!--类型为执行 --><startupnotify><enabled>true</enabled><name>gvim</name><!--名字 --></startupnotify><command>gvim</command><!--命令,可以为脚本 --></action></keybind>

2.6 鼠标主题

鼠标主题可以在gnome-look.org或者box-look.org或者其他网站上找到,我使用的是源里面的dmz-cursor-theme(ubuntu默认的那个cursor theme)

# aptitude install -y dmz-cursor-theme

如下命令可以获得更多源内的鼠标主题选择(也许用synaptic的搜索功能会更精确一些):

$ apt-cache search "cursor theme"

如果是自己找的压缩包,需要将其解压到/usr/share/icons/下面

然后在~/.Xdefaults中加入一句:

Xcursor.theme: [name-of-cursor-theme]

我更推荐用以下方法:

# update-alternatives --config x-cursor-theme

2.7 icon主题

Icon主题首先需要安装

如下命令查看可供选择的主题

# apt-cache search "icon theme"

然后到/usr/share/icons/下面查看主题的名字,比如/usr/share/icons/Mist

然后打开~/.gtkrc.mine加入

gtk-icon-theme-name="Mist"

打开~/.gtkrc-2.0,确保里面有:

include "/home/USERNAME/.gtkrc.mine"

最后为了那些以root权限打开的程序(比如synaptic,gedit)不那么难看,要把~/.gtkrc.mine,~/.gtkrc-2.0复制给root:

# cp /home/USERNAME/.gtkrc.mine /home/USERNAME/.gtkrc-2.0 /root/

3 外部程序

openbox是一个功能单一的WM(符合UNIX哲学中的KISS).

如果需要一些额外的功能,比如面板,背景等等就需要其他的程序来支持,这对gnome/kde用户来说也许比较难以理解,但这正是"一个程序完成一个目标"的集中体现.

以下程序如果希望随openbox一同启动,需要将其加入autostart.sh

3.1 文件管理器

GUI的文件管理器有很多选择:

nautilus,pcmanfm,rox-filer,thunar,xfe,gnome-commander…

nautilus会自动接管桌面,所以最好不要选它.我推荐使用pcmanfm或者thunar.

具体可以去google它们.

安装都只要aptitude install就行了.

CLI的文件管理器不用说,mc自然是首选.

3.2 桌面背景

最简单的设置就是用feh来实现

# aptitude install -y feh $ feh --bg-scale [path-to-picture]

feh是一个轻量的图片查看器,非常实用.

为了每次启动openbox后都有背景图片,需要将下面一行写入autostart.sh

feh —bg-scale [path-to-picture] & ##注意&符号别漏了

feh还有几个和设置背景有关的参数:

bg-tile

bg-center

bg-seamless

# aptitude install habak

稍微修改下,以显示背景:

#!/usr/bin/perl

$picpath='/home/stesen/pic/random';

$backgroung='/home/stesen/pic/dusk.png';

chdir $picpath;

$num=int 4+rand(7);

print "$num\n";

my @files = glob "*.png";

unlink glob "/tmp/d-*.png";

for(1..$num){

$in=$files[int rand(@files)];

print "$in\n";

$out="/tmp/d-$in";

$rot=int rand(90)-45;

$size=int 100+rand(100);

`convert \"$in\" -scale $size -bordercolor white -border 6 -bordercolor grey60 -border 1 -background none -rotate $rot -background black \\( +clone -shadow 60x4+4+4 \\) +swap -background none -flatten \"$out\"`;

}

chdir '/tmp/';

my @files = glob "d-*.png";

my $cmd="habak -ms $backgroung";

foreach(@files){

my $x=int rand(1000);

my $y=int rand(600);

$cmd=$cmd." -mp $x,$y $_";

}

`$cmd`;

效果:

3.3 面板

面板也有不少选择:

pypanel,bmpanel,tint2,lxpanel,fbpanel,perlpanel,fspanel,xfce4-panel,gnome-panel

我推荐其中的tint2和xfce4-panel

xfce4-panel的配置很简单,功能还算可以.

我认为tint2是最适合跟openbox搭配的,它的外观定制性很高,功能不多,但必要的功能全都有了

安装:

# aptitude -y tint2

配置:

在/usr/share/doc/tint2/examples目录下面有好几个示例.

详细的解释位于项目主页,耐心看完就会配置了:

[http://code.google.com/p/tint2/wiki/Configure]

下面是我目前的配置:

#---------

BACKGROUND AND BORDER

#---------

rounded = 0

border_width = 0

background_color = #282828 0

border_color = #000000 0

rounded = 0

border_width = 0

background_color = #cccccc 20

border_color = #ffffff 20

rounded = 0

border_width = 0

background_color = #000000 20

border_color = #000000 20

#---------

PANEL

#---------

panel_monitor = all

panel_position = top right

panel_size = 1098 18

panel_margin = 0 0

panel_padding = 0 0 2

font_shadow = 0

panel_background_id = 1

wm_menu = 0

#---------

TASKBAR

#---------

#taskbar_mode = multi_desktop

taskbar_mode = single_desktop

taskbar_padding = 0 0 0

taskbar_background_id = 2

#---------

TASKS

#---------

task_icon = 1

task_text = 1

task_maximum_size = 120

task_centered = 0

task_padding = 3 1

task_font = DejaVu Sans 8

task_font_color = #ffffff 60

task_active_font_color = #ffffff 100

task_background_id = 0

task_active_background_id = 3

#---------

CLOCK

#---------

time1_format = %H:%M

time1_font = DejaVu Sans 8

#time2_format = %A %d %B

#time2_font = san 5

clock_font_color = #ffffff 100

clock_padding = 1 0

clock_background_id = 2

clock_lclick_command = urxvt -e mocp

clock_rclick_command = rednotebook

#---------

SYSTRAYBAR

#---------

systray_padding = 0 0 0

systray_background_id = 2

#---------

BATTERY

#---------

battery = 0

battery_low_status = 10

battery_low_cmd = notify-send "battery low"

bat1_font = sans 7

bat2_font = sans 7

battery_font_color = #ffffff 100

battery_padding = 1 0

battery_background_id = 0

#---------

MOUSE ACTION ON TASK

#---------

mouse_middle = close

mouse_right = toggle

mouse_scroll_up = toggle

mouse_scroll_down = iconify

3.4 系统监视器

系统监视器自然首推conky了,其他gkrellm也很不错,但conky最为灵活

conky有图形界面的配置工具,但大多不怎么好用,好在conky的配置不怎么麻烦,具体的配置选项可以看看man,比网上介绍的都要详细得多,多看看别人的配置文件也使一个不错的选择.

以下是我用过的两种配置

在右边生成一个conky,比较普通,信息量大,其中的hddtemp需要权限:

# sudo visudo

加入:

ALL ALL=NOPASSWD:/sbin/hddtemp

conkyrc内容:

background yes

cpu_avg_samples 2

net_avg_samples 2

out_to_console no

font -adobe-helvetica-*-r-normal—10-*-*-*-*-*-*-*

use_xft yes

xftfont WenQuanYi Micro Hei Mono:size=7

own_window_colour black

xftalpha 0.8

update_interval 1

double_buffer yes

minimum_size 5 5

maximum_width 280

draw_shades no

draw_outline no

draw_borders no

stippled_borders 1

border_margin 5

border_width 1

draw_graph_borders no

default_color lightgrey

default_shade_color black

default_outline_color grey

color0 FFFFFF

color1 F5F5F5

color2 A2AEC6

color3 696969

color4 D3D3D3

color5 6495ED

color6 87CEFA

color7 5F9EA0

color8 BBBBBB

color9 f8ea5e

alignment top_right

gap_x 5

gap_y 5

use_spacer yes

no_buffers yes

uppercase no

background yes

own_window no

own_window_transparent yes

own_window_type desktop

TEXT

${hr 2}

${offset 60}${font OpenLogos:size=18}${color red}J$font${voffset -15}${font Impact:size=11}${color dee01e} Debian GNU/Linux${font } sid

${voffset 1}$color${hr 2}

${color 93ee12}${font}kernel

font$alignr${color} $kernel

${color 93ee12}${font}Uptime

font$alignr${color} $uptime

${font sans-serif:size=8}${color 93ee12}CpuInfo

{font}${color}$alignr${exec cat /proc/cpuinfo | grep "model name" -m1 | cut -d":" -f2 | cut -d" " -f2-| sed 's#Processor ##'|sed 's/CPU/ /g'|sed 's/@/ /g'|sed 's/ \{2,\}/ /g'}$font

$color$stippled_hr

${color 93ee12}${font sans-serif:size=8}IP Address

font${color}

${offset 20}eth0 IP : ${addr eth0}

${offset 20}wlan0 IP : ${addr wlan0}

${font sans-serif:size=8}${color 93ee12}Acpi-Temp

{offset 40}HDD-Temp

{offset 40}Frequency

font

${color}${exec sensors| tail -2 |head -1|cut -d" " -f8|cut -d"+" -f2} ${exec echo 998755 | sudo -S hddtemp /dev/sda |cut -d":" -f3 | cut -d" " -f2} $freq MHz

$color$stippled_hr

${font sans-serif:size=8}${color 93ee12}CPU Usage

font ${color}Total: $cpu%${alignr}cpu0: ${cpu cpu0}% cpu1: ${cpu cpu1}%

${color}${cpugraph cpu0 20,135 262729 87CEFA}${offset 10}${cpugraph cpu1 20,135 262729 87CEFA}

${offset 2}${color 93ee12}${font sans-serif:size=8}Disk IO

font ${color}Total $diskio${alignr}Read: ${diskio_read}Write: $diskio_write

${color}${diskiograph_read 20,135 262729 87CEFA}${offset 10}${diskiograph_write 20,135 262729 87CEFA}

${color 93ee12}${font sans-serif:size=8}RAM Usage

font${color}${alignr}$mem/$memmax

${membar 3}$color

${color 93ee12}${font sans-serif:size=8}Battery:$font$alignr${color}${battery_time} left—${battery_percent}%

${battery_bar 3}

${color 93ee12}${font sans-serif:size=8}File Systems:$font

${offset 10}${color 87CEFA}/boot: ${color 87CEFA}${fs_used /boot}/${fs_size /boot} ${color}$alignr${fs_bar 3,115 /boot}$font

${offset 10}${color 87CEFA}/home: ${color 87CEFA}${fs_used /home}/${fs_size /home} ${color}$alignr${fs_bar 3,115 /home}$font

${offset 10}${color 87CEFA}/ : ${color 87CEFA}${fs_used /}/${fs_size /} ${color}$alignr${fs_bar 3,115 /}$font

$color$stippled_hr

${color 93ee12}${font sans-serif:size=8}Networking:$font${color}

${offset 4}${color 87CEFA}Marvell 88E8039 PCI-E Fast Ethernet Controller:${color }

${offset 10}${font PizzaDude Bullets:size=8}r${font}Down: ${downspeed eth0}

${offset 10}${font PizzaDude Bullets:size=8}U${font}Total Down: ${totaldown eth0}${voffset -10}$alignr${voffset -5}$color${downspeedgraph eth0 20,130 262729 87CEFA}

${color }${offset 10}${font PizzaDude Bullets:size=8}r${font}Up : ${upspeed eth0}

${offset 10}${font PizzaDude Bullets:size=8}U${font}Total Up : ${totalup eth0}${voffset -10}$alignr${voffset -5}$color${upspeedgraph eth0 20,130 262729 87CEFA}

${offset 4}${color 87CEFA}Intel PRO/Wireless 3945ABG Network Connection:${color }

${offset 10}${font PizzaDude Bullets:size=8}r${font}Down: ${downspeed wlan0}

${offset 10}${font PizzaDude Bullets:size=8}U${font}Total Down: ${totaldown wlan0}${voffset -10}$alignr${voffset -5}$color${downspeedgraph wlan0 20,130 262729 87CEFA}

${color }${offset 10}${font PizzaDude Bullets:size=8}r${font}Up : ${upspeed wlan0}

${offset 10}${font PizzaDude Bullets:size=8}U${font}Total Up : ${totalup wlan0}${voffset -10}$alignr${voffset -5}${color}${upspeedgraph wlan0 20,130 262729 87CEFA}

$color $stippled_hr

${color 93ee12} ${font sans-serif:size=8}Name $alignr PID CPU% MEM%$font

${color #FF0000} ${top name 1} $alignr${top pid 1} ${top cpu 1} ${top mem 1}

${color orange} ${top name 2} $alignr${top pid 2} ${top cpu 2} ${top mem 2}

${color yellow} ${top name 3} $alignr${top pid 3} ${top cpu 3} ${top mem 3}

${color #0077FF} ${top name 4} $alignr${top pid 4} ${top cpu 4} ${top mem 4}

${color} ${top name 5} $alignr${top pid 5} ${top cpu 5} ${top mem 5}

${voffset 50}${offset 45}${font Ani:size=24}${color gray}${time %Y-%m-%d}

${offset 200}${voffset -20}${font Ani:size=15}${color gray}${time %R}

conky有许多有趣的配置,如果懂得lua,那么它几乎是无所不能的

下面再加上一个我目前用的conkyrc中的一段日历:

${color2}${goto 10}${font DejaVu Sans Mono:size=44}${time %H}${font DejaVu Sans Mono:size=20}${voffset -25}'${time %M}${font DejaVu Sans Mono:size=8}${voffset -12}${time %S}

${color2}${goto 85}${voffset 10}${font :size=8}${time %A}

${color2}${goto 85}${voffset 1}${font :size=8}${time %d %B %Y}

${color}${font DejaVu Sans Mono:size=8}${execpi 3600 DJS=‘date +%_d`; cal -m | sed ’1d' | sed '/./!d' | sed 's/$/ /' | fold -w 21 | sed -n '/^.\{21\}/p' | sed 's/^/${alignc} /' | sed /" $DJS "/s/" $DJS "/" "'${color2}'"$DJS"'${color}'" "/}${font}

${color e0e0e0}${font DejaVu Sans Mono:size=10}${execpi 1800 DJS=‘date +%_d`; cal | sed ’1d' | sed '/./!d' | sed 's/$/ /' | fold -w 21 | sed -n '/^.\{21\}/p' | sed 's/^/${alignc} /' | sed /" $DJS "/s/" $DJS "/" "'${color red}'"$DJS"'${color 8F8F8F}'" "/}${font}

我在google code上建了个小项目(主要是练手svn),用以在conky上显示农历日期:

[https://code.google.com/p/colunar/]

下载下来,解压,进入目录然后

$ make

生成的colunar文件放在自己的PATH中,或者在conky中以绝对路径表示它,项目wiki中有介绍

debian默认的conky是不支持xmms2的,要用它来显示xmms2信息的话需要自己编译

下载最新版:

[http://conky.sourceforge.net/]

# aptitude install libxmmsclient-dev build-essential libx11-dev libxext-dev libxdamage-dev libxft-dev libglib2.0-dev $ cd conky-XXXXX $ ./configure --enable-xmms2 --disable-mpd $ make # make install

configure时需要一些dev文件,需要自己aptitude search

conkyrc中xmms2的设置看看man.

3.5 pager

我认为unix/linux图形界面中最吸引人的就是虚拟桌面,说到虚拟桌面不得不说pager,即虚拟桌面的管理器

openbox可用的pager有bbpager,netwmpager,ipager等等,在panel中也可能带有pager

我推荐的是netwmpager和ipager.

ipager是一个很不错的pager,但是一直存在编译无法通过的问题,项目也很久没有更新了,原先在下面的debian源里有一个打过补丁的ipager源码包,可以编译成功,但现在已经没有了

[http://mentors.debian.net/debian/pool/main/i/ipager/]

对我们这些不具备生产能力的普通用户来说,一个项目的消亡意味着我们将要在google上拼命搜索另一个类似的项目,最后我找到了netwmpager

netwmpager是一个非常小的项目,甚至不像ipager还有个官方页面,但并不影响它成为一个优秀的pager

它支持真透明,支持颜色大小配置,是一个比较灵活的pager

根据crunchbang的介绍:

[http://crunchbanglinux.org/wiki/netwmpager_howto]

# aptitude install -y libxft-dev $ wget http://ftp.osuosl.org/pub/gentoo/distfiles/netwmpager-1.11.tar.bz2 $ tar -xvf netwmpager-1.11.tar.bz2 $ cd netwmpager-1.11 $ ./configure $ make # make install

配置netwmpager

可以参考我的配置文件:

desktop layout

set both to -1 to use default values (set by window manager)

cols = -1

rows = -1

window geometry

set height to 0 to make it automatically calculated

geometry = "180x18-1100+0"

show window title popups?

show_popups = true

show sticky windows in pager?

show_sticky = false

show window titles in pager?

show_titles = false

below, normal, above

layer = "below"

opacity. 0.0 = transparent, 1.0 = normal

Requires Xcomposite extension in X and

xcompmgr or composition manager in WM.

opacity = 0.30

allow other windows to cover pager?

#allow_cover = false

— fonts —

popup_font = "WenQuanYi Micro Hei Mono:size=7"

window_font = "WenQuanYi Micro Hei Mono:size=6"

— colors —

active_desk_color = "rgb:05/05/15"

inactive_desk_color = "rgb:3c/3c/3c"

win_border_color = "rgb:0/0/0"

grid_color = "rgb:f0/f0/f0"

active_win_color = "rgb:a2/a6/af"

active_win_font_color = "rgb:0/0/0"

inactive_win_color = "rgb:d6/d6/d6"

inactive_win_font_color = "rgb:0/0/0"

popup_color = "rgb:e6/e6/e6"

popup_font_color = "rgb:0/0/0"

3.6 多行的虚拟桌面

对openbox本身来说虚拟桌面是按照横向排列的,在它的wiki里我找到这么一句:

Control-Alt-Up:

Open the desktop switching dialog, to go to the desktop above the current one (This will only be useful if you use a pager to set up a desktop layout with multiple rows)

它暗示着我们可以将虚拟桌面设置为上下行,这是由pager决定的,但是遗憾的是ipager和netwmpager都没有提供这样的设置.

$ gcc -lX11 setlayout.c -o setlayout

放入PATH或者其他地方,运行:

setlayout 0 2 2 0

第一个0表示横向,1为纵向

第二个数字2表示2列

第三个数字2表示2行

最好将该命令加入autostart.sh

除了这个办法,我们还可以用偷梁换柱法,启动一个xfce4-panel,只留下xfce4-panel的pager插件,设置多行即可,然而xfce4-panel并不那么美观,主要是在openbox中它无法透明

3.7 平铺式的openbox

Openbox可以用一个小软件实现tiling窗口的特性,它就是pytyle.

[http://pytyle.com/wiki/Main_Page]

Pytyle支持很多WM,然而其中最完美的就是openbox了

先去下载源码包:

[http://sourceforge.net/projects/pytyle/]

# aptitude install -y python-xlib $ tar -xzf pytyle-version.tar.gz $ cd pytyle-version # python setup.py install $ pytyle

3.8 阴影管理器

xcompmgr是一个阴影管理器,它可以用来设置很多程序的真透明,系统资源占用也很低

# aptitude install -y xcompmgr $ xcompmgr

xcompmgr默认的配置就已经很好了,我认为不需要再添加参数了,需要的话man一下

./configure make make install 或者直接cp xcompmgr /usr/local/bin

参数有所不同

make install的话会带上manpage,看看man就知道参数了

xcompmgr -cCfF -t-5 -l-5 -r4.2 -o.55 -D3 -m.86 &

3.9 嵌入桌面的终端

首先我选择urxvt,因为它小,快,漂亮,当然还有其他选择,可以透明的虚拟终端都可以拿来用

# aptitude install -y rxvt-unicode

首先要对urxvt做一番配置,使其透明,下面是我的配置文件~/.Xdefaults

URxvt*font:xft:WenQuanYi Micro Hei Mono:size=9

urxvt*background: rgba:0000/0000/0000/dddd

URxvt*foreground: grey

URxvt*scrollBar: false

URxvt*borderless: 1

URxvt.cursorBlink: True

URxvt.cursorUnderline: True

URxvt*geometry: 84x24

URxvt*tintColor: grey

URxvt*fading: 0

URxvt*fadeColor: black

URxvt*shading: 0

URxvt*shadeColor: black

URxvt*inheritPixmap: true

URxvt*pointerColor: black

URxvt*pointerColor2: white

URxvt*depth: 32

URxvt*transparent: true

URxvt.transparency:100

URxvt*termName: rxvt

URxvt*color0: black

URxvt*color1: red3

URxvt*color2: green3

URxvt*color3: yellow3

URxvt*color4: DodgerBlue1

URxvt*color5: magenta3

URxvt*color6: cyan3

URxvt*color7: gray90

URxvt*color8: gray50

URxvt*color9: red

URxvt*color10: green

URxvt*color11: yellow

URxvt*color12: blue

URxvt*color13: magenta

URxvt*color14: cyan

URxvt*color15: white

URxvt.urlLauncher:iceweasel

URxvt.perl-ext-common: default,matcher,selection-pastebin,-selection-popup,-option-popup

URxvt.matcher.button: 1

URxvt.keysym.C-Delete: perl:matcher

URxvt.keysym.C-M-p: perl:selection-pastebin:remote-pastebin

URxvt.selection-pastebin.cmd: firefox `cat "%" | nopaste`

URxvt.saveLines:3000

第一段是重点,使得urxvt透明

然后对openbox做配置:

打开~/.config/openbox/rc.xml最后一行之前添加如下:

no

no

no

yes

0

0

below

all

yes

yes

3.10 音量控制

很多人问过我用什么GUI程序来控制音量,我推荐两个tray中的控制器:kmix和volwheel.

Kmix是kde的音量管理器,它功能比较多,最有用的一个就是它能接管我笔记本上面的音量控制键:XF86AudioLowerVolume和XF86AudioRaiseVolume.但可惜的是kmix依赖kdelibs,为了一个小小的音量控制,而安装那么多依赖,在我看来是难以忍受的,所以我选择了volwheel

$ wget http://olwtools.googlecode.com/files/volwheel-0.2.7-fixed.tar.gz $ tar xvf volwheel-0.2.7-fixed.tar.gz $ cd volwheel-0.2.7-fixed # install.pl

2010-8-24日:

补充一个:volumeicon

[http://softwarebakery.com/maato/volumeicon.html]

用下来感觉比volwheel还好些

另外用笔记本上面的音量控制键来控制音量的设置:

编辑~/.config/openbox/rc.xml

<keybindkey="XF86AudioMute"><actionname="Execute"><execute>amixer set Master toggle</execute></action></keybind><keybindkey="XF86AudioLowerVolume"><actionname="Execute"><execute>amixer set Master 1+%</execute></action></keybind><keybindkey="XF86AudioRaiseVolume"><actionname="Execute"><execute>amixer set Master 1+%</execute></action></keybind>

3.11 特殊按键设定

在一些键盘上有很多特殊健,比如笔记本上常见的Fn健,影音娱乐的控制键等,在rc.xml中不知道如何表示它,那么就用xbindkeys来设置

# aptitude install -y xbindkeys-config xbindkeys

xbindkeys-config是一个GUI的设置软件,免去了我们手动修改~/.xbindkeysrc的麻烦.

3.12 关机登出脚本

以前在网上看到一个zenty的关机重启登出脚本,http://yegle.net/tag/openbox/

稍微修改一下拿来用:

#!/bin/bash

ans=$(zenity —list —title "Make your choice" > —width=100 —height=200 —column "Choice" > Logout Suspend Reboot Poweroff);

echo $ans

case $ans in

'Logout')

echo "logout"

killall openbox && killall fcitx

;;

'Reboot')

echo "reboot"

sudo shutdown -r now

;;

'Poweroff')

echo "poweroff"

sudo shutdown -h now

;;

'Suspend')

echo "suspend"

sudo pm-suspend

;;

esac

将它加入obmenu

由于没有使用dbus,关机和重启需要权限:

# visudo

加入:

%adm ALL=(root) NOPASSWD:/sbin/shutdown

%adm ALL=(root) NOPASSWD:/usr/sbin/hddtemp

%adm ALL=(root) NOPASSWD:/usr/sbin/pm-suspend

然后:

# gpasswd -a USRNAME adm

# apt-get install python-imaging python-dbus # dpkg -i oblogout_XXXX_all.deb

还有两个python脚本:

1>

Screenshot :

wget http://www.ad-comp.be/public/projets/My_Exit/My_Exit.tar.bz2

#!/usr/bin/env python import pygtk pygtk.require('2.0') import gtk import os class DoTheLogOut: # Logout def logout(self, widget): os.system("openbox --exit && killall fcitx") # Reboot def reboot(self, widget): os.system("sudo shutdown -r now") # Shutdown def shutdown(self, widget): os.system("sudo shutdown -h now") # Suspend def suspend(self, widget): os.system("sudo pm-suspend") # Cancel/exit def delete_event(self, widget, event, data=None): gtk.main_quit() return False def __init__(self): # Create a new window self.window = gtk.Window(gtk.WINDOW_TOPLEVEL) self.window.set_title("Exit? Choose an option:") self.window.set_resizable(False) self.window.set_position(1) self.window.connect("delete_event", self.delete_event) self.window.set_border_width(20) # Create a box to pack widgets into self.box1 = gtk.HBox(False, 0) self.window.add(self.box1) # Create logout button self.button2 = gtk.Button("_Log out") self.button2.set_use_underline(True) self.button2.set_border_width(10) self.button2.connect("clicked", self.logout) self.box1.pack_start(self.button2, True, True, 0) self.button2.show() # Create reboot button self.button3 = gtk.Button("_Reboot") self.button3.set_use_underline(True) self.button3.set_border_width(10) self.button3.connect("clicked", self.reboot) self.box1.pack_start(self.button3, True, True, 0) self.button3.show() # Create shutdown button self.button4 = gtk.Button("_Shutdown") self.button4.set_use_underline(True) self.button4.set_border_width(10) self.button4.connect("clicked", self.shutdown) self.box1.pack_start(self.button4, True, True, 0) self.button4.show() # Create suspend button self.button5 = gtk.Button("S_uspend") self.button5.set_use_underline(True) self.button5.set_border_width(10) self.button5.connect("clicked", self.suspend) self.box1.pack_start(self.button5, True, True, 0) self.button5.show() # Create cancel button self.button1 = gtk.Button("_Cancel") self.button1.set_use_underline(True) self.button1.set_border_width(10) self.button1.connect("clicked", self.delete_event, "Changed me mind

") self.box1.pack_start(self.button1, True, True, 0) self.button1.show() self.box1.show() self.window.show() def main(): gtk.main() if __name__ == "__main__": gogogo = DoTheLogOut() main()

4 其他

其他包括许多,比如iceweasel(firefox)的外观设置,xterm的配置等等,就不一一讲述了.

toybox执行linux程序,OpenBox的配置教程(v0.6)相关推荐

  1. toybox执行linux程序,VirtualBox 的命令行用法

    作为一款功能强大的开源虚拟机软件,VirtualBox 不仅提供有图形化的用户界面,而且也包含命令行界面.VirtualBox 的命令行界面程序为 VBoxManage,通过它你可以完成从命令行创建虚 ...

  2. Linux下mongodb安装配置教程

    Linux下mongodb安装配置教程 这里写目录标题 Linux下mongodb安装配置教程 1. 在linux(ubuntu)下安装mongodb 2. 遇到的坑 1. 在linux(ubuntu ...

  3. Discuz!论坛程序安装+模板配置教程

    Discuz!论坛程序安装+模板配置教程 Linux系统安装方法: 第一步:检查是否安装apache mysql php ps -ef |grep httpd ps -ef |grep mysql p ...

  4. linux php 安装图文教程下载,linux下php安装配置教程

    linux下php安装配置教程 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 linux 下安装下安装 apache 与与 php ...

  5. linux基础配置脚本,Linux中selinux基础配置教程详解

    selinux(Security-Enhanced Linux)安全增强型linux,是一个Linux内核模块,也是Linux的一个安全子系统. 三种模式: Enforcing:强制模式,在selin ...

  6. linux基础教程之Linux操作系统安装图文配置教程详细版

    这篇文章主要为大家详细介绍了Linux操作系统安装图文配置教程,帮助大家顺利的安装Linux操作系统,感兴趣的小伙伴们可以参考一下 随着嵌入式的发展,Linux的知识是必须的一部分,下面就让我们进行L ...

  7. 本文是对优雅草蜻蜓C影视便捷追剧小程序微信支付配置教程-大部分小程序支付通用,从微信配置到后台的详解,其他小程序系统均可参考

    本文是对优雅草蜻蜓C影视便捷追剧小程序微信支付配置教程-大部分小程序支付通用,从微信配置到后台的详解,其他小程序系统均可参考 微信支付配置 1,下载工具 ​ 编辑切换为居中 添加图片注释,不超过 14 ...

  8. 「seetaface2」中科院人脸识别引擎seetaface2在Linux Qt上的配置教程

    笔者的最新私人博客网站经过一段时间的努力,已经初期建设完毕,csdn上的博文会逐渐转移过去-- 欢迎访问呀- |=传=送=门=> 多多洛的博客 2016年,中科院山世光老师开源了其研发的seet ...

  9. linux iis 环境配置教程,Linux系统Java环境配置教程

    1.卸载Linux系统自带的JDK 我们要删除掉自带的JDK环境 再次查询是否已经删除 2.安装自己下载的JDK 2.1 下载JDK,地址: http://www.oracle.com/technet ...

最新文章

  1. 大厂面试必问!给培训班出身的程序员一些建议
  2. [BZOJ 4034][HAOI2015]树上操作(欧拉序列+线段树)
  3. 关于用notepad++确认代码中\r\n\t空格等不显示的字符
  4. easyexcel获取所有sheet页名称_老板让我汇总多个sheet,我不会,同事却说使用PQ仅需2步搞定...
  5. oracle primavera p6 下载,【项目管理软件套装】Oracle Primavera P6 Enterprise
  6. imx6 android6.0.1,mfgtool刷写i.MX6 android6.0版本失败
  7. 23篇大数据系列(三)sql基础知识(史上最全,建议收藏)
  8. JAVA之进制转换(全)
  9. Linux系统下挂载Windows分区的方法和技巧
  10. FatFs- 通用FAT文件系统模块
  11. 树莓派学习笔记(5):成功实现NAS家庭服务器(流媒体播放、文件共享及下载机)...
  12. ssl2206 最小花费
  13. 老司机教你下载tumblr上视频和图片的正确姿势
  14. 和ts一般怎么玩_AG首发大换血,成功复仇TS,发了工资的TS谁也打不赢?
  15. 国产芯片一级供应商有哪些
  16. 腾讯 Tars 开源 Go 版本 Tars-Go,并发性能比 gRPC 高 5 倍
  17. 文章如何在paperpaper查重
  18. 中国虚拟邮箱软件行业市场供需与战略研究报告
  19. 短视频批量解析下载,多个自媒体短视频一键下载
  20. 连续7天登录MySQL求解

热门文章

  1. 二、为uniapp项目配置基于airbnb风格的Eslint代码检查规则
  2. linux 解压7z的压缩包,解压多个拆分的压缩包
  3. 1024程序员节|去他的人傻钱多,码农的柔情,你永远不懂!
  4. tf.saved_model.save模型导出、TensorFlow Serving模型部署、TensorBoard中的HParams 超参数调优
  5. js根据ip地址获取城市地理位置
  6. 机器学习项目-音乐系统推荐系统-音乐分类-Pydub-python_speech_featrures MFCC-SVM
  7. java strem filter 对象自定义去重
  8. 【干货】数据安全工具建设实践
  9. skywalking分布式链路追踪
  10. 项目学习记录(四)--基于图像检测的AR语文识字应用