China FreeBSD

OpenBox桌面配置指南

  • 贡献者:HHJ
  • 阅读:2422
  • 类别:系统服务
  • 更新时间:2017-10-21 12:24:30

OpenBox桌面的特点

  • 速度非常快,资源占用极少。
  • 可高度定制化,能够对应用程序加以灵活控制。
  • 能够绑定键盘和鼠标。比如,你可以为程序设定启动快捷键,也可以为最小/大化窗口设置热键。对于鼠标,同样如此。
  • 具有自动启动脚本,能够随机自动启动各种程序。
  • 主题资源丰富,与 *box 类视觉样式兼容。Openbox 的外观是简约而不简单。
  • 支持会话,可深入 GNOME、KDE、Xfce 等桌面环境使用。换句话说,Openbox 可替代这些桌面环境中默认的窗口管理器,而其他桌面组件仍旧保持原样。
常用工具
 软件名称         简介
slim        轻量级图形登录管理器,替代gdm/kdm
tint2      轻量级面板
tint2conf     tint2的图形化设置工具
wbar      dock程序,本身自带设置项
wbarconf     wbar的图形化设置工具,功能更全、更直观
feh      设置壁纸
obconf      openbox的图形化配置工具
obmenu      openbox的图形化菜单编辑工具
lxappearance   lxde的外观设置工具,同样适用于openbox,可设置主题,窗口字体等
obmixer     托盘区音量图标
networkmgr     托盘区网络连接管理器
clipit     托盘区复制粘贴工具
xbattbar     屏底电量显示条
scrot     截屏工具
pcmanfm     文件管理工具
以下工具未测试,先列示出来
 volti        - System tray volume control application
xfce4-mixer - Volume control application
xfce4-power-manager - Power management utility
nitrogen - Wallpaper picker and renderer
gmrun - Lightweight application launcher with auto complete functions
gksu - gksudo because we're going to need it later
dmenu - 用来自定义keybinding
面板:BMPanel、Fbpanel、Fspanel、LXPanel、Xfce4-panel  
文件管理器:
    Thunar:轻量,支持插件和自动挂载功能。
    ROX:轻量,提供一组文件/桌面图标。
    pcmanFM:稍微有点不轻量.
    ntfs-3g:允许pcmanFM 挂载 NTFS 设备.

安装窗口管理器Openbox

 pkg install openbox
启动配置(~/.xinitrc)
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
export LC_CTYPE=zh.CN.UTF-8
export XMODIFIERS="@im=fcitx"
fcitx &  exec openbox-session  xset b off

配置Openbox

自启动脚本

OpenBox的自启动脚本分为系统级和用户级,分别为:
/usr/local/etc/xdg/openbox/autostart
~/.config/openbox/autostart
autostart的本质是一个shell脚本,所以可以在其中自由发挥,但是推荐每行一个程序,如果运行程序需要占几行,最好另外写一个脚本,在autostart中调用,这样看起来更清晰。值得注意的是每行程序的最后应该用“&”表示后台运行,否则程序不结束就不会执行下一行。常把下列命令放在此文件中:
nm-applet
&tint2
&ibus-daemon -rxd
&(sleep 2 && obmixer)
&feh --bg-scale ~/image/wallpaper.jpg  #背景设定
wbar &
wbar, obmixer都要先等几秒再启动, 否则可能会有意想不到的错误。或将wbar放在背景设定之后,且feh后没有&。

配置右键菜单

系统级菜单位于 /usr/local/etc/xdg/openbox/menu.xml
用户级菜单位于 ~/.config/openbox/menu.xml
默认 Openbox 菜单包括很多菜单项供使用,其中有些尚未安装,可以直接编辑菜单文件,也可以使用菜单配置工具obmenu。除此之外,还可以使用MenuMaker自动生成OpenBox菜单。MenuMaker 用来为各种窗口管理器创建基于XML的菜单。MenuMaker将搜寻您电脑中的可执行程序,并在搜索结果的基础上建立一个XML菜单。根据需要,它可以配置除特定程序类型(类如 GNOME,KDE 等)外的程序。   
pkg install menumaker
安装后, 你可以通过运行以下命令来生成一个完整的菜单文件(menu.xml):
$ mmaker -v OpenBox3$ mmaker -vf OpenBox3
MenuMaker创建了一个很全面的 menu.xml. 你可以手动编辑 menu.xml文件, 或者在安装新的软件时生成一个新的菜单.

配置文件

openbox的配置文件主要有二个,分别是~/.config/openbox/rc.xml和~/.config/openbox/menu.xml.前者可以由obconf更改, 后者可由obmenu更改。注意:
  •  obconf:不能自定义rc.xml中的快捷键部分, 这里需要自行添加
  •  obconf: 虽然可改项很多, 但实际上并没有多少要改的,默认即可
  •  obmenu: 在桌面右键时, 会弹出一个菜单. obmenu就是自定义这个菜单的
  •  lxappearance: 相对来说, 这个可能更适合大多数用户, 选择窗口主题, 鼠标主题等等.
  •  tint2conf: 自定义tint2面板
  •  wbar-conf: 自定义wbar

快捷键设置

快捷键在~/.config/openbox/rx.xml中设置,一般格式如下:
 <keybind key="W-e">                 - 说明快捷键的表示文字,例子中是Windows徽标键加e字母键。
   <action name="Execute">          - 说明所执行的动作,例子中是Execute,意为这是一个执行程序的动作。
       <startupnotify>              - 表示执行内容的起始标签。
           <enabled>true</enabled>  - 该标签作用暂时未知。
           <name>PCManFM</name>     - 名字,例子中是PCManFM。
       </startupnotify>
   <command>pcmanfm</command>       - 执行的命令行。
   </action>
 </keybind>
设置完之后可以用指令来刷新openbox,或者打开窗口管理器菜单选择“刷新”选项。
 # openbox --reconfigure
显示桌面:windows+d
<keybind key=”W-d”>
    <action name=”ToggleShowDesktop”/>
</keybind>
当前窗口截取:ctrl+Print Screen
<keybind key=”C-Print”>
    <action name=”Execute”>
      <command>scrot -s “~/pictures/scrot/cut-%m.%d-%H%M%S.png”</command>
    </action>
</keybind>
全屏载取, Print Screen
<keybind key=”Print”>
    <action name=”Execute”>
      <command>scrot “~/pictures/scrot/screen-%m.%d-%H%M%S.png”</command>
    </action>
</keybind>
音量放大
 <keybind key=”XF86AudioRaiseVolume”>
    <action name=”Execute”>
      <command>amixer set Master 5%+ unmute</command>
    </action>
</keybind>
静音
 <keybind key=”XF86AudioMute”>
    <action name=”Execute”>
        <command>amixer set Master toggle</command>
    </action>
</keybind>
打开主页
 <keybind key=”XF86HomePage”>
    <action name=”Execute”>
      <command>firefox</command>
    </action>
</keybind>
多媒体快捷键配的难点主要在于确定该键位的表示名称, 大多数名称都是通用的.
  •  XF86AudioPlay 多媒体播放
  •  XF86AudioPause 多媒体暂停
  •  XF86AudioMute 静音
  •  XF86AudioRaiseVolume 增大音量
  •  XF86AudioLowerVolume 降低音量
  •  XF86HomePage 浏览器打开主页
  •  XF86Mail 邮件
  •  XF86Sleep 休眠
  •  XF86Calculator 计算器

随机壁纸脚本

d. 一个随机壁纸脚本, 有bash和python二种写法. 可以任选一个放到crontab里, 实现壁纸定时更换
bash写法
#!/bin/bash
#set -x
dir_wallpaper="/home/allblue/pictures/wallpapers"
cd "$dir_wallpaper"
#du比ls更适合列出子文件路径, 只要删出行首的大小与空格, 就可得到子文件的完整相对路径.

pic=$(du -a . | sed -r 's/^[0-9]+//' | sed -r 's/^[ \t]+//g' | sed -n -r '/png|jpg|jpeg/Ip' | shuf | head -1)
echo ""
date
echo "$pic"
if [ -f "$pic" ]; then
#crontab运行时,需指定DISPLAY变量
DISPLAY=:0 feh --bg-center "$pic" &
killall wbar
#wbar默认会以英文环境启动, 需指定LANG变量
env LANG=zh_CN.UTF-8 DISPLAY=:0 wbar --pos top-left --isize 35 --zoomf 1.8 --jumpf 1 --bpress &··
fi

python写法

#!/usr/bin/python
#encoding=utf-8
import os
import random

def filepath(v,fdir):
h=os.path.abspath(fdir)
if os.path.isdir(h):
for subdir in os.listdir(h):
filepath(v,os.path.join(h,subdir))
else:
v.append(h)
#print(h)
········
if __name__ == "__main__":
sdir="/home/allblue/pictures/wallpapers"
u=[]
filepath(u,sdir)
item=""
item=random.choice(u)
#print(item)
if item.split(".")[-1].lower() == "jpeg" or item.split(".")[-1].lower() == "jpg" or item.split(".")[-1].lower() == "png" :
item = '"'+item+'"'
cmd="DISPLAY=:0 feh --bg-center "+item+" &"
os.system(cmd)
os.system("killall wbar")
os.system("env LANG=zh_CN.UTF-8 DISPLAY=:0 wbar --pos top-left --isize 35 --z