GNU/Linux >> Linux の 問題 >  >> Linux

素晴らしいWmでJavaアプリケーションのマウスポインタオフセットを修正する方法は?

Awesome WM v3.5.2から3.5.5で再現する方法(これまでのところ):

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

この時点で、マウスは「通常の」アプリケーションと同じように動作することを期待しています。代わりに、私は次のことを観察します:

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

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

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

すでにアプリケーションが開いている別のタグを切り替える場合 –「仮想マウスデスクトップ」がプライマリ画面の左上に移動します 。

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

関連する質問、記事。 _JAVA_AWT_WM_NONREPARENTINGを試しました およびwmname 修正しますが、行きません。

承認された回答:

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

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

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ブラウザーの世界でユーザーエージェント文字列に何が起こったのかがわかりますが、私にとってはうまくいきました。

関連:Ubuntu runuserコマンド?

さらに、arch wikiは、他のウィンドウマネージャーのなりすましに関するセクションでAwesome WMについても言及しており、wmnameを推奨しています。 :
https://wiki.archlinux.org/index.php/Java#Impersonate_another_window_manager

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

$ wmname LG3D

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

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


Linux
  1. LinuxにJavaをインストールする方法

  2. UbuntuGNOMEで非表示のマウスカーソルの問題を修正する方法

  3. Ubuntu 22.04 に Java をインストールする方法

  1. マウスクリックを使用してマウスポインタの位置を表示する方法は?

  2. Linux/X11 でマウス ポインターを非表示にするにはどうすればよいですか?

  3. 素晴らしいウィンドウ マネージャーを使用するにはどうすればよいですか?

  1. 一部のアプリケーションは、Sshを介したBashでのマウスクリックをどのように受け入れますか?

  2. Linux 用 Windows サブシステムで X マウス ポインターのサイズを設定する方法

  3. Java SecureRandom はブロックしませんか?どのように?