[compiz] Compiz web based settings framework

David Reveman davidr at novell.com
Fri Apr 13 09:55:20 PDT 2007

On Wed, 2007-04-11 at 15:01 +0100, Mike Dransfield wrote:
> Here is a new way for people to access compiz settings.  This is 2
> pieces of software in one.
> 1. HTTP -> DBUS -> JSON bridge
> 2. Web based settings application based on that
> The most important part is the first because it allows you to change
> compiz settings using HTTP requests made to a locally running http
> server.
> To install this untar the file below and copy the cws directory to your
> ~/.compiz directory and copy cws.py to your autostart folder.  Once
> cws.py is running it provides a web server on port 8899 (by default)
> which runs the default web app.  This app is just something I made
> quickly to demonstrate and develop everything.  You should be able to
> come up with something much nicer ;)
> http://www.anykeysoftware.co.uk/compiz/cws.tar.gz
> The web server responds to requests similar to dbus and it responds
> with JSON data, this is the easiest to evaluate with web based languages.
> The API is like this, look in http.js for examples of its use with 
> HTTPRequest.
> The path you make the request to relates to the dbus object path.  Each
> path has different methods.  You tell it which method with a GET request.
> / (root path)
> ?method=getPluginMetadata&plugin=cube   - get metadata about a plugin
> ?method=loadPlugin&plugin=cube  - loads a plugin, performs dependency
> checking so you can load any plugin without worrying about order
> ?method=loadPlugin&plugin=cube  - unloads a plugin
> ?method=getAvailablePlugins  - Lists all available plugins (not loaded ones)
> ?method=getActivePlugins  - Lists all active plugins
> if no method is specified then it will return the index.html file from
> ~/.commpiz/cws/<theme>/
> /cube (plugin path)
> Any request to this url will return a list of all options for that plugin
> (grouped by screen)
> /cube/allscreens (screen path)
> Any request to this URL will respond with a list of all options for
> that screen
> /cube/allscreens/unfold   (option path)
> ?method=set&value=val - will set an option value
> Lists must be sent with the name ending in square brackets
> (ie. value[]=val1&value[]=val2)
> Actions are the same but the action part name must  be in the brackets 
> (ie. value[bell]=1&value[key]=<Super>F1)
> Any other request to an option path will return the option value.

Cool, this is nice for remote configuration.

- David

More information about the compiz mailing list