04-30-2007, 12:29 AM
Crea un nuevo archivo:
Código:
vim beryl.jdk6.fix.sh
Copia el siguiente texto en el:
Código:
#!/bin/bash
# testing pass in archlinux 0.8 by SCys
# Write for beryl fix jdk 6!
checkAll()
{
[ ! -x "`which zip`" ] && echo "no zip!" && exit 0
[ ! -x "`which unzip`" ] && echo "no unzip!" && exit 0
[ ! -x "`which wget`" ] && echo "no wget!" && exit 0
[ ! -x "`which awk`" ] && echo "no awk!" && exit 0
}
checkAll
setJdkPath()
{
if [ "$CLASSPATH" ]
then
LIB_PATH=`echo ${CLASSPATH} | awk -F \: '{print $3}'`
elif [ "$1" ]
then
LIB_PATH=$1
elif [ -x $LIB_PATH/rt.jar ]
then
echo "JRE LIB PATH not set up!please set like \"this beryl.jdk.fix.sh /opt/java/jre/lib\" "
exit 0
fi
echo $LIB_PATH
}
#
#--MAIN---
#
#1: Set var
setJdkPath $1
#2: Prepare some directories
mkdir -p /tmp/java
mkdir -p /tmp/java/src
mkdir -p /tmp/java/rt
#3: Extract the Java SE 6 runtime classes
if [ ! -x /tmp/java/rt/rt.zip ]
then
cp $LIB_PATH/rt.jar $LIB_PATH/rt.jar.orig
cp $LIB_PATH/rt.jar /tmp/java/rt/rt.zip
fi
cd /tmp/java/rt
echo "Please waiting for unzip all files"
unzip rt.zip > /dev/null
echo "Unzip ok."
#4: Get the source code
cd ../src
wget http://www.java.net/download/jdk6/6u2/promoted/b01/jdk-6u2-ea-src-b01-jrl-29_mar_2007.jar
java -jar jdk-6u2-ea-src-b01-jrl-29_mar_2007.jar
#5: To patch:
# j2se/src/solaris/classes/sun/awt/X11/XWM.java
# j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java
echo 'diff -ur src.orig/j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java src/j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java
--- src.orig/j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java 2007-02-24 08:21:07.000000000 -0500
+++ src/j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java 2007-02-24 08:23:40.000000000 -0500
@@ -692,7 +692,7 @@
// ConfigureNotify, only the one from X with zero
// coordinates. This is the workaround to get real
// location, 6261336
- // Do the same for non-reparenting WMs (Compiz, Looking Glass)
+ // Do the same for non-reparenting WMs (Compiz, Looking Glass, Beryl)
switch (XWM.getWMID()) {
case XWM.CDE_WM:
case XWM.MOTIF_WM:
@@ -700,6 +700,7 @@
case XWM.SAWFISH_WM:
case XWM.COMPIZ_WM:
case XWM.LG3D_WM:
+ case XWM.BERYL_WM:
{
Point xlocation = queryXLocation();
if (log.isLoggable(Level.FINE)) log.log(Level.FINE, "New X location: {0}", new Object[]{xlocation});
diff -ur src.orig/j2se/src/solaris/classes/sun/awt/X11/XWM.java src/j2se/src/solaris/classes/sun/awt/X11/XWM.java
--- src.orig/j2se/src/solaris/classes/sun/awt/X11/XWM.java 2007-02-24 08:21:07.000000000 -0500
+++ src/j2se/src/solaris/classes/sun/awt/X11/XWM.java 2007-02-24 08:22:58.000000000 -0500
@@ -79,7 +79,8 @@
ICE_WM = 10,
METACITY_WM = 11,
COMPIZ_WM = 12,
- LG3D_WM = 13;
+ LG3D_WM = 13,
+ BERYL_WM = 14;
public String toString() {
switch (WMID) {
case NO_WM:
@@ -106,6 +107,8 @@
return "Compiz";
case LG3D_WM:
return "LookingGlass";
+ case BERYL_WM:
+ return "Beryl";
case UNDETERMINED_WM:
default:
return "Undetermined WM";
@@ -534,6 +537,10 @@
return isNetWMName("LG3D");
}
+ static boolean isBeryl() {
+ return isNetWMName("beryl");
+ }
+
/*
* Is Metacity running?
*/
@@ -546,7 +553,7 @@
}
static boolean isNonReparentingWM() {
- return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM);
+ return (XWM.getWMID() == XWM.COMPIZ_WM || XWM.getWMID() == XWM.LG3D_WM || XWM.getWMID() == XWM.BERYL_WM);
}
/*
@@ -738,6 +745,8 @@
awt_wmgr = XWM.COMPIZ_WM;
} else if (isLookingGlass()) {
awt_wmgr = LG3D_WM;
+ } else if (isBeryl()) {
+ awt_wmgr = BERYL_WM;
} else if (doIsIceWM && isIceWM()) {
awt_wmgr = XWM.ICE_WM;
}
@@ -1387,6 +1396,7 @@
case XWM.ENLIGHTEN_WM:
return readInsetsArray(window, XA_E_FRAME_SIZE, insets);
case XWM.COMPIZ_WM:
+ case XWM.BERYL_WM:
return readInsetsArray(window, XA_FRAME_EXTENTS, insets);
default:
return false;' > patch
chmod +x patch
patch -p1 < patch
#6: Replace classes
cd ../rt
rm sun/awt/X11/XDecoratedPeer*
rm sun/awt/X11/XWM.*
rm sun/awt/X11/XWM\$*
cp ../src/j2se/src/solaris/classes/sun/awt/X11/XWM.java sun/awt/X11
cp ../src/j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java sun/awt/X11
#7: Compile the modified classes
echo "Please waiting for complie."
javac -d . sun/awt/X11/*.java
echo "complie ok."
#8: Update the changed files
zip -f rt.zip sun/awt/X11/*
#9: Replace the old rt.jar
cp rt.zip $LIB_PATH/rt.jar
echo "All ok, start some java application to try. "
Hazlo ejecutable:
Código:
chmod +x beryl.jdk6.fix.sh
Ejecútalo:
Código:
sh beryl.jdk6.fix.sh
Referencias:
Java&trade Platform, Standard Edition 6u1 Source Snapshot Releases
Java 5: [Truco] Como hacer funcionar Java AWT/Swing (Netbeans, Zend, Eclipse,.) en XGL/Beryl
Beryl