Awesome WM에서 Java 응용 프로그램 마우스 포인터 오프셋을 수정하는 방법은 무엇입니까?


15

Awesome WM v3.5.2에서 3.5.5 (지금까지)로 재현하는 방법 :

  1. OpenJDK 또는 Oracle Java 7을 설치하십시오 . 이 버그는 둘 다에서 관찰되었습니다.
  2. 기본 구성으로 새로운 AWsome WM 세션을 시작하십시오 .
  3. jEdit 또는 PyCharm을 시작하십시오 . 이 버그는 둘 다에서 관찰되었습니다.
    • 마우스 포인터를 움직여서 코드, 프로젝트 파일 또는 메뉴 위로 마우스를 가져 가는지 여부에 따라 마우스 포인터가 어떻게 바뀌는 지 관찰하십시오. 이것은 정상적으로 작동합니다.
    • 파일 메뉴를 클릭하여 놓은 다음 하위 메뉴 중 하나를 입력하고 마우스 포인터 바로 아래의 항목이 항상 초점을 맞추는 방식을 관찰하십시오.
  4. 플로팅 레이아웃 이 활성화 될 때까지 (응용 프로그램이 거의 전체 화면이 될 때까지) Mod4+를 Space반복해서 누르 거나 동일한 태그에서 다른 응용 프로그램을 엽니 다.

이 시점에서 마우스가 "정상적인"응용 프로그램에서와 같이 동작 할 것으로 기대합니다. 대신 나는 다음을 관찰한다.

  • 마우스로 메뉴를 클릭하고 탐색 할 때 마우스 포인터와 초점이 맞춰진 메뉴 항목은 상태 막대의 높이와 같은 양의 픽셀로 보이는 것처럼 서로 수직으로 오프셋 됩니다.
  • 이전과 같이 기타 항목 위로 마우스를 가져 가면 마우스 포인터가 화면에서 위로 올라간 것처럼 커서 아이콘 이 설정됩니다. 예를 들어, 텍스트의 맨 위에 마우스 커서를 올리면 텍스트 커서가 표시되지 않습니다.

마치 창 좌표가 변경된 것을 감지하지 못하는 것처럼 보입니다.

같은 태그에서 다른 응용 프로그램열면 비슷하지만 훨씬 더 성가신 버그가 발생 합니다. 마우스 동작은 마치 창이 전혀 움직이지 않은 것처럼 보입니다 .

응용 프로그램이 이미 열려있는 다른 태그토글 하면 "가상 마우스 데스크탑"이 기본 화면의 왼쪽 상단 으로 이동합니다 .

이러한 버그는 Java 응용 프로그램이 다른 OpenJDK와 Oracle Java 모두에서 발견되었으므로 버그가 Awesome WM에있을 가능성이 높습니다.

관련 질문 , 기사 . 나는 시도하지 _JAVA_AWT_WM_NONREPARENTINGwmname수정,하지만 이동합니다.


최신 Awesome은 친숙한 WM이므로 NONREPARENTING 옵션은 필요하지 않습니다.
dknight

답변:


1

내 경험상 창 관리자의 소스에 특별한 정의를 추가해야합니다.

나는 2 년 전에 MATE 데스크탑의 marco창 관리자 에서 이런 일이 일어났다 . '수정'은 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)");

이 수정은 웹 브라우저의 세계에서 사용자 에이전트 문자열에 일어난 일에 영향을 미쳤지 만 나에게 도움이되었습니다.

또한, 아치 위키 심지어 권장 경우, 다른 창 관리자를 가장 섹션에서 최고 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에 친부모가 아닌 알려진 창 관리자의 하드 코드 된 목록이 포함되어 있기 때문에 작동합니다. 아이러니를 최대한 줄이기 위해 일부 사용자는 Sun에서 작성한 양부모가 아닌 창 관리자 인 LG3D를 Java로 가장하는 것을 선호합니다.


-2

이것은 Linux에서 알려진 Java 관련 버그 인 것 같습니다 : https://netbeans.org/bugzilla/show_bug.cgi?id=227754

위의 URL에서 NetBeans IDE에 대한 해결 방법을 찾을 수 있습니다. 사용하는 Java 응용 프로그램에서 작동하는 해결 방법은 최대화 버튼을 눌러 Java 응용 프로그램을 최대화하지 않고 원하는 크기로 창 크기를 수동으로 조정하는 것입니다. 도움이 될 경우 정보를 공유하십시오. 감사합니다!


Awesome WM에는 최대화 할 버튼이 없습니다. 플로팅 레이아웃을 사용하면 상황이 더 나 빠지고 (레이아웃을 변경할 때까지 전체 창이 회색으로 표시됨) "Open"JDK는 버그를 보더라도 등록을 강제합니다.
l0b0

실제로, openjdk.java.net을 사용하려면 사용자가 Oracle Contributor Agreement를 인쇄, 서명, 스캔 및 이메일로 보내 "기여자"가되어야하며 버그 데이터베이스를 보는 것이 필요합니다. 내용이 꽤 끔찍한 것 같아요.
l0b0

설정 DESKTOP_SESSION이 작동하지 않습니다. 몇 가지 제안 된 값으로 시도했습니다.
l0b0
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.