My situation is that I run an Ubuntu Server for normal server-like tasks; web server, file server, etc. I decided to install XMBC on it so I could make it into a HTPC because after all, it already had all my media stored on it. Installing XMBC meant that I also had to install Xserver and along with that install, I scored some defaults for screen saver timeout and monitor timeout (all set to 10 minutes) and this really sucks when you’re watching a movie and even 10 minutes the display would turn off unless you gave some input (keyboard, mouse, remote). This guide will show how I fixed it.
The magic tool that will help us here is called
xset, that according to its man pages says it’s a user preference utility for X. By default it seems to operate on the current X display so if you’re doing all these commands on the actual machine, you should be able to get away without the
-display :0 bits that I have in all my commands although leaving them in there won’t hurt. The reason that I needed to have them is because I’m SSHing into the server and your SSH session has no X display so you must explicitly state it. For more information on displays, have a look at the section titled DISPLAY NAMES under the man X(7) pages.
The overview of what we’re going to do is check to see what the preferences are currently set to and then set them to a value that means the display will never timeout. This is probably a bad thing if your box has a monitor permanently attached to it but I use a TV as my monitor so it gets turned off separately from the server (which never gets turned off).
Note that I’ve bolded the commands that I submit and if you copy and paste them, be sure to leave off the starting dollar sign ($).
Update 23 August 2012: I found that setting the display to never turn off made the UI of XBMC slow down to a snail’s pace. I suspect it’s the rubbish video card that I have but I fixed the problem by setting the timeout to 3hrs so it effectively never turns off while I’m using it (unless you watched something for longer than 3hrs without pressing anything on the remote/keyboard/mouse) but it will turn off eventually. Now the UI performs as normal. Experiment and see what works for you.
First we need to check where we’re starting from by having a look at what the preferences currently are. The important bits are highlighted in red. We can see that we have a screen saver that is set to come on after 600 seconds and that DPMS is enabled and set to standby, suspend and turn off (so ultimately just turn off) the display.
$ xset -display :0 q Keyboard Control: auto repeat: on key click percent: 0 LED mask: 00000000 XKB indicators: 00: Caps Lock: off 01: Num Lock: off 02: Scroll Lock: off 03: Compose: off 04: Kana: off 05: Sleep: off 06: Suspend: off 07: Mute: off 08: Misc: off 09: Mail: off 10: Charging: off 11: Shift Lock: off 12: Group 2: off 13: Mouse Keys: off auto repeat delay: 660 repeat rate: 25 auto repeating keys: 00ffffffdffffbbf fadfffefffedffff 9fffffffffffffff fff7ffffffffffff bell percent: 50 bell pitch: 400 bell duration: 100 Pointer Control: acceleration: 2/1 threshold: 4 Screen Saver: prefer blanking: yes allow exposures: yes timeout: 600 cycle: 600 Colors: default colormap: 0x20 BlackPixel: 0 WhitePixel: 16777215 Font Path: /usr/share/fonts/X11/misc,/usr/share/fonts/X11/75dpi/:unscaled,/usr/share/fonts/X11/Type1,/usr/share/fonts/X11/75dpi,/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType,built-ins DPMS (Energy Star): Standby: 600 Suspend: 600 Off: 600 DPMS is Enabled Monitor is Off
- So let’s start by turning DPMS off:
$ xset -display :0 -dpms
- Optional: We’ve just turned DPMS off so it’s timeouts should no longer have any effect but if you really want to kill all those values, use this command:
$ xset -display :0 dpms 0 0 0
The command(s) that we’ve run so far don’t give any feedback to the user so we run the same command as in the first step to see if our changes have done anything. I ran both commands in steps 2 and 3 so my timeouts are 0 but the really important bit is that DPMS is Disabled as you can see in red.
$ xset -display :0 q _...unimportant stuff ommitted..._ DPMS (Energy Star): Standby: 0 Suspend: 0 Off: 0 DPMS is Disabled
Now, we need to disable the screen saver using the following command:
**$ xset -display :0 s 0 0**
Again, let’s check that it worked and you’ll see the two timeout values for the screen saver set to 0 (and highlighted in red):
**$ xset -display :0 q** _...unimportant stuff ommitted..._ Screen Saver: prefer blanking: yes allow exposures: yes timeout: 0 cycle: 0 _...unimportant stuff ommitted..._
- We’re done. Your monitor should stay on all the time now. Note that if you ever want to re-enable the timeouts, you can supply a value of your choosing (in seconds) to the commands we used to set the timeouts to zero. You can also turn DPMS back on using the plus sign (+) instead of the minus sign (-) that we used to turn it off in step 2.
As with all commands in linux/unix, if you want more information then the following two commands are your friend:
$ xset --help $ man xset