解决Ubuntu登录后立即死机──Gnome在命令行下禁用Compiz

今天给mm安装Ubuntu,一切顺利。装完后重启,在GDM下输入用户名密码后登录,登录框消失后过了几秒机子就死机了。重启N次后问题依旧,在GDM下按Ctrl+Alt+F1切换到虚拟终端下登录,一切正常。

 之前从来没遇到过这种情况,在网上查了一下,没有找到答案,只好自己分析了。能正常启动GDM,说明显卡驱动基本是没有问题的;能在CLI下登录,说明也是不硬盘文件损坏或者空间不足;登录后,硬盘灯狂闪了一两秒钟,此时键盘灯还是能控制的,之后才死机,说明是进入桌面后启动了某个东西才死机的。很自然地,Compiz是最大的嫌疑。mm的机子是05年买的,集成显卡,跑不起Compiz很正常。

问题在于,现在进不了桌面,如何禁用Compiz?我只会在系统->外观里换回metacity,却不知道如何在CLI下配置。网上查了一下“禁用Compiz”“Gnome配置窗口管理器”,没有发现什么有价值的东西。

就要放弃的时候,无聊在/home下du发现了一个目录:.gconf/desktop/gnome/applications/window_manager/,用vim打开下面的%gconf.xml文件,果然是compiz,把两个/usr/bin/compiz换成/usr/bin/metacity,保存,切换回图形界面登录,熟悉的桌面终于又出现了~

长期依赖于GUI的后果就是没有GUI的时候束手无策啊……

linux Comments(5) 2009年3月24日 07:10

实现背景透明的GTK+ widget

如果要用 GTK+ 写一些自定义界面的程序(如QQ),免不了要实现一个背景透明的 widget。一个简单的办法是GtkEventBox+GtkImage,不过这种方法太丑陋了点。然而用通常的方法来创建GTK+ widget 的话,会自动给背景填上颜色,设置了  gdk_window_set_back_pixmap (window->window, NULL, FALSE); 也不行。

继续阅读

未分类 Comments(0) 2009年2月11日 02:42

记一下最近的.emacs

这两天跑图书馆,做题做不下去了就玩emacs的配置解闷,还没完成,不过还是顺手贴一下好了

;;;F11:打开ecb
(global-set-key  [(f11)] 'ecb-activate)
;;;F12:关闭ecb
(global-set-key  [(f12)] 'ecb-deactivate)
;;;M-g 转到指定行号
(global-set-key [(meta g)] 'goto-line)
;;;设置选择起点
(global-set-key (kbd "C-x <SPC>") 'set-mark-command)
;;;高亮选择
(transient-mark-mode t)
;;;显示行号
(setq line-number-mode t)
;;;显示列号
(setq column-number-mode t)
;;打开括号匹配显示模式
(show-paren-mode t)
;;括号匹配时可以高亮显示另外一边的括号,但光标不会烦人的跳到另一个括号处。
(setq show-paren-style 'parenthesis)
;;与系统剪贴板互通
(setq x-select-enable-clipboard t)

;; "C-,"设为屏幕左移命令
(global-set-key (kbd "C-.") 'scroll-left)
;; "C-."设为屏幕右移命令
(global-set-key (kbd "C-,") 'scroll-right)
(global-set-key (kbd "M-p") 'scroll-down)
(global-set-key (kbd "M-n") 'scroll-up)

;;;;  CC-mode配置    http://cc-mode.sourceforge.net/
(require  'cc-mode)

;;设置缩进,默认的不好看
(c-set-offset 'inline-open 0)
(c-set-offset 'friend '-)
(c-set-offset 'substatement-open 0)

(defun  my-c-mode-common-hook()
    (setq  tab-width  4  indent-tabs-mode  nil)
    ;;;  hungry-delete  and  auto-newline
    (c-toggle-hungry-state 1)
    ;(c-toggle-auto-newline 0)
    ;(c-toggle-electric-state 0)
    ;;按键定义
    (define-key  c-mode-base-map  [(control  \`)]  'hs-toggle-hiding)
    (define-key  c-mode-base-map  [(return)]  'newline-and-indent)
    (define-key  c-mode-base-map  [(f7)]  'my-compile)
    (define-key  c-mode-base-map  [(f9)]  'my-run)
    (define-key  c-mode-base-map  [(f12)] 'my-edit-input-data)
    (define-key  c-mode-base-map  [(control c) (control a)] 'my-copy-whole-file)
    ;(define-key  c-mode-base-map  [(meta  \`)]  'c-indent-command)
    ;(define-key  c-mode-base-map [(tab)] 'my-indent-or-complete)
    (define-key  c-mode-base-map  [(tab)] 'c-indent-line-or-region)
    (define-key  c-mode-base-map  [(control c) (control /)] 'indent-for-comment)
    ;(define-key  c-mode-base-map [(meta ?/)] 'semantic-ia-complete-symbol-menu)
    ;;预处理设置
    (setq  c-macro-shrink-window-flag  t)
    (setq  c-macro-preprocessor  "cpp")
    (setq  c-macro-cppflags  "  ")
    (setq  c-macro-prompt-flag  t)
    (setq  hs-minor-mode  t)
    (setq  abbrev-mode  t)
    ;;doxymacs
    ;;(doxymacs-mode)
)

;;;;;;做题用的小工具
;;编译当前编辑的程序
(defun  my-compile()
  (interactive)
  (compile (concat "g++ " (file-name-nondirectory buffer-file-name)))
)

;;运行当前程序,以程序名+".in"作为输入文件
(defun my-run()
  (interactive)
  (shell-command (concat "./a.out" " < " (file-name-sans-extension buffer-file-name) ".in") "Output")
  (display-buffer "Output")
)

;;新开一个水平分割window显示输入文件
(defun my-edit-input-data()
  (interactive)
  (split-window-horizontally)
  (find-file-other-window (concat (file-name-sans-extension buffer-file-name) ".in"))
)

;;复制当前文件的内容,用于提交程序到OJ上
(defun my-copy-whole-file()
  (interactive)
  ;;(mark-whole-buffer)
  (kill-ring-save (point-min) (point-max))
)

;;重新载入.emacs文件
(defun my-reload-conf()
  (interactive)
  (load-file "~/.emacs")
)

(add-hook  'c-mode-common-hook  'my-c-mode-common-hook)
 
;;;;我的C++语言编辑策略
(defun  my-c++-mode-hook()
    (setq  tab-width  4  indent-tabs-mode  t)
    (c-set-style  "stroustrup")
;;    (define-key  c++-mode-map  [f3]  'replace-regexp)
)
(put 'scroll-left 'disabled nil)

(defun  my-html-mode()
  (define-key html-mode-map [(return)] 'newline-and-indent)
;;(define-key html-mode-map [(/)] 'indent-according-mode)
)

(add-hook 'html-mode 'my-html-mode)

未分类 Comments(1) 2008年11月01日 04:52

Emacs Mode for GDB

GUI是现代调试器的一个必备部分。这个模式为GDB提供了一个GUI,并保持了Emacs的强大功能。

继续阅读

emacs Comments(0) 2008年8月30日 19:02

那些“另类”的思想

在学校里,老师们只会教C、C++、Java,我们也把它们视为“正统”,好像程序就该是那样的,函数必须按顺序传参数,文字量只能直接使用,缩进是为了好看,对象是封装+继承+多态,方法就是方法属性就是属性……在我们把它们视作理所当然时,还有很多语言有着很精彩的“另类”思想。

阅读全文

程序设计 Comments(4) 2008年8月08日 02:04

QQ自定义表情的编码格式

通过Eva的源代码简要分析了QQ消息中自定义表情的格式

阅读全文

程序设计 Comments(0) 2008年7月03日 04:43

在32位系统下编译64位程序

由于某些需要要编译个64位程序,而机子装的系统是32位。因为不想装上64位系统(麻烦&没空间&得用虚拟机),所以尝试了下在32位下编译。

首先是设置gcc生成64位的目标代码,这倒是好办,用-m64选项就行。然而光是有这一点还不够,编译本身是要链接其他的库的,而64位代码没有办法链接32位的库。

首先是要装上64位的C库,这比较好办,Ubuntu里有libc6-amd64和libc6-dev-amd64这两个包,将其装上。

然后是gcc的64位库,这个比较麻烦,32位Ubuntu里没有提供相应包,因此得到网上去找。我是在http://packages.ubuntu.com上找的,下载amd64架构的包。需要下载的是这两个包子:gcc4.2和libgcc,用归档管理器打开下载下来的deb文件,并打开其中的data.tar.gz包,将其中的.so、.a和.o文件解压到/usr/lib64中(需要root权限,可先解压到/tmp再复制过去)。

然后因为用了C++,所以要装上C++的64位库,这个源里也没有,同样是下载解压。

以上是一些基本的包,在其实中一般不只这些,要根据说明文档下载相应的包解压,而且相应包所依赖的包也要下载解压,所以会很麻烦的,没事就别跨平台编译吧。

最后就要给编译加上-m64参数了,不同的安装脚本添加方法不同,就不多说了。

 

linux Comments(1) 2008年7月02日 05:53

Firefox启动故障

gladder与代理设置冲突导致Firefox无法启动

阅读全文

linux Comments(0) 2008年7月01日 18:02

编写ASP.net Ajax客户端控件ListBox(1)

用ASP.net Ajax来编写一个Javascript控件 这一部分讲述了控件的定义、注册、初始化及使用

阅读全文

javascript Comments(1) 2008年6月30日 10:38

MKV的EBML格式

介绍MKV格式的基础:EMBL

阅读全文

未分类 Comments(0) 2008年6月30日 10:22