diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 8 | ||||
-rwxr-xr-x | scripts/check-system | 6 | ||||
-rw-r--r-- | scripts/list-outputs.c | 31 | ||||
-rw-r--r-- | scripts/xinitrc | 16 |
5 files changed, 60 insertions, 2 deletions
@@ -3,3 +3,4 @@ build/ source/ logs/*.log logs/all-logs.tar.bz2 +scripts/list-outputs @@ -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 |