------------------------------------------------------------------------------- Running Headless X Window Clients... First start a virtual display... # Using Xvfb startx -- `which Xvfb` :1 -screen 0 1024x768x24 # Or with Xvnc (also headless) startx -- `which Xvnc` :1 -geometry 1024x768x24 # Or with Xephyr (nested X server, requires X) startx -- `which Xephyr` :1 -screen 1024x768x24 Now run a client (like firefox) on that display DISPLAY=:1 firefox Open a web site DISPLAY=:1 firefox-remote http://www.google.com/ Take a screen shot DISPLAY=:1 import -window root googledotcom.png Firefox has lots of javascript-magic extensions such as greasemonkey and Selenium to let you execute browser-side javascript and activity automatically. Combine these together with Xvfb, and you can automate lots of things behind the scenes. ------------------------------------------------------------------------------- More automated... ephemeral-x.sh firefox This finds a unused display number, and runs firefox on it, such that when firefox exits the display exits. More complex... ephemeral-x.sh -x "Xephyr -ac -screen 1280x720x24" \ -w openbox-session firefox www.google.com Code is in xdotool test area... https://github.com/jordansissel/xdotool/blob/master/t/ephemeral-x.sh -------------------------------------------------------------------------------