Beryl & Java的解决最后办法-_-最好的吧
Monday, 26. March 2007, 17:25:41
Beryl和Java是死对头吗?怎么老是出问题的-_-
Compiz倒是解决的不错了。(情况不清楚,可是JDK6那里有修正BUG)
当然Compiz能做到的,Beryl也应该能咯;-P
---
在wiki.Beryl-project.org有解决的办法。题目是JAVA。
---
操作步骤很复杂吧,对于习惯在Windows里面漫游的人来说,体会这个可是很难咯。哈哈
我来简单说说步骤,有错的话,请指出咯:~)
---
注意替换/usr/java/jdk1.6.0为你自己的JDK目录哦
---
1:准备目录
2:提取Java的运行时的类包
3:下载JAVA源代码(最新的在JDK download page)
4:提取源代码
5:修正代码
5-1:修正里面的j2se/src/solaris/classes/sun/awt/X11/XWM.java和j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java两个文件
5-2:复制下面的代码到里面咯
5-3:运行下面的命令来修正
6:删除那些我们准备要替换的
7:拷贝修正完成的类
8:编译好修正的源代码
9:打包好新的运行时,替代原来旧的类包
Compiz倒是解决的不错了。(情况不清楚,可是JDK6那里有修正BUG)
当然Compiz能做到的,Beryl也应该能咯;-P
---
在wiki.Beryl-project.org有解决的办法。题目是JAVA。
---
操作步骤很复杂吧,对于习惯在Windows里面漫游的人来说,体会这个可是很难咯。哈哈
我来简单说说步骤,有错的话,请指出咯:~)
---
注意替换/usr/java/jdk1.6.0为你自己的JDK目录哦
---
1:准备目录
mkdir -p /tmp/java/src mkdir -p /tmp/java/rt
2:提取Java的运行时的类包
cp /usr/java/jdk1.6.0/jre/lib/rt.jar /usr/java/jdk1.6.0/jre/lib/rt.jar.orig cp /usr/java/jdk1.6.0/jre/lib/rt.jar /tmp/java/rt/rt.zip cd /tmp/java/rt unzip rt.zip
3:下载JAVA源代码(最新的在JDK download page)
cd ../src wget http://www.java.net/download/jdk6/6u1/promoted/b03/jdk-6u1-ea-src-b03-jrl-19_jan_2007.jar
4:提取源代码
java -jar jdk-6u1-ea-src-b03-jrl-19_jan_2007.jar
5:修正代码
5-1:修正里面的j2se/src/solaris/classes/sun/awt/X11/XWM.java和j2se/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java两个文件
touch patch vim patch(这里和原文使用nano的编辑器不同的)
5-2:复制下面的代码到里面咯
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 ||Beryl和Java是死对头吗?怎么老是出问题的-_-
Compiz倒是解决的不错了。(情况不清楚,可是JDK6那里有修正BUG)
当然Compiz能做到的,Beryl也应该能咯;-P 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;
5-3:运行下面的命令来修正
chmod +x patch patch -p1 < patch
6:删除那些我们准备要替换的
cd ../rt rm sun/awt/X11/XDecoratedPeer* rm sun/awt/X11/XWM.* rm sun/awt/X11/XWM\$*
7:拷贝修正完成的类
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
8:编译好修正的源代码
javac -d . sun/awt/X11/*.java
9:打包好新的运行时,替代原来旧的类包
zip -f rt.zip sun/awt/X11/* cp rt.zip /usr/java/jdk1.6.0/jre/lib/rt.jar

