diff options
author | Daniel Narvaez <dwnarvaez@gmail.com> | 2012-06-18 17:17:43 (GMT) |
---|---|---|
committer | Daniel Narvaez <dwnarvaez@gmail.com> | 2012-06-18 17:17:43 (GMT) |
commit | f9cad238343b6ae64455c62cea21189974eccfbf (patch) | |
tree | 07e573030a2061cfffe82893e7972f1484e5541c /scripts | |
parent | 5cd2139a8a6d9d389dae45f1acc7e2e226af6213 (diff) |
Disable all but one X outputs
Sugar cannot deal properly with multiple outputs.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/check-system | 6 | ||||
-rw-r--r-- | scripts/list-outputs.c | 31 | ||||
-rw-r--r-- | scripts/xinitrc | 16 |
3 files changed, 52 insertions, 1 deletions
diff --git a/scripts/check-system b/scripts/check-system index e904e7c..e57bba3 100755 --- a/scripts/check-system +++ b/scripts/check-system @@ -80,6 +80,12 @@ libs = [{ "name": "python2", { "name": "pycairo", "packages": { "fedora": "pycairo-devel", "ubuntu": "python-cairo-dev" } }, + { "name": "xrandr", # list-displays + "packages": { "fedora": "libXrandr-devel", + "ubuntu": "libxrandr-dev" } }, + { "name": "x11", # list-displays + "packages": { "fedora": "libX11-devel", + "ubuntu": "libx11-dev" } }, { "name": "icon-naming-utils", "packages": { "fedora": "icon-naming-utils", "ubuntu": "icon-naming-utils" } }] diff --git a/scripts/list-outputs.c b/scripts/list-outputs.c new file mode 100644 index 0000000..f2c3f0b --- /dev/null +++ b/scripts/list-outputs.c @@ -0,0 +1,31 @@ +#include <stdio.h> +#include <X11/extensions/Xrandr.h> + +int main(int argc, char **argv) +{ + Display *dpy = XOpenDisplay(NULL); + XRRScreenResources *rr; + XRROutputInfo *output; + int i; + + XSynchronize(dpy, 1); + + rr = XRRGetScreenResources(dpy, DefaultRootWindow(dpy)); + + for (i = 0; i < rr->noutput; i++) { + output = XRRGetOutputInfo(dpy, rr, rr->outputs[i]); + + if (output->connection == RR_Connected) { + printf("%s\n", output->name); + } + + XRRFreeOutputInfo(output); + } + + XRRFreeScreenResources(rr); + + XSync(dpy, 1); + XCloseDisplay(dpy); + + return 0; +} diff --git a/scripts/xinitrc b/scripts/xinitrc index 23dce95..90927bf 100644 --- a/scripts/xinitrc +++ b/scripts/xinitrc @@ -5,6 +5,20 @@ unset GNOME_KEYRING_PID SCRIPTS_DIR=`dirname "$0"` ROOT_DIR=`dirname "$SCRIPTS_DIR"` -RUN_COMMAND="dbus-launch --exit-with-session sugar" +# Sugar doesn't handle multiple outputs properly. To avoid issues we keep the +# first output in the list returned by xrandr and turn off everything else. + +OUTPUTS=`scripts/list-outputs` + +for output in $OUTPUTS +do + if [ -z "$FIRST_OUTPUT" ]; then + FIRST_OUTPUT=$output + else + xrandr --output $output --off + fi +done + +RUN_COMMAND="dbus-launch --exit-with-session sugar" $ROOT_DIR/build/bin/jhbuild -f $ROOT_DIR/scripts/jhbuildrc run $RUN_COMMAND |