Sunday, October 16, 2011

shutdown x screen saver 关闭x的屏幕保护

这几天看house医生,本子老是自动关闭显示器,比较麻烦

本来现在使用的是awesome,根本没有打开screen saver的类似程序,只有google了

原来X 默认包含省电和屏保的设置,找到一个 xset 来关闭x screen saver 的做法,具体参数察看man xset .

查看xset的手册后发现屏幕保护是由X的两个部分控制的, 一个是BlankTime(较新的X中放在ScreenSaver选项中), 一个是DPMS. BlankTime设置的是黑屏, 也就是说只黑屏而不关显示器电源, 对于液晶显示器来说就是不关背灯. DPMS设置的是电源, 三个子选项Standby, Suspend和Off对于CRT显示器是一个逐步关闭电源的过程, 对于液晶显示器应该是一样的.

使用 xset q 可以看到如下2个内容

       Screen Saver:
          prefer blanking:  yes    allow exposures:  yes
          timeout:  600    cycle:  600

       DPMS (Energy Star):
  Standby: 600    Suspend: 600   Off: 600
  DPMS is Enabled
  Monitor is On
正因为X的屏幕保护由两部分控制, 单纯的关闭DPMS或者BlankTime都不行, 必须都关掉. 所以我在.xinitrc中加入了下面的命令, 具体解释和其它xset命令参数见Manual.
  
       xset s off
       xset dpms 0 0 0

但是暴力关闭显示器电源不怎么划算,比如通宵下载可以选择把DPMS和BlankTime的超时时间设置得久一点,或者加一条alias用来手动关闭显示器电源(笔记本没显示器开关).

alias soff='sleep 5 && xset dpms force off'

之所以sleep 5是为了防止命令执行以后因为手抖或者合上笔记本的盖子而唤醒显示器. 同时这也解释了我为什么在上一步不用xset -dpms, 因为关显示器的时候会再次启用DPMS模块, 屏保又开始生效了, 而置0只是关屏保而不关DPMS, 留着这个模块用来关显示器. 还有一个原因在于有的桌面环境会不停得去检测并启用DPMS模块, 无法简单地关闭DPMS模块.


参考 :http://socol.iteye.com/blog/1039725
    http://www.adam8157.info/blog/2010/06/turn-off-x-screensaver/

No comments: