.png)
특정 애플리케이션으로 전환할 때 명령을 실행할 수 있기를 원합니다. 특히 터미널로 전환할 때 xmodmap을 변경하고 터미널로 전환할 때(예: Firefox로 이동) 다시 변경할 수 있기를 원합니다.
앱이 포그라운드로 나오는 시점을 감지한 다음 xmodmap을 실행하는 것이 가능할 것이라고 생각했습니다.
어떻게 해야 하나요(특히 Ubuntu 19.04, X11의 경우)?
나는 몇 가지 사실을 발견했습니다:
X 서버는 visibleNotify 이벤트를 생성할 수 있습니다. 어떻게 사용하는지, 내 요구 사항에 맞는지 잘 모르시나요?
"xdotool search --class Terminalerate %@ focus getwindowpid"는 포커스 변경을 알려줍니다. 그러나 getactivewindow는 분할 오류를 발생시키므로 xwininfo 또는 이와 유사한 것을 사용하여 실제로 창 ID를 얻을 수 없습니다. 비슷한 아이디어가 있나요?
답변1
다음 Perl 스크립트는 "입력 포커스"를 사용하여 창을 추적합니다.
#!/usr/bin/perl
open F,"xdotool search --class '.' behave %@ focus getwindowpid |";
while (<F>) {
($f = `xdotool getwindowfocus`) =~s/\n//;
my $hex = sprintf("0x%X", $f);
$hex = lc($hex);
$hex =~ s/0x//;
print `wmctrl -lGpx | grep '$hex'`;
};
xdotool은 창이 포커스를 잃을 때도 이벤트를 전송하므로 출력이 원하는 만큼 깨끗하지 않습니다. 그러나 이를 통해 새 창이 포커스를 얻었는지 여부를 알 수 있습니다.