2008年10月14日星期二

我的 sawfish 配置

~/.sawfishrc

;;; Jian Lee 的 Sawfish 配置文件,
;;; 参考很多网上资源,这里先 表示感谢

;; 建议了解 elisp 语法后再用 emacs、sawfish 之类使用 lisp 语法扩张的程
;; 序。

;; 关于文中的一些自定义的说明,我放在配置文件最后了。

;; sawfish扩展和emacs一样多,同样通过load-path来加载,一般放到
;; ~/.sawfish/extensions 里面吧
(setq load-path (cons "~/.sawfish/extensions" load-path))

;(require 'sawmill-defaults)
;(setq menu-program-stays-running t)

;; 改变字体(setq default-font (get-font
;"-misc-simsun-medium-r-normal-*-*-120-*-*-*-*-iso10646-1"))
; (setq default-font (get-font
;"xft:simsun:encoding=iso10646-1:pixelsize=15"))

(require 'sawfish.wm.menus)
(setq my-menu
'(("终端 Urxvt" (system "urxvt -tn xterm &"))
("浏览 Firefox" (system "firefox &"))
("邮件 Thunderbird" (system "thunderbird &"))
("聊天 Pidgin" (system "pidgin &"))
("编辑 Emacs" (system "emacs -bg rgb:16/48/64 -fg white &"))
("网页 Bluefish" (system "bluefish &"))
("管理 rox-filer" (system "rox &"))
("图像 Gqview" (system "gqview &"))
("音乐 XMMS" (system "xmms &"))
("字典 Stardict" (system "stardict &"))
("文本 leafpad" (system "leafpad &"))
("阅读 PDF" (system "acroread &"))
("远程 tsclient" (system "tsclient &"))
("实验 VMware" (system "vmware &"))
("取色 Gcolor2" (system "gcolor2 &"))
("运行 gmrun" (system "gmrun &"))
))


(defun popup-my-menu ()
(interactive)
(popup-menu my-menu))

(bind-keys global-keymap "Button1-Click1" 'popup-my-menu)
(bind-keys global-keymap "Super-F1" 'popup-my-menu)
;;(bind-keys global-keymap "Button2-Click1" 'popup-root-menu)
;;(bind-keys global-keymap "Button3-Click1" 'popup-window-menu)


;(defun one-instance-exec (prog)
;(interactive)
;(if (= (ash (system (concat "ps -C" prog)) -8) 0)
;()
;(system (concat prog " &"))
;))


;; jump-or-exec
;; 如果程序在运行,就调到当前桌面,如果没有运行,就运行它。
(require 'jump-or-exec)
(bind-keys global-keymap
"Hyper-e" `(jump-or-exec "^yang@"
,(lambda ()
(system "emacs &"))
,(lambda (wind)
(display-window wind))))
(bind-keys global-keymap
"Hyper-t" `(jump-or-exec "~"
,(lambda ()
(system "urxvt -tn xterm &"))
,(lambda (wind)
(display-window wind))))
(bind-keys global-keymap
"Hyper-f" `(jump-or-exec "Firefox"
,(lambda ()
(system "firefox &"))
,(lambda (wind)
(display-window wind))))
(bind-keys global-keymap
"Hyper-r" `(jump-or-exec "Rox"
,(lambda ()
(system "rox &"))
,(lambda ()
(display-window wind))))
(bind-keys global-keymap
"Hyper-p" `(jump-or-exec "Pidgin"
,(lambda ()
(system "pidgin &"))
,(lambda (wind)
(display-window wind))))
(bind-keys global-keymap
"Hyper-g" `(jump-or-exec "GQview"
,(lambda ()
(system "gqview &"))
,(lambda (wind)
(display-window wind))))

;; 定义窗口行为,我一般使用 Super 键
; 按住 Super和q键,安全关闭窗口
(bind-keys window-keymap "Super-q"
'(delete-window-safely (current-event-window)))
; 按住 Super和x 键,关闭当前窗口
(bind-keys window-keymap "Super-x"
'(delete-window (current-event-window)))

; 移动窗口到(0,0)处
(bind-keys window-keymap "Super-l"
'(move-window-to (current-event-window) 0 0))
; 返回当前窗口名字
(bind-keys window-keymap "Super-n"
'(display-message (window-name (current-event-window))))
; 最大化
(bind-keys window-keymap "Super-w"
'(maximize-window-vertically (current-event-window)))
(bind-keys window-keymap "Super-a"
'(maximize-window-horizontally (current-event-window)))
(bind-keys window-keymap "Super-s"
'(unmaximize-window (current-event-window)))

; 最大化
;(bind-keys window-keymap "Super-m"
; '(move-resize-window-to (current-event-window) 0 0 1024 768))
; 右半边
;(bind-keys window-keymap "Super-r"
; '(move-resize-window-to (current-event-window) 512 0 512 768))

; 隐藏窗口
;(bind-keys window-keymap "Super-s"
; '(hide-window (current-event-window)))

;;; 本配置文件自定义的说明

;; 1。Super、Hyper 键绑定
; 我用xmodmap修改了键盘按键的keycode,我的~/.Xmodmap文件如下:
;keycode 37 = Control_L
;keycode 64 = Alt_L
;keycode 108 = Super_R
;keycode 105 = Hyper_R
;clear control
;add control = Control_L
;clear mod1
;add mod1 = Alt_L
;clear mod3
;add mod3 = Super_R
;clear mod4
;add mod4 = Hyper_R
;keycode 66 = Escape
;keycode 9 = Caps_Lock

;; 2。jump-or-exec 在网上down的

没有评论: