จะแก้ไขตัวชี้เมาส์ของแอปพลิเคชัน Java ในออฟเซ็ต WM ได้อย่างไร


15

วิธีทำซ้ำใน Awesome WM v3.5.2 ถึง 3.5.5 (จนถึง):

  1. ติดตั้ง OpenJDK หรือ Oracle Java 7 ข้อผิดพลาดนี้ได้รับการสังเกตทั้งคู่
  2. เริ่มเซสชัน WM ใหม่ที่น่ากลัวกับการกำหนดค่าเริ่มต้น
  3. เริ่มการทำงานอย่างใดอย่างหนึ่งjEditหรือPyCharm ข้อผิดพลาดนี้ได้รับการสังเกตทั้งคู่
    • เลื่อนตัวชี้เมาส์ไปรอบ ๆ และสังเกตว่าการเปลี่ยนแปลงนั้นขึ้นอยู่กับว่าคุณวางตัวอยู่เหนือรหัสไฟล์โครงการหรือเมนู ควรทำงานได้ตามปกติ
    • คลิกและปล่อยบนเมนูไฟล์ป้อนหนึ่งในเมนูย่อยและสังเกตว่ารายการภายใต้ตัวชี้เมาส์ถูกเน้นตลอดเวลา
  4. กดMod4+ Spaceซ้ำ ๆ จนกระทั่งเลย์เอาต์ลอยถูกเปิดใช้งาน (แอปพลิเคชันจะเกือบเต็มหน้าจอ) หรือเปิดแอปพลิเคชันอื่นในแท็กเดียวกัน

ณ จุดนี้ฉันคาดหวังว่าเมาส์จะทำงานเหมือนกับที่ใช้กับแอปพลิเคชั่น "ปกติ" แต่ฉันสังเกตสิ่งต่อไปนี้:

  • เมื่อคลิกและการนำทางเมนูด้วยเมาส์ตัวชี้เมาส์และรายการเมนูที่เน้นจะถูกชดเชยในแนวตั้งจากกันและกันโดยมีจำนวนพิกเซลเท่ากับความสูงของแถบสถานะ
  • เมื่อวางเมาส์เหนือรายการอื่น ๆ เช่นเดิมไอคอนเคอร์เซอร์จะถูกตั้งค่าราวกับว่าตัวชี้เมาส์สูงขึ้นบนหน้าจอ ตัวอย่างเช่นการโฮเวอร์เหนือบรรทัดข้อความคุณจะไม่เห็นเคอร์เซอร์ข้อความ

ราวกับว่ามีบางสิ่งที่ตรวจไม่พบว่าพิกัดหน้าต่างเปลี่ยนไป

ข้อผิดพลาดที่คล้ายกัน แต่น่ารำคาญกว่านั้นเกิดขึ้นเมื่อคุณเปิดแอปพลิเคชั่นอื่นในแท็กเดียวกันพฤติกรรมของเมาส์เหมือนกับว่าหน้าต่างไม่ได้เคลื่อนไหวเลย

เมื่อคุณสลับแท็กที่แล้วมีการประยุกต์ใช้อื่นที่เปิด - ที่ "สก์ท็อปเมาส์เสมือน" ถูกย้ายไปยังด้านบนซ้ายของหน้าจอหลัก

เนื่องจากข้อผิดพลาดเหล่านี้ได้รับการตรวจพบทั้งใน OpenJDK และ Oracle Java ด้วยแอปพลิเคชัน Java ที่แตกต่างกันจึงมีแนวโน้มว่าข้อผิดพลาดใน Awesome WM

ที่เกี่ยวข้องคำถาม , บทความ ฉันลอง_JAVA_AWT_WM_NONREPARENTINGและwmnameแก้ไข แต่ไม่ไป


ฉันคิดว่าสุดยอดเยี่ยมที่สุดคือ WM ที่กลับใจใหม่ดังนั้นตัวเลือก NONREPARENTING จึงไม่จำเป็นต้องใช้
dknight

คำตอบ:


1

คุณต้องเพิ่มคำจำกัดความพิเศษลงในซอร์สสำหรับตัวจัดการหน้าต่างในประสบการณ์ของฉัน

ฉันมีเรื่องนี้เกิดขึ้นกับฉันเมื่อสองสามปีก่อนในตัวmarcoจัดการหน้าต่างของเดสก์ท็อป MATE ; 'แก้ไข' คือการทำให้ marco แสร้งเป็นโครงการหลักของความทึบแสงเพื่อใช้ประโยชน์จากการแก้ไขในตัวของ 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)");

การแก้ไขนี้ส่งผลต่อสิ่งที่เกิดขึ้นกับสตริงตัวแทนผู้ใช้ในโลกของเว็บเบราว์เซอร์ แต่มันได้ผลสำหรับฉัน

นอกจากนี้ arch wiki ยังกล่าวถึง Awesome WM ในส่วนของการเลียนแบบตัวจัดการหน้าต่างอื่นที่แนะนำwmname:
https://wiki.archlinux.org/index.php/Java#Impersonate_another_window_manager

คุณอาจใช้ wmname จาก suckless.org เพื่อทำให้ JVM เชื่อว่าคุณกำลังเรียกใช้ตัวจัดการหน้าต่างอื่น สิ่งนี้อาจแก้ปัญหาการแสดงผลของ Java GUIs ที่เกิดขึ้นในตัวจัดการหน้าต่างเช่น Awesome หรือ Dwm หรือ Ratpoison

$ wmname LG3D

คุณต้องรีสตาร์ทแอ็พพลิเคชันที่เป็นปัญหาหลังจากออกคำสั่ง wmname

สิ่งนี้ใช้ได้เนื่องจาก JVM มีรายการจัดการโค้ดของโปรแกรมจัดการหน้าต่างที่รู้จักและไม่ได้เป็นผู้ปกครอง สำหรับประชดสูงสุดผู้ใช้บางคนต้องการเลียนแบบ LG3D ซึ่งเป็นผู้จัดการหน้าต่างที่ไม่ใช่ผู้ปกครองซึ่งเขียนโดย Sun ใน Java


-2

ดูเหมือนว่าจะเป็นที่รู้จักในเรื่องบั๊กที่เกี่ยวกับ Java บน Linux: https://netbeans.org/bugzilla/show_bug.cgi?id=227754

บน URL ข้างต้นคุณสามารถหาวิธีแก้ปัญหาสำหรับ NetBeans IDE วิธีแก้ปัญหาที่ใช้กับแอพ Java ที่ฉันใช้คือไม่เพิ่มขนาดแอพ Java โดยการกดปุ่มขยายใหญ่สุด แต่เพื่อปรับขนาดหน้าต่างด้วยตนเองตามขนาดที่คุณต้องการ กรุณาแบ่งปันข้อมูลหากช่วยให้คุณขอบคุณ!


ไม่มีปุ่มให้ขยายใน Awesome WM การใช้เลย์เอาต์แบบลอยทำให้ยิ่งแย่ลง (ทั้งหน้าต่างเป็นสีเทาจนกว่าฉันจะเปลี่ยนเลย์เอาต์) และ "เปิด" JDK บังคับให้ลงทะเบียนเพื่อดูข้อบกพร่อง
l0b0

ที่จริงแล้วดูเหมือนว่า openjdk.java.net ต้องการให้ผู้ใช้พิมพ์ลงนามสแกนและส่งอีเมลข้อตกลง Oracle Contributor ให้เป็น "ผู้มีส่วนร่วม" ซึ่งสันนิษฐานว่าเป็นสิ่งจำเป็นในการดูฐานข้อมูลบั๊กของพวกเขา เดาเนื้อหาต้องน่ากลัวมาก
l0b0

และการตั้งค่าDESKTOP_SESSIONไม่ทำงาน พยายามหลายค่าที่แนะนำ
l0b0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.