- 论坛徽章:
- 0
|
默认各位看官已知Fluxbox下基本的keys配置。![]()
1、备份keys文件:
代码: | $cp ~/.fluxbox/keys ~/.fluxbox/keys.bak |
2、keys文件书写格式
代码: | <mod> [<mod> <mod>] key [key key] :command <command_options> |
注:冒号前至少留一格,后不留格;shell命令大小写敏感,但窗口管理命令并不敏感。
mod可以是Mod1(alt)、Control(ctrl)、Mod4(Super)等;key即为普通键(e,d,F1,F3等)。
其中,mod键自身是可选的,没有时用None替代,不用也可。但只用普通字母键,输入文字时会有麻烦。
先看一些例子:
代码: | Mod1 r :ExecCommand urxvt # alt+r启动rxvt-unicode;ExecCommand同Exec,执行命令或脚本
Mod4 4 :Workspace 4 # Super+4切换到工作区4;工作区命令
Menu :RootMenu # Menu键位于右ctrl左边;Fluxbox内建命令
Mod1 F4 :KillWindow # Alt+F4关闭当前进程;窗口管理命令
Mod1 70 :KillWindow # 同上,70是F4的keycode,由xev程序获得,见第3小节
Control m :MacroCmd {Exec firefox} {ResizeTo 800 600} # ctrl+m启动firefox,并调整大小到800x600;复合命令 |
窗口管理命令详见这部分
Fluxbox内建命令详见这部分
工作区命令详见这部分
复合命令详见这部分
3、获得keycode,并适当定义xmodmap
i)xev命令
注意两点:
1)终端运行xev时,鼠标的运行也会被捕获,所以尽量少动鼠标,除非想获得鼠标键的keycode
2)关闭启动时的窗口即关闭了xev进程
3)keycode与keyname在Fluxbox keys文件中同样有效;例如运行xev,按tab键,信息中有一段"keycode 23 (keysym 0xff09, Tab)",23与Tab等价
推荐使用xmodmap获得keycode。例如要获得Tab的keycode,执行:
代码: | $xmodmap -pke | grep -i tab |
ii)定义xmodmap
这个通常在需要分清左右非字符键时用到。
简单的示例:
代码: | keycode 115 = Super_L
keycode 116 = Super_R
clear mod3
add Mod3 = Super_L
clear mod4
add Mod4 = Super_R |
要让配置在启动Fluxbox时生效,加入命令到startup脚本:xmodmap ~/.Xmodmap &,须在Fluxbox启动命令之前。
这样,在keys文件中,Mod3和Mod4就分别自定义到左Super和右Super键了;本人一般用Super_L+d执行ShowDesktop,用Super_R+l执行xlock(安装xlockmore)锁定桌面。
4、一些复杂点的应用
i)键盘控制音量
很多键盘上(e.g.笔记本,但本人没有笔记本,不好测试,keycode/keyname获得见第3小节)有音量加减及静音的键,如果Fluxbox(无gnome/kde daemon)默认未定义,可于keys文件中仿照下面语句加入:
代码: | Mod3 KP_Add :ExecCommand amixer sset PCM 10%+
Mod3 KP_Subtract :ExecCommand amixer sset PCM 10%- |
Mod3已定义为Super_L,KP_*可由"$xmodmap -pke | grep -i kp"查到;sset或改为set,PCM或改为Master,0,10%+或改为8db+,视硬件和个人要求而定;更复杂的请查看amixer命令(在alsa-utils包中)的帮助文档。
ii)小程序开关
有时只是查看一下信息,运行一个小程序(例如conky),但又不想让它一直运行,就可使用复合命令ToggleCmd,写入keys文件:
代码: | Mod3 v :ToggleCmd {Exec conky} {Exec pkill conky} |
ToggleCmd的作用和Toggle的意思一样,按键一次,切换一次定义的命令。
ToggleCmd的另一个应用就是桌面聚焦和窗口恢复,语句:
代码: | Mod3 d :ToggleCmd {ShowDesktop} {DeIconify all originquiet} |
iii)发送窗口到指定工作区,并最小化
这个有时会用到,MacroCmd可以实现;例如发送到工作区3,语句:
代码: | Mod4 F3 :MacroCmd {SendToWorkspace 3} {Iconify} |
iv)设定窗口装饰alpha值
设定当前窗口的透明度(窗体透明实现,本文不涉及),记得compiz中用alt+鼠标滚轮(?),Fluxbox也可实现。语句:
代码: | Mod1 Mouse4 :SetAlpha +5 +5
Mod1 Mouse5 :SetAlpha -5 -5
Mod1 KP_Multiply :ToggleDecor |
其中,Mouse4/5由xev程序查看到,分别是鼠标上/下滚;alt+*(小键盘)用于开关窗口标题栏。
v)截图/窗口截图
并不复杂,scrot(import也行,个人决定)语句(~/incoming自己建,或者改成别的目录):
代码: | Print :Exec scrot ~/incoming/scrot@$(date +%F_%T).png |
选择/窗口截图:
代码: | Mod1Print :Exec zenity --info --title="Scrot Message" --text="select a window/rectangle to snapshot" && scrot -s~/incoming/scrot@$(date +%F_%T).png |
vi)自定义菜单
Fluxbox1.0rc3之后的版本中提供了自定义菜单的功能($mkdir ~/.fluxbox/customMenus),最合适不过的就是使用键绑定来调用菜单了吧。例如mpd的菜单组合键:
代码: | Mod3 b :CustomMenu ~/.fluxbox/customMenus/mpd |
使用mpd的,可以自己写个menu,简单示例如下:
代码: | [begin] (MPD)
[exec] (Reload Config File) {killall mpd; mpd ~/.mpdconf} <>
[exec] (Update Database) {mpd --creat-db; mpc update && mpc ls | mpc add -} <>
[exec] (Play/Pause) {mpc toggle} <>
[exec] (Next) {mpc next} <>
[exec] (Stop) {mpc stop} <>
[submenu] (Repeat)
[exec] (On) {mpc repeat on} <>
[exec] (Off) {mpc repeat off} <>
[end]
[exec] (Quit) {mpc stop && killall mpd} <>
[end] |
最后再强调一句,有了MacroCmd/ToggleCmd以及customMenus,Fluxbox的强大可见一斑。
[ 本帖最后由 helo_aBiNg 于 2007-12-18 21:10 编辑 ] |
|