作者:fluke
来自: archlinux.org.cn ; linuxsir.org
摘要:本文提供了一种用shell来实现手工保存要打开的文件列表的方法和思路,并不是像kde那样死板地打开上次保存的session,作者本人觉得这种方法更灵活更使用。
前言
本文提供了一种用shell来实现手工保存要打开的文件列表的方法和思路,并不是像kde那样死板地打开上次保存的session,作者本人觉得这种方法更灵活更使用。
本文适用于任何方式启动x,但是为了具体操作,本文选种了默认不带session保存功能,但是可扩展性极强又不失易用性的fluxbox来作为wm。使用startx来启动x。
本文直接引导读者怎么做,也许深入的内容,要自己去思考。另外,本文用到的软件,都是开源,并且,都假设您已经安装好了,如果没有,请自行解决。
我们开始
~/.xinitrc的内容:exec ~/.fluxbox/startup
我的设置编码等等工作是在.profile里面做的,如果你喜欢在.xinitrc里面放也行。
下面就看~/.fluxbox/startup的内容:
# 屏幕保护
xscreensaver &
# 这个也是要另外安装的fluxbox的pager
fbpager &
# 下面这个是自定义的startup文件,本文的重点
shelltools/./xstartup &
# 下面正式启动fluxbox
exec /usr/bin/fluxbox
# 如果需要记录,打开下面的注释
# exec /usr/bin/fluxbox -log “~/.fluxbox/log”
开始自定义session的加载,我把这个存在一个shell文件里面。
下面是这个脚本~/shelltools/xstartup的内容:
#!/bin/sh
# file: ~/shelltools/xstartup
# function: starts applications when startx
# Items below for gedit startup
# 静态的打开常用的软件
# input method
fcitx &
# applications
gaim &
gkrellm &
# opera9 能自动保存session,很方便
opera &
rhythmbox &
stardict &
# 下面红色部分,已经有更好的方案来实现,见本文末尾增改部分
# Open editing files with gedit
# 下面开始用gedit打开正在编辑的文件
gedit &
# 从~/shelltools/xstartup-editing-files.list读取文件列表,并且用gedit打开,“#”开头的是注释,不过我的grep写的不好,读者可以自己改善
for openfile in `cat ~/shelltools/xstartup-editing-files.list | grep -v “#”`
do
eval gedit “$openfile”
done
# 上面用gedit打开文件的方法,当然也适用于打开其他session
# Popup a dialog
# 这里的警告是我个人留待其他用途的
zenity –info –text=”Startup finished.”
下面是我的~/shelltools/xstartup-editing-files.list:
# editing-file list
# acm
~/acm/pku1010.cpp
~/acm/pku1010.in
# comment
~/clipboard.txt
~/.fluxbox/startup
# shell tools
# 打开这两个文件,是为了方便动态维护session列表
~/shelltools/xstartup
~/shelltools/xstartup-editing-files.list
后记
希望本文对一些人有用,作者本人并没有很深的经验,如果有写错的地方,请包涵,欢迎指点。
Fluke — http://blog.ospattern.net
Mon Aug 16 23:xx:xx CST 2006
增改部分
对于用gedit打开文件列表部分,原来的处理有些漏洞,如果,gedit打开的速度不够快,会造成后面的进程先打开,这样的话,一次只能编辑一个文件,因为打开文件列表的时候,gedit并没有被设置在后台运行,而是独占了父进程,解决的方法可以是在执行了gedit &之后,sleep一下。
不过这里有更好的办法,gedit支持从命令行参数打开所有参数表示的文件。所以,我们只需把文件列表join到一个变量上,调用gedit打开就好了,具体代码如下:
# Open editing files with gedit
filelist=”"
for onefile in `cat ~/shelltools/xstartup-editing-files.list | grep -v “#”`
do
filelist=$filelist” “$onefile
done
eval gedit $filelist
以上修改于Thu Aug 17 14:44:36 CST 2006 on Archlinux
评论