X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=grml-x;h=d5a8f998c667f1b5a2f2f0305813c97ccc30eb76;hb=9c0d3212e7240bd4cd79f95e2df46a5fe804e25e;hp=243951d931a5a4131aa72defd9ff3c14b10f6073;hpb=d7f62d308aaf026f919addf2ffee1d74c6284cd6;p=grml-x.git diff --git a/grml-x b/grml-x index 243951d..d5a8f99 100755 --- a/grml-x +++ b/grml-x @@ -4,7 +4,7 @@ # Authors: grml-team (grml.org), (c) Michael Prokop # Bug-Reports: see http://grml.org/bugs/ # License: This file is licensed under the GPL v2. -# Latest change: Mon Mär 26 22:19:37 CEST 2007 [mika] +# Latest change: Don Jul 12 01:20:47 CEST 2007 [mika] ################################################################################ # debugging {{{ @@ -52,12 +52,12 @@ XSERVER="Xorg" XCONFIG='/etc/X11/xorg.conf' - KEYBOARD="Driver \"kbd\" - # Option \"XkbRules\" \"xfree86\" - Option \"XkbRules\" \"xorg\" - Option \"XkbModel\" \"pc105\" - Option \"XkbLayout\" \"${XKEYBOARD},us\" - # Option \"XkbVariant\" \"nodeadkeys\"" + KEYBOARD="# Driver \"kbd\" +# Option \"XkbRules\" \"xfree86\" +# Option \"XkbRules\" \"xorg\" +# Option \"XkbModel\" \"pc105\" +# Option \"XkbLayout\" \"${XKEYBOARD},us\" +# Option \"XkbVariant\" \"nodeadkeys\"" # check for font path if [ -d /usr/share/fonts/X11 ] ; then @@ -128,7 +128,6 @@ Examples: $PROGRAMNAME -nosynaptics fluxbox $PROGRAMNAME -nosync fluxbox $PROGRAMNAME -noddc wmii - $PROGRAMNAME -nousb fluxbox $PROGRAMNAME -module radeon -mode 1024x768 -vsync 60 wmi XINITRC=~/.xinitrc $PROGRAMNAME ion $PROGRAMNAME -display 8 wmii @@ -167,12 +166,88 @@ mode() [ -r "$MONITORINFO" ] || monitor # get monitor settings modes=$(perl -e 'while () {if (/ Resolution:/) { s/.*\s+(\d+x\d+).*/$1/; print} }' < $MONITORINFO | sort -nur | perl -ne 's/\s+/ /; s/(\d+x\d+)/"$1"/; print') + + if [ -n "$XINERAMA" ] ; then + + print "$fg[green] + +Option for $fg[yellow]Xinerama$fg[green] found, please use xrandr inside X.org for your further configuration! +Trying to identify monitors now..." + + # Currently we only know that it works with current intel driver, + # so inform user about that: + if [[ "$MODULE" != "intel" ]] ; then + print "$fg[red] + +Warning: using a non-intel driver - trying Xinerama setup anyway. +If it worked please contact grml developers providing information +about your setup so we can adjust grml-x according! + + -> http://grml.org/contact/ + +Sleeping for 10 seconds now... Will continue then... +Just press Ctrl-C to cancel operation. +" +# sleep 10 # FIXME + fi + + # make sure we have information from 2 monitors: + # - first one from 'hwinfo --monitor' => $MONITORINFO + # - second one from 'hwinfo --framebuffer' => $FRAMEBUFFER + FRAMEBUFFER=$(hwinfo --framebuffer | grep 'Mode 0x.* bits' | head -1) + if [ -z "$FRAMEBUFFER" ] ; then + print "$fg[red] +Fatal: could not identify two monitors - no chance to + set up multihead using Xinerama - sorry. :-( + +Please run grml-x without the -xinerama option and contact +grml developers if you have any further useful information. + => http://grml.org/bugs/ +" + bailout 10 + fi + + # check whether we can read the $MONITORINFO file + if ! [ -r "$MONITORINFO" ] ; then + print "$fg[red] +Fatal: could not identify monitor - no chance to + set up multihead using Xinerama - sorry. :-( +" + bailout 11 + else + # now calculate Virtual size for use with Xinerama + HORIZ_RES1="$(grep 'Max. Resolution:' $MONITORINFO | sed 's/ Max\. Resolution: \(.*\)x\(.*\)/\1/')" + VERIZ_RES1="$(grep 'Max. Resolution:' $MONITORINFO | sed 's/ Max\. Resolution: \(.*\)x\(.*\)/\2/')" + + HORIZ_RES2="$(echo $FRAMEBUFFER | sed 's/ Mode 0x.*: \(.*\)x.*/\1/')" + VERIZ_RES2="$(echo $FRAMEBUFFER | sed 's/ Mode 0x.*x\(.*\) (.*/\1/')" + + if [ -n "$HORIZ_RES1" -a -n "$VERIZ_RES1" -a -n "$HORIZ_RES2" ] ; then + if [ $(echo $VERIZ_RES1 - $VERIZ_RES2 | bc -l) -eq 0 ] ; then + VERIZ_RESULT="$VERIZ_RES1" + elif [ "$VERIZ_RES1" -gt "$VERIZ_RES2" ] ; then + VERIZ_RESULT="$VERIZ_RES1" + else + VERIZ_RESULT="$VERIZ_RES2" + fi + + HORIZ_RESULT=$(echo $HORIZ_RES1 + $HORIZ_RES2 | bc -l) + + # important: keep newline for appropriate placing below $MODES! + if [ -n "$HORIZ_RESULT" ] ; then + VIRTUAL=" + Virtual $HORIZ_RESULT $VERIZ_RES1" + fi + fi + fi + fi + if [[ -n $NODDC ]] ; then - MODES='Modes "1024x768" "800x600" "640x480" "1600x1200" "1280x1024" "1280x960"' + MODES="Modes \"1024x768\" \"800x600\" \"640x480\" \"1600x1200\" \"1280x1024\" \"1280x960\"$VIRTUAL" elif [[ "$modes" == "\"1024x768\" " || -z $modes ]] ; then - MODES='# Modes "1024x768" "800x600" "640x480" "1600x1200" "1280x1024" "1280x960"' + MODES="# Modes \"1024x768\" \"800x600\" \"640x480\" \"1600x1200\" \"1280x1024\" \"1280x960\"$VIRTUAL" else - MODES="# Modes $modes" + MODES="# Modes $modes$VIRTUAL" fi } # }}} @@ -236,7 +311,6 @@ EndSection if grep -q 'Device:.*ALPS' "$MOUSEINFO" ; then if [[ "$SYNAPTICS" == "yes" ]] ; then # check for '-nosynaptics'-option MOUSEDRIVER='synaptics' - # SYNMOUSE='InputDevice "Synaptics" "CorePointer"' SYNMOUSE='InputDevice "Synaptics" "AlwaysCore"' SYNMOUSEDETAIL=" Section \"InputDevice\" @@ -274,14 +348,13 @@ EndSection SYNMOUSE='# No alps touchpad detected.' fi else - SYNMOUSE='# No alps touchpad present.' + SYNMOUSE='# No synaptics/alps touchpad present.' fi fi # USB-PS/2 Optical Mouse - if ! [[ -n $NOUSB ]] ; then - USB='yes' - USBMOUSE='InputDevice "USB Mouse" "CorePointer"' + if [ -n "$USE_USB" ] ; then + USBMOUSE='InputDevice "USB Mouse" "CorePointer"' USBMOUSEDETAIL=" Section \"InputDevice\" Identifier \"USB Mouse\" @@ -294,14 +367,14 @@ Section \"InputDevice\" EndSection " else - USBMOUSE='# Deactivated USB Mouse as requested.' + USBMOUSE='# InputDevice "USB Mouse" "CorePointer"' + USBMOUSEDETAIL='' fi if grep -q 'Device:.*Serial' "$MOUSEINFO" ; then SERIAL='yes' - SERMOUSE='InputDevice "Serial Mouse" "CorePointer"' - SERMOUSEDETAIL=" -Section \"InputDevice\" + SERMOUSE='InputDevice "Serial Mouse" "CorePointer"' + SERMOUSEDETAIL="Section \"InputDevice\" Identifier \"Serial Mouse\" Driver \"mouse\" Option \"Device\" \"/dev/ttyS0\" @@ -313,16 +386,15 @@ EndSection " else SERMOUSE='# No serial mouse detected.' + SERMOUSEDETAIL='' fi # ImExPS/2 Logitech Explorer Mouse # "PS2++ Logitech MX Mouse" - if ! [[ -n $NOPS2 ]] ; then - if grep -qE 'Device:.*PS.?2' "$MOUSEINFO" ; then - PS2='yes' - PS2MOUSE='InputDevice "PS/2 Mouse" "CorePointer"' - PS2MOUSEDETAIL=" -Section \"InputDevice\" + if [ -n "$USE_PS2" ] ; then + PS2='yes' + PS2MOUSE='InputDevice "PS/2 Mouse" "CorePointer"' + PS2MOUSEDETAIL="Section \"InputDevice\" Identifier \"PS/2 Mouse\" Driver \"mouse\" Option \"Device\" \"/dev/input/mice\" @@ -334,34 +406,24 @@ Section \"InputDevice\" EndSection " else - PS2MOUSE='# No PS/2 mouse detected.' - PS2MOUSEDETAIL="" + PS2MOUSE='# InputDevice "PS/2 Mouse" "CorePointer"' + PS2MOUSEDETAIL='' fi - else - PS2MOUSE='# Deactivated PS/2 Mouse as requested.' - fi - if [[ -n $GENERICMOUSE ]] ; then - GENERIC='yes' - GENERICMOUSE='InputDevice "Generic Mouse" "CorePointer"' - GENERICMOUSEDETAIL=" -Section \"InputDevice\" - Identifier \"Generic Mouse\" - Driver \"mouse\" - Option \"Device\" \"/dev/input/mice\" - Option \"Protocol\" \"auto\" - Option \"Buttons\" \"5\" - Option \"ZAxisMapping\" \"4 5\" -EndSection + EVDEV_MOUSE="# Section \"InputDevice\" +# Identifier \"Generic Mouse\" +# Driver \"evdev\" +# Option \"Device\" \"/dev/input/mice\" +# Option \"Protocol\" \"auto\" +# Option \"ZAxisMapping\" \"4 5\" +# Option \"Buttons\" \"5\" +# Option \"SendCoreEvents\" \"true\" +# EndSection " - else - GENERICMOUSE='# No generic mouse configured.' - fi MOUSE=" $USBMOUSE $PS2MOUSE $SYNMOUSE - $GENERICMOUSE $SERMOUSE" } # }}} @@ -373,7 +435,8 @@ parse_options() vsync:=o_vsync hsync:=o_hsync mode:=o_mode force=o_force display:=o_display \ nostart=o_nostart nodpms=o_nodpms nosynaptics=o_nosynaptics nousb=o_nousb \ nops2=o_nops2 genmouse=o_genmouse novref=o_novref nohsync=o_nohsync \ - fallback=o_fallback + fallback=o_fallback usb=o_usb ps2=o_ps2 composite=o_composite \ + xinerama=o_xinerama if [[ $# == 0 || "$o_help" != "" || "$1" == '-h' || "$1" == '--help' ]]; then usage @@ -413,11 +476,19 @@ parse_options() fi if [[ "$o_nousb" != "" ]]; then - NOUSB='yes' + echo 'Warning: option -nousb is deprecated.'>&2 + fi + + if [[ "$o_usb" != "" ]]; then + USE_USB='yes' fi if [[ "$o_nops2" != "" ]]; then - NOPS2='yes' + echo 'Warning: optino -nops2 is deprecated˙'>&2 + fi + + if [[ "$o_ps2" != "" ]]; then + USE_PS2='yes' fi if [[ "$o_genmouse" != "" ]]; then @@ -440,7 +511,7 @@ parse_options() if [[ "$XKEYBOARD" == de ]] ; then KEYBOARD="$KEYBOARD - Option \"XkbVariant\" \"nodeadkeys\"" +# Option \"XkbVariant\" \"nodeadkeys\"" fi if [ -n "$FORCE" -o ! -r "$XCONFIG" -a -z "$FALLBACK" ] ; then @@ -481,6 +552,20 @@ parse_options() VERTISYNC="# VertRefresh 50.0 - 60.0 # deactivated via -novref option of grml-x" fi + if [[ "$o_xinerama" != "" ]]; then + XINERAMA=1 + fi + + if [[ "$o_composite" != "" ]]; then + COMPOSITE="Section \"Extensions\" + Option \"Composite\" \"Enable\" +EndSection" + else + COMPOSITE="#Section \"Extensions\" +# Option \"Composite\" \"Enable\" +#EndSection" + fi + # write hwinfo stuff writehwinfo @@ -587,7 +672,8 @@ cat << EOX Section "ServerLayout" Identifier "XServer Configured" Screen 0 "Screen0" 0 0 - InputDevice "Keyboard0" "CoreKeyboard" + # InputDevice "Keyboard0" "CoreKeyboard" + # InputDevice "Generic Mouse" "CorePointer" $MOUSE EndSection @@ -612,20 +698,21 @@ EndSection Section "Module" Load "dbe" # double buffer extension Load "dri" # direct rendering - Load "glx" # 3D layer - Load "type1" # font module - Load "freetype" # font rendering + Load "glx" # 3D layer / GLX extension + Load "type1" # type1 font module + Load "freetype" # freetype fonts rendering Load "extmod" # some commonly used server extensions (e.g. shape extension) Load "record" # recording extension + Load "evdev" # generic input handling driver on Linux # Load "vbe" # Vesa BIOS Extension - # Load "ddc" # ddc probing of monitor - # Load "bitmap" # bitmap fonts - # Load "GLcore" # render OpenGL in software # Load "i2c" # I2C bus # Load "int10" # initialize graphics cards via int10 call to the BIOS - # Load "speedo" # font module # Load "v4l" # Video for Linux - # Load "evdev" # generic input handling driver on Linux + ## Deprecated/unneeded modules with Xorg >=7.0: + # Load "speedo" # font module (does not exist anymore) + # Load "ddc" # ddc probing of monitor (automatically loaded) + # Load "GLcore" # render OpenGL in software (automatically loaded) + # Load "bitmap" # bitmap fonts (automatically loaded) # Valid entries - see /usr/lib/xorg/modules/[extensions/] # afb bitmap cfb cfb16 cfb24 cfb32 cw damage dbe ddc dri drm extmod fb # fbdevhw freetype GLcore glx i2c int10 int10 layer mfb pcidata rac ramdac @@ -638,19 +725,19 @@ EndSection # Or if you just want both to be control, use: # Option "XkbOptions" "ctrl:nocaps" # More information: http://ftp.x.org/pub/X11R7.0/doc/html/XKB-Config.html -Section "InputDevice" - Identifier "Keyboard0" - Option "CoreKeyboard" - $KEYBOARD - # Option "XkbOptions" "ctrl:swapcaps,grp:alt_shift_toggle,grp_led:scroll,compose:menu" -EndSection +# Section "InputDevice" +# Identifier "Keyboard0" +# Option "CoreKeyboard" +# $KEYBOARD +# # Option "XkbOptions" "ctrl:swapcaps,grp:alt_shift_toggle,grp_led:scroll,compose:menu" +# EndSection # More information: http://ftp.x.org/pub/X11R7.0/doc/html/mouse.html -$GENERICMOUSEDETAIL $USBMOUSEDETAIL $PS2MOUSEDETAIL $SERMOUSEDETAIL $SYNMOUSEDETAIL +$EVDEV_MOUSE Section "Monitor" Identifier "Monitor0" # ModelName "Old Monitor (no DDC)" @@ -728,13 +815,13 @@ Section "Screen" EndSubSection EndSection +# Make sure you have the relevant Debian packages on your system +# to be able to use DRI (libgl1-mesa-dri for example) Section "DRI" Mode 0666 EndSection -#Section "Extensions" -# Option "Composite" "Enable" -#EndSection +$COMPOSITE ## END OF FILE ################################################################# EOX @@ -745,6 +832,12 @@ EOX writeit() { XCONFTMP="/tmp/xconfig.$$" xconfig > $XCONFTMP + # we do not want to have two CorePointers, deactivate one therefore + if grep -Eq '^[[:space:]]+InputDevice[ ]+"USB Mouse"[ ]+"CorePointer"' $XCONFTMP ; then + if grep -Eq '^[[:space:]]+InputDevice[ ]+"PS/2 Mouse"[ ]+"CorePointer"' $XCONFTMP ; then + sed -i 's|InputDevice.*PS/2.*CorePointer|# & # deactivated to avoid two CorePointers|' $XCONFTMP + fi + fi [ -f $XCONFIG ] && sudo mv -f $XCONFIG $XCONFIG.old sudo mv $XCONFTMP $XCONFIG sudo chown root.root $XCONFIG @@ -888,4 +981,4 @@ cleanup # }}} ## END OF FILE ################################################################# -# vim:foldmethod=marker +# vim:foldmethod=marker expandtab ai ft=zsh