Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--Makefile8
-rwxr-xr-xscripts/check-system6
-rw-r--r--scripts/list-outputs.c31
-rw-r--r--scripts/xinitrc16
5 files changed, 60 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 945eb90..03fff93 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ build/
source/
logs/*.log
logs/all-logs.tar.bz2
+scripts/list-outputs
diff --git a/Makefile b/Makefile
index 08bade6..a2a4864 100644
--- a/Makefile
+++ b/Makefile
@@ -18,6 +18,11 @@ submodules:
git submodule init
git submodule update
+XRANDR_LIBS := $(shell pkg-config --libs xrandr x11)
+
+scripts/list-outputs:
+ gcc -o scripts/list-outputs scripts/list-outputs.c $(XRANDR_LIBS)
+
check-system:
$(TYPESCRIPT) $(SCRIPTS)/check-system $(LOGFILE)
@@ -32,7 +37,7 @@ build-activities: submodules
build-glucose: install-jhbuild check-system
$(TYPESCRIPT) "$(JHBUILD) build" $(LOGFILE)
-build: build-glucose build-activities
+build: build-glucose build-activities scripts/list-outputs
build-%:
$(TYPESCRIPT) "$(JHBUILD) buildone $*" $(LOGFILE)
@@ -46,3 +51,4 @@ bug-report:
clean:
rm -rf source build
rm -f logs/*.log logs/all-logs.tar.bz2
+ rm -f scripts/list-outputs
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