Awesome WMでJavaアプリケーションのマウスポインターオフセットを修正する方法


15

Awesome WM v3.5.2〜3.5.5(これまで)での再現方法:

  1. OpenJDKまたはOracle Java 7をインストールします。このバグは両方で確認されています。
  2. デフォルト設定で新しいAwesome WMセッションを開始します
  3. jEditまたはPyCharmを起動します。このバグは両方で確認されています。
    • マウスポインターを動かして、コード、プロジェクトファイル、またはメニューにカーソルを合わせているかどうかに基づいてマウスポインターがどのように変化するかを観察します。これは正常に機能するはずです。
    • [ ファイル ]メニューをクリックして離し、サブメニューの1つを入力し、マウスポインターのすぐ下にあるアイテムが常にどのようにフォーカスされているかを確認します。
  4. フローティングレイアウトがアクティブになるまで(アプリケーションがほぼフルスクリーンになるまで)Mod4+をSpace繰り返し押す、同じタグで別のアプリケーションを開きます。

この時点で、マウスは「通常の」アプリケーションと同じように動作するはずです。代わりに、次のことを確認します。

  • マウスでメニューをクリックしてナビゲートすると、マウスポインターとフォーカスされたメニュー項目は、ステータスバーの高さと同じピクセル量で、互いに垂直方向にオフセットされます。
  • 以前のようにその他のアイテムにカーソルを合わせると、カーソルアイコンは、マウスポインターが画面上で上にあるかのように設定されます。たとえば、テキストの一番上の行にカーソルを合わせると、テキストカーソルは表示されません。

ウィンドウの座標が変更されたことを何かが検出しないかのようです。

同じタグで別のアプリケーション開くと、同様ですがはるかに迷惑なバグが発生します。マウスの動作は、ウィンドウがまったく移動していないかのようです。

あなたはときに、すでに開いているアプリケーションを持っている別のタグで切り替え - 「仮想マウスデスクトップを」に移動され、主画面の左上

これらのバグはOpenJDKとOracle Javaの両方で、異なるJavaアプリケーションで観察されているため、バグはAwesome WMにある可能性が非常に高いようです。

関連する質問記事。私が試したん_JAVA_AWT_WM_NONREPARENTINGwmname修正が、ない行きます。


最新のAwesomeはリペアレントWMなので、NONREPARENTINGオプションは必要ないはずです。
dknight 14

回答:


1

私の経験では、ウィンドウマネージャーのソースに特別な定義を追加する必要があります。

数年前に、MATEデスクトップのmarcoウィンドウマネージャーでこのようなことが起こりました。「修正」は、marcoがその親プロジェクトであるmetacityのふりをして、metacityのJDKに組み込まれた修正を利用することでした。

からsrc/core/display.c

meta_prop_set_utf8_string_hint (the_display,
                                the_display->leader_window,
                                the_display->atom__NET_WM_NAME,
                                "Metacity (Marco)");

この修正は、Webブラウザーの世界でユーザーエージェント文字列に何が起こったのかを語っていますが、私にとってはうまくいきました。

また、アーチのwikiにもそれが推奨しています他のウィンドウマネージャを偽装に関するセクション、中に恐ろしいWM言及wmname
https://wiki.archlinux.org/index.php/Java#Impersonate_another_window_managerを

suckless.orgのwmnameを使用して、別のウィンドウマネージャーを実行しているとJVMに認識させることができます。これにより、Awesome、Dwm、Ratpoisonなどのウィンドウマネージャーで発生するJava GUIのレンダリングの問題が解決される場合があります。

$ wmname LG3D

wmnameコマンドを発行した後、問題のアプリケーションを再起動する必要があります。

これが機能するのは、JVMにハードコードされた既知の、親を変更しないウィンドウマネージャーのリストが含まれているためです。皮肉なことに、一部のユーザーは、JavaでSunが作成した、親を変更しないウィンドウマネージャーであるLG3Dになりすますことを好みます。


-2

これは、Linux上のJava関連の既知のバグのようです:https : //netbeans.org/bugzilla/show_bug.cgi?id=227754

上記のURLでは、NetBeans IDEの回避策を見つけることができます。私が使用するJavaアプリで機能する回避策は、最大化ボタンを押してJavaアプリを最大化せず、ウィンドウを手動でサイズを変更することです。これがあなたを助けるならば、情報を共有してください、ありがとう!


Awesome WMには最大化するボタンはありません。フローティングレイアウトを使用すると、さらに悪化し(レイアウトを変更するまでウィンドウ全体が灰色になります)、「開く」JDKはバグを見ても登録を強制します。
l0b0 14

実際、openjdk.java.netでは、ユーザーがOracle Contributor Agreementを印刷、署名、スキャン、および電子メールで送信して「貢献者」になる必要がありますが、これはおそらくバグデータベースを表示するために必要です。内容はかなり恐ろしいものだと思います。
l0b0 14

そして、設定DESKTOP_SESSIONは機能しません。いくつかの推奨値を試してみました。
l0b0 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.