GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Memperbaiki Aplikasi Java Mouse Pointer Offset Di Awesome Wm?

Cara mereproduksi dalam Awesome WM v3.5.2 hingga 3.5.5 (sejauh ini):

  1. Instal OpenJDK atau Oracle Java 7 . Bug ini telah diamati dengan keduanya.
  2. Mulai sesi WM Luar Biasa baru dengan konfigurasi default .
  3. Mulailah jEdit atau PyCharm . Bug ini telah diamati dengan keduanya.
    • Gerakkan penunjuk tetikus, dan amati perubahannya berdasarkan apakah Anda mengarahkan kursor ke kode, file proyek, atau menu. Ini akan bekerja secara normal.
    • Klik dan lepaskan pada File menu, masuk ke salah satu sub-menu, dan amati bagaimana item langsung di bawah penunjuk mouse difokuskan sepanjang waktu.
  4. Tekan Mod4 +Ruang berulang kali hingga tata letak mengambang diaktifkan (aplikasi akan menjadi layar penuh) atau buka aplikasi lain dengan tag yang sama.

Pada titik ini, saya berharap mouse berperilaku seperti pada aplikasi "normal". Sebagai gantinya saya mengamati yang berikut:

  • Saat mengklik dan menavigasi menu dengan mouse, penunjuk mouse dan item menu yang difokuskan akan offset secara vertikal dari satu sama lain, tampaknya memiliki jumlah piksel yang sama dengan tinggi bilah status.
  • Saat mengarahkan kursor ke item lain-lain seperti sebelumnya, ikon kursor akan diatur seolah-olah penunjuk tetikus lebih tinggi di layar. Misalnya, mengarahkan kursor ke baris atas teks, Anda tidak akan melihat kursor teks.

Seolah-olah ada sesuatu yang tidak mendeteksi bahwa koordinat jendela telah berubah.

Bug serupa tetapi jauh lebih mengganggu terjadi saat Anda membuka aplikasi lain dengan tag yang sama – perilaku mouse seolah-olah jendela tidak bergerak sama sekali.

Saat Anda mengalihkan tag lain yang telah membuka aplikasi – “virtual mouse desktop” dipindahkan ke kiri atas layar utama .

Karena bug ini telah diamati di OpenJDK dan Oracle Java, dengan aplikasi Java yang berbeda, sepertinya bug tersebut ada di Awesome WM.

Pertanyaan terkait, artikel. Saya mencoba _JAVA_AWT_WM_NONREPARENTING dan wmname perbaikan, tapi jangan pergi.

Jawaban yang Diterima:

Anda perlu menambahkan definisi khusus ke sumber untuk pengelola jendela, menurut pengalaman saya.

Saya mengalami ini beberapa tahun yang lalu di marco desktop MATE manajer jendela; 'perbaikan' adalah membuat marco berpura-pura menjadi proyek induknya, metacity, untuk memanfaatkan perbaikan bawaan JDK untuk metacity.

dari src/core/display.c :

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

Perbaikan ini mirip dengan apa yang terjadi pada string agen pengguna di dunia browser web, tetapi berhasil untuk saya.

Terkait:Perintah runuser Ubuntu?

Selain itu, arch wiki bahkan menyebutkan Awesome WM di bagian meniru pengelola jendela lain, di mana ia merekomendasikan wmname :
https://wiki.archlinux.org/index.php/Java#Impersonate_another_window_manager

Anda dapat menggunakan wmname dari suckless.org untuk membuat JVM percaya bahwa Anda
menjalankan window manager yang berbeda. Ini dapat memecahkan masalah rendering
GUI Java yang terjadi di pengelola jendela seperti Awesome atau Dwm atau
Ratpoison.

$ wmnama LG3D

Anda harus memulai ulang aplikasi yang bersangkutan setelah mengeluarkan perintah wmname
.

Ini berfungsi karena JVM berisi daftar hard-coded yang diketahui,
window manager non-re-parenting. Untuk ironi maksimum, beberapa pengguna lebih suka
untuk meniru LG3D, window manager non-re-parenting yang ditulis oleh
Sun, di Java.


Linux
  1. Cara Memperbaiki Masalah Kursor Mouse Tak Terlihat di Ubuntu GNOME

  2. Bagaimana Anda menyembunyikan penunjuk tetikus di Linux/X11?

  3. Bagaimana cara menggunakan pengelola jendela yang mengagumkan?

  1. Cara menginstal Java di Linux

  2. Bagaimana cara mengatur ukuran penunjuk mouse X di Subsistem Windows untuk Linux

  3. Java SecureRandom tidak memblokir? Bagaimana?

  1. Bagaimana Beberapa Aplikasi Menerima Klik Mouse Di Bash Over Ssh?

  2. Bagaimana Cara Menampilkan Lokasi Pointer Mouse Menggunakan Klik Mouse?

  3. Cara Menginstal Java di Ubuntu 22.04