Search This Blog

Wednesday, July 26, 2006

sawfish第一篇

换到sawfish以来第一次写关于它的东东,主要是sawfish的资料比起fvwm来少得多,而且它的那个文档也不怎么样,所以玩起来比较吃力啊,不过那个sawfish wiki还是不错的,扩展很多!
第一个,一个小函数:
(defun one-instance-exec (prog)
(interactive)
(if (= (ash (system (concat "ps -C" prog)) -8) 0)
()
(system (concat prog " &"))
))

这个函数先检查是不是有进程和要运行的程序同名,如果是就什么都不干,如果不是就运行这个程序,也就是说,它只运行某个程序的一个实例,这在某些场合是很有用的,尤其是程序自身并不检查是不是有自己在运行的时候
比如说,urxvtd,我让它在sawfish启动的时候运行,要是我重启一下sawfish,就会有两个urxvtd,虽然没什么危害,不过浪费总是不好的

我是忘了把学校的配置文件拷过来了,所以现在的配置文件都是重新写的,函数就写了这么一个,下面是一个变量
(setq viewport-dimensions '(2 . 2))
这个viewport-dimensions找了我好久,viewport是显示器上能显示的那一块,还有一个workspace其实就是桌面,如果 view-port-dimensions是1x1的话,viewport和workspace就是一样大的,如果是这里的2x2的话,那一个 viewport就是一个workspace的1/4

现在的bmpx搞个什么dbus,我不知道那是什么玩意儿,我只想听歌,但是没有dbus的话bmpx就罢工:(
bmpx官方网站上说要这样:
在.xinitrc里,把原本运行窗口管理器的那一行前面加上dbus-launch --auto-syntax --exit-with-session
这个暂时不关我的事,等我想知道了再去看它是怎么回事

Monday, July 24, 2006

拨号又有新玩法!

其实rp-pppoe挺好用的,不过我就是这么喜欢折腾
pppd说它把rp-pppoe变成它的一个module了,好呀,于是我决定不要rp-pppoe了
关键在于/etc/conf.d/net文件,更关键的在于/etc/conf.d/net.example,因为后者把前者的配置方法讲得特别特别详细
不过鉴于一些同胞不屑于看英文,我就啰索一下吧
先假设涉及到的设备名是eth0和ppp0

config_eth0=("null") #先把eth0弄成null,不要问我为什么,那个net.example教我的!

config_ppp0=("ppp")
link_ppp0="eth0" #这个表示其实我们还是要靠eth0来办事的,所以总得给它点面子
plugins_ppp0=("pppoe") #传说中的pppd的module啊,果然是百闻不如一见啊
username_ppp0='your_adsl_username' # 不要照搬啊,那就太傻了
password_ppp0='your_adsl_password' # 这个也是
pppd_ppp0=("debug" "defaultroute" "usepeerdns") #debug表示往系统日志里多写点东西,defaulteroute和usepeerdns都表示默认啊默认,把ppp设备做为默认route,dns 连接上了就有了,不用自己指定


好,这个关键性文件好了,然后ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
如果想开机就连接上的话:rc-update add net.ppp0 default
另外,如果原来runlevel里有net.eth0的话,就不要了:rc-update del net.eth0

另外我还折腾了一下动态域名
先去www.3322.org注册一个帐号,建一个域名,信息自己记住啊,我不负责的
emerge ez-ipupdate
然后在/etc/ez-ipupdate/下建立一个.conf文件,名字你自己随便起,假设是qdns.conf
内容如下

user=username:password #这是你在3322.org的帐号和密码
host=yourhost.3322.org #这是你申请的二级域名,当然,你要有钱,非要自己买顶级域名,那我只能膜拜了:)
interface=ppp0 #ppp设备名


运行一下ez-ipupdate -S qdns -c /etc/ez-ipupdate/qdns.conf
再ping一下那个域名,看看能不能解析出来

现在开机能自动拨号了,但是域名的指向还要手动,那就不理想了,于是:
把/etc/ppp/ip-up给翻出来
这个文件由三个if...fi组成,可以发现第一个if...fi是关于usepeerdns的,显然跟我们没关系,而第二个if...fi里有这么一句:/etc/init.d/net.$1 --quiet start
可以看到ppp0就是从这里启动的,那么如果它起动成功的话就可以跟3322.org建立连接了,所以在后面加上:&& ez-ipupdate -c /etc/ez-ipupdate/qdns.conf -S qdns
OK了

第二次装gentoo

这次比上次熟练了,不过也花了三天时间,总结一下:
先是gcc-config无法升级了,确切的症状是编译正常,但是旧版本无法删除,而且从这里开始以后不管装什么软件都出错,具体信息忘记了,好像说是什 么call back还是fall back之类的,反正不管装什么东西都是出来这么一屏,google了一晚上,无果,后来怀疑是portage的问题,于是把当前版本mask掉,退回去 后发现一切正常了
接着第二个问题是gmp,fortran依赖它,但是编译这个东西需要c++,而当时在stage1的情况下没有c++编译器,这个鸡啊蛋啊的问题真是麻 烦得很,具体解决办法:先把gcc的USE flag里的fortran关掉,编译,得到一个stage2的gcc,因为它现在已经有c++支持了,然后用gcc-config或者eselect compiler set xxx启用新的gcc,(gentoo说gcc-config马上要被抛弃了,所以还是eselect compiler吧),再用新的gcc可以编译gmp,有了gmp就可以进一步得到fortran enabled的gcc,造物的快感啊!我当时是这么想的,不过过程并没有这么顺利,事实上一旦我用了gcc-4.1.1,emerge的时候就会出现 crash,CPU100%,除非我把进程kill掉,否则它就一直卡在那里,但是退回3xx版本就没有问题,百思不得其解,后来无奈之下重新 emerge了一遍gcc-config,问题自己消失了,奇怪
之后我有了完整的编译器,剩下的问题就都是些散兵游勇了,不足为惧,主要都是一些包的依赖,出错的时候自己稍微看看就都能解决
不过grub的问题倒真是诡异了,不管我怎么弄,它始终是error15,而我手动启动的时候,命令都是跟grub.conf里写得一样的,却能顺利启 动,也换了版本,而且/boot是ext3的,而且配置文件就是以前debian的时候用的,就是改了一下title和kernel,它就是不肯启动,我 服了