我的Sawfish配置文件(2011-8-2更新配置文件内容)

各种窗口管理器和美化相关
回复
头像
liu滔
帖子: 7212
注册时间: 2010-10-09 23:01

我的Sawfish配置文件(2011-8-2更新配置文件内容)

#1

帖子 liu滔 » 2011-07-19 16:06

为了照顾各位的眼睛,我手动断行了 :em09

弄了这么多天,Sawfish的配置总算是弄出点眉目和花样来了。不过这点花样和眉目却不是修改标题栏和边框这种
人民群众喜闻乐见并且显而易见再来可以作为茶余饭后消遣讨论的东西,而是让Sawfish可以提高使用者的效率的
一点功能和特性。 :em11

关于Sawfish,我对它抱有着特殊的情感。但这不是人兽之爱,更不是同志之情……喜欢Sawfish,但同时也对它有
那么一点点的不满——只有一点点而已哦~~~~~~喜欢它启动非常地快,但是由觉得它很脆弱,动不动就死在
那儿了 :em06 之前有两次Sawfish挂掉的经历,不知道为啥——好吧,或许是其它软件挂了而把整个系统弄得好像
是Sawfish挂掉一样也很有可能……

废话不说了,为了把有限的时间投入到无限的为人民服务中去,我得赶紧把自己的Sawfish配置文件贡献出来,也当作
是点缀一下互联网的光景吧 :em05 如果要编译安装Sawfish,请参考我的签名的那个链接~~~

[Lisp]
;; 自己定义的宏
(defmacro my-setq (name value)
"Declare the NAME as a variable and set its value to VALUE."
`(progn (defvar ,name)
(setq ,name ,value)))

;; 自己定义的函数
(defun backgroundize (string)
"Append a character `&' to STRING if it is not end with a `&'."
(let ((len (length string)))
(if (string= "&" (substring string (- len 1)))
string
(concat string " &")))) ;; concat函数用于连接两个字符串

(defun make-entry (name-command)
"Return a list represents a entry could be contained in a list represents a application menu."
(list (car name-command)
(list 'system (backgroundize (cadr name-command)))))

(defun make-user-apps-menu (entry-list)
"Create a list to be stored in variable user-apps-menu."
(mapcar #'make-entry entry-list))

(defun call-startup-programs (command-list)
"Run the programs specified in COMMAND-LIST when Sawfish start."
(mapcar #'(lambda (command)
(system (backgroundize command)))
command-list))

(defun bind-global-key (bindings-list)
"Bind a list of keystroke to the GLOBAL-KEYMAP."
(mapcar #'(lambda (bindings)
(bind-keys global-keymap (nth 0 bindings) (nth 1 bindings)))
bindings-list))

(defun show-desktop-toggle ()
"Show or hide the desktop."
(if (showing-desktop-p)
(hide-desktop)
(show-desktop)))

(defun random-one (lst)
"Select an item from LST randomly."
(nth (random (length lst)) lst))

;; * 自己定义的变量
;; ** 我的应用程序菜单
(defvar *my-user-apps-menu*
'(("Emacs" "emacs")
("Terminator" "terminator")
("GNOME terminal" "gnome-terminal")
("SMPlayer" "smplayer")
("Firefox" "firefox")
("Comix" "comix")
("Evince" "evince")
("File roller" "file-roller")
("Eog" "eog")
("StarDict" "stardict")
("Nautilus" "nautilus")
("GNOME system monitor" "gnome-system-monitor")
("GVim" "gvim")))
;; ** 我的候选壁纸文件名
(defvar *my-background-images*
'("Aurora.jpg"
"星球.jpg"
"蘑菇云.jpg")) ;; 这些都放在我的~/picture/目录中的
;; ** 我的开机自动运行的程序
(defvar *my-startup-programs*
`("tint2 -c ~/src/tint2.conf"
"nm-applet"
"gnome-volume-control-applet"
,(concat "habak -ms ~/picture/" (random-one *my-background-images*)))) ;; 你得保证你有前面的那些同名图片,因此估计这段只能在我的机器上用
;; ** 我的应用程序快捷键设置
(defvar *my-apps-shortcut*
'(("Super-a"
(jump-or-exec "ALSA Mixer" "alsamixergui"))
("Super-c"
(jump-or-exec "Comix" "comix"))
("Super-d"
(jump-or-exec "星际译王" "stardict"))
("Super-e"
(jump-or-exec "emacs@liutos-laptop" "emacs"))
("Super-f"
(jump-or-exec "Firefox" "firefox"))
("Super-m"
(jump-or-exec "系统监视器" "gnome-system-monitor"))
("Super-n"
(jump-or-exec "sancho" "~/installer/sancho-0.9.4-59-linux-gtk-java/sancho"))
("Super-p"
(jump-or-exec "\.pdf$" "evince"))
("Super-r"
(popup-root-menu))
("Super-s"
(jump-or-exec "SMPlayer" "smplayer"))
("Super-t"
(jump-or-exec "liutos@liutos-laptop"
(lambda ()
(system (backgroundize
(nth (random 2)
'("terminator"
"gnome-terminal")))))))
("Super-x"
(jump-or-exec "Foxit Reader" "FoxitReader"))))

;; * 配置Sawfish,注释风格与我的.emacs文件一致
;; ** 设定变量
;; *** 不由Sawfish自动根据*.desktop文件生成应用程序菜单
(my-setq apps-menu-autogen nil)
;; *** 让临时弹出的窗口也有和常驻窗口一样的标题栏
(my-setq decorate-transients t)
;; *** 取消Sawfish对新建窗口位置的控制
(my-setq place-window-mode 'first-fit) ;; first-fit的作用是使得新生窗口尽量不覆盖已有的窗口
;; *** 设定自己的应用程序菜单
(my-setq user-apps-menu (make-user-apps-menu my-user-apps-menu))
;; ** 运行程序
;; *** 在Sawfish启动时运行的程序
(call-startup-programs my-startup-programs)
;; ** 设定键绑定
;; *** 为经常使用的应用程序设定快捷键
(require 'sawfish.wm.commands.jump-or-exec)
(bind-global-key my-apps-shortcut)
;; *** 绑定Super-k组合键为显示或隐藏桌面
(bind-keys global-keymap "Super-k"
'(show-desktop-toggle))
;; *** 将鼠标右键在桌面单击绑定为调出Sawfish的根菜单
(bind-keys root-window-keymap "button3-click1"
'(popup-root-menu))
[/Lisp]

在这里再说说自己配置的时候获得的那么一点点经验。第一,Sawfish所使用的Lisp方言叫做librep,这东西毕竟
Common Lisp,因此如果把它当作Common Lisp来用的话会发现不少好用的函数没有了 :em06 例如上面的那个background函数,
本来如果有char函数,就可以写得概念上没那么诡异了——其实这个版本也不诡异。第二,就是jump-or-exec函数,
这东东本来在以前的版本里面是要例外下载的一个插件,不过现在Sawfish自带了,也就好多了。需要注意的是,jump-or-exec
的第一个参数,是作为正则表达式的模板使用的,而且区分大小写,后面那个是传给shell用的,也区分大小写……

暂时没什么好给的,而且总觉得这东西如果稍微懂点Lisp的话,一看就懂。好吧,贡献这么一点点东西来丰富Ubuntu论坛的内容 :em05

#2011-8-2 PS:有一点感觉怪怪的地方,就是如果让Sawfish自动启动tint2和habak的话,tint2没有透明功能,壁纸被面板挡住。而如果事后手动启动habak的话,就可以得到tint2的透明效果,壁纸不会被面板挡住 :em06
上次由 liu滔 在 2011-08-02 23:44,总共编辑 1 次。
头像
nmsfan
帖子: 18958
注册时间: 2009-10-16 22:46
来自: finland

Re: 我的Sawfish配置文件

#2

帖子 nmsfan » 2011-07-19 17:00

赞一个~
>>>>推Ubuntu 桌面培训~~<<<<
>>>>想加入/了解gimp汉化吗,点我吧~<<<<
——————————————————————
不推荐wubi,也不推荐你给别人推荐wubi…………
随心而为的感觉真好……
强推mayhem!!
强推ensiferum
头像
liu滔
帖子: 7212
注册时间: 2010-10-09 23:01

Re: 我的Sawfish配置文件

#3

帖子 liu滔 » 2011-07-19 17:10

:em09 谢奶妈 :em05
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 我的Sawfish配置文件

#4

帖子 ChenFengyuan » 2011-07-19 17:35

顶lisper :em11
头像
liu滔
帖子: 7212
注册时间: 2010-10-09 23:01

Re: 我的Sawfish配置文件

#5

帖子 liu滔 » 2011-07-19 17:53

ChenFengyuan 写了:顶lisper :em11
ChenFengyuan用的什么窗口管理器呢 :em09
头像
liu滔
帖子: 7212
注册时间: 2010-10-09 23:01

Re: 我的Sawfish配置文件

#6

帖子 liu滔 » 2011-07-19 18:00

ChenFengyuan 写了:顶lisper :em11
还有个叫做Eclipse(跟那个著名的IDE同名)的窗口管理器哦,而且是用Common Lisp写的,那功能就更强大了 :em09

有没有人要当小白鼠啊 :em05 :em05 :em05
头像
liu滔
帖子: 7212
注册时间: 2010-10-09 23:01

Re: 我的Sawfish配置文件

#7

帖子 liu滔 » 2011-07-19 19:19

虽然先前因为想模仿E17的那种方式而把左键设定为调出根窗口,不过觉得左键使用太频繁了,所以还是改为右键吧 :em09

需要修改的是最后一个,把其中的button1改为button3就可以了

按照我的推测,这个表示的应该是按下的那个键,而横线后面的则是放开按键 :em09

完整的代码是
[Lisp]
(bind-keys root-window-keymap "button3-click1"
'(popup-root-menu))
[/Lisp]
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 我的Sawfish配置文件

#8

帖子 ChenFengyuan » 2011-07-19 19:19

liu滔 写了:
ChenFengyuan 写了:顶lisper :em11
还有个叫做Eclipse(跟那个著名的IDE同名)的窗口管理器哦,而且是用Common Lisp写的,那功能就更强大了 :em09

有没有人要当小白鼠啊 :em05 :em05 :em05
可以试试....不过我先awesome,好像snapshot的下载失效了...... :em20 :em20
http://common-lisp.net/project/eclipse/index.shtml
:em05 :em05 :em05
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 我的Sawfish配置文件

#9

帖子 ChenFengyuan » 2011-07-19 19:26

liu滔 写了:
ChenFengyuan 写了:顶lisper :em11
ChenFengyuan用的什么窗口管理器呢 :em09
用的awesome,因为默认的配置就能用.
头像
liu滔
帖子: 7212
注册时间: 2010-10-09 23:01

Re: 我的Sawfish配置文件

#10

帖子 liu滔 » 2011-07-19 20:50

ChenFengyuan 写了:
liu滔 写了:
ChenFengyuan 写了:顶lisper :em11
ChenFengyuan用的什么窗口管理器呢 :em09
用的awesome,因为默认的配置就能用.
我也装了一个,不过怎么没有见识到传说中的平铺的效果。我开了个Firefox和终端,为什么Firefox把终端给挡住了呢 :em20

难道是我理解的平铺式概念有错?不是就是说把东西都摊在那里的意思么? :em20
头像
ChenFengyuan
帖子: 770
注册时间: 2008-03-23 0:39

Re: 我的Sawfish配置文件

#11

帖子 ChenFengyuan » 2011-07-19 21:43

liu滔 写了:
ChenFengyuan 写了:
liu滔 写了:
ChenFengyuan 写了:顶lisper :em11
ChenFengyuan用的什么窗口管理器呢 :em09
用的awesome,因为默认的配置就能用.
我也装了一个,不过怎么没有见识到传说中的平铺的效果。我开了个Firefox和终端,为什么Firefox把终端给挡住了呢 :em20

难道是我理解的平铺式概念有错?不是就是说把东西都摊在那里的意思么? :em20
你是不是没有选择好布局?
按mod4+space选择布局,或者点右上角那个按钮
头像
sw2wolf
帖子: 435
注册时间: 2007-10-05 21:02

Re: 我的Sawfish配置文件(2011-8-2更新配置文件内容)

#12

帖子 sw2wolf » 2011-09-13 13:12

能不能将sawfish的配置文件编译成字节码, 以提高启动速度啊?
头像
liu滔
帖子: 7212
注册时间: 2010-10-09 23:01

Re: 我的Sawfish配置文件(2011-8-2更新配置文件内容)

#13

帖子 liu滔 » 2011-09-13 20:52

sw2wolf 写了:能不能将sawfish的配置文件编译成字节码, 以提高启动速度啊?
这个啊,具体没试过,不过据说Sawfish的librep方言和Emacs的Elisp差不多,或许可以编译成字节码 :em09
tmd110110
帖子: 31
注册时间: 2007-04-02 18:16

Re: 我的Sawfish配置文件(2011-8-2更新配置文件内容)

#14

帖子 tmd110110 » 2023-06-03 10:36

sawfish 2013年之后就不更新了,有点可惜
回复