VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/installer/VBoxRandR.sh@ 16774

Last change on this file since 16774 was 16752, checked in by vboxsync, 16 years ago

Additions/Linux/installer: comments and warning text

  • Property svn:eol-style set to LF
  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 4.2 KB
Line 
1#!/bin/sh
2#
3# @file
4#
5# Sun xVM VirtualBox
6# X11 guest additions: dynamic display changes
7#
8# Copyright (C) 2008 Sun Microsystems, Inc.
9#
10# This file is part of VirtualBox Open Source Edition (OSE), as
11# available from http://www.virtualbox.org. This file is free software;
12# you can redistribute it and/or modify it under the terms of the GNU
13# General Public License (GPL) as published by the Free Software
14# Foundation, in version 2 as it comes in the "COPYING" file of the
15# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17#
18# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
19# Clara, CA 95054 USA or visit http://www.sun.com if you need
20# additional information or have any questions.
21#
22
23#
24# In order to keep things simple, we just call the X11 xrandr application
25# when we receive notification of a display change instead of reimplementing
26# it inside our Guest Additions client application. This saves us among
27# other things having to find ways to build and link the C code on systems
28# which do not support RandR 1.2. We wrap the call to xrandr in this script
29# so that we can make any fiddly adjustments to the call which may be needed.
30#
31
32xorgbin=Xorg
33found=`which Xorg | grep "no Xorg"`
34if test ! -z "$found"; then
35 if test -f "/usr/X11/bin/Xorg"; then
36 xorgbin=/usr/X11/bin/Xorg
37 else
38 exit 1
39 fi
40fi
41
42randrbin=xrandr
43found=`which xrandr | grep "no xrandr"`
44if test ! -z "$found"; then
45 if test -f "/usr/X11/bin/xrandr"; then
46 randrbin=/usr/X11/bin/xrandr
47 else
48 exit 1
49 fi
50fi
51
52refreshbin=xrefresh
53found=`which xrefresh | grep "no xrefresh"`
54if test ! -z "$found"; then
55 if test -f "/usr/X11/bin/xrefresh"; then
56 refreshbin=/usr/X11/bin/xrefresh
57 else
58 exit 1
59 fi
60fi
61
62# If we were called with the --test parameter, we check whether the display
63# we are running on is really using the VBox video driver (and RandR 1.2),
64# and whether we are running on a buggy version of X.Org which might crash
65# when we resize.
66if test "$1" = "--test"; then
67 # Check for buggy X.Org versions
68 xout=`$xorgbin -version 2>&1`
69 if echo "$xout" | grep 1.4.99.901 > /dev/null ||
70 echo "$xout" | grep 1.4.99.902 > /dev/null ||
71 echo "$xout" | grep 1.4.99.903 > /dev/null ||
72 echo "$xout" | grep 1.4.99.904 > /dev/null ||
73 echo "$xout" | grep 1.4.99.905 > /dev/null
74 then
75 echo "Warning: the version of the X Window system on your guest has a known"
76 echo "problem. Because of this, dynamic resizing and seamless mode will not work."
77 echo
78 exit 1
79 fi
80 # Check to see if the server is configured to use static modes only.
81 for conf in "/etc/X11/xorg.conf-4" "/etc/X11/xorg.conf" "/etc/X11/.xorg.conf" "/etc/xorg.conf" \
82 "/usr/etc/X11/xorg.conf-4" "/usr/etc/X11/xorg.conf" "/usr/lib/X11/xorg.conf-4" \
83 "/usr/lib/X11/xorg.conf"
84 do
85 if [ -r $conf ]
86 then
87 if awk -v IN_SECTION=0 \
88'tolower($0) ~ /^[ \t]*section/ { IN_SECTION=1 } '\
89'tolower($0) ~ /^[ \t]*modes/ { if (IN_SECTION) { print "mode"; exit } } '\
90'tolower($0) ~ /^[ \t]*option[ \t]+\"preferredmode\"/ { if (IN_SECTION) { print "mode"; exit } } '\
91'tolower($0) ~ /endsection/ { IN_SECTION=0 }' \
92 $conf 2>/dev/null | grep mode > /dev/null
93 then
94 echo "Disabling dynamic resizing as the X server is configured to only use static"
95 echo "resolutions. To fix this, edit the server configuration file, remove all"
96 echo "\"Modes\" lines from the \"Screen\" section and any Option \"PreferredMode\""
97 echo "lines from \"Monitor\" sections and restart the server."
98 echo
99 exit 1
100 fi
101 fi
102 done
103 # Don't write out error information in this case, as this script is also
104 # called from the installer, and vboxvideo will not yet be in place yet in
105 # that case.
106 $randrbin 2> /dev/null | grep VBOX1 > /dev/null
107 exit
108fi
109
110# Otherwise we just switch the guest display into its preferred resolution,
111# which is the one corresponding to the last video mode hint sent by the host.
112$randrbin --output VBOX1 --preferred
113$refreshbin 2>&1 > /dev/null
114
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette