Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorDaniel Narvaez <dwnarvaez@gmail.com>2012-06-18 17:17:43 (GMT)
committer Daniel Narvaez <dwnarvaez@gmail.com>2012-06-18 17:17:43 (GMT)
commitf9cad238343b6ae64455c62cea21189974eccfbf (patch)
tree07e573030a2061cfffe82893e7972f1484e5541c /scripts
parent5cd2139a8a6d9d389dae45f1acc7e2e226af6213 (diff)
Disable all but one X outputs
Sugar cannot deal properly with multiple outputs.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/check-system6
-rw-r--r--scripts/list-outputs.c31
-rw-r--r--scripts/xinitrc16
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