Lubuntu 18.04에는 bash 쉘에서 실행되는 많은 백그라운드 GUI 작업이 있습니다. 그중에는 백그라운드에서 실행되는 evince 프로세스가 있습니다.
$ jobs | grep evince
[29] Running evince CurrentDBs.pdf &
나는 그 창을 데스크탑 앞쪽(현재 bash 쉘을 실행하는 lxterminal 창 앞쪽)으로 옮기고 싶었지만 fg 29
그렇게 되지 않았습니다.
왜 그런 겁니까? 쉘의 작업 제어가 데스크톱 환경(또는 X Window System)에서 어느 창이 앞에 있는지, 아닌지와는 아무런 관련이 없기 때문입니까?
백그라운드 GUI 작업을 데스크탑 프런트엔드로 이동하는 방법은 무엇입니까? 프로세스가 Wine에서 Windows 프로그램을 실행하는 경우에도 xdotool을 사용하여 주어진 프로세스 ID의 창을 앞으로 가져올 수 있습니까?
감사해요.
답변1
예, xdotool은 작동합니다
모든 증거 창을 앞으로 가져오는 방법은 다음과 같습니다.
xdotool search --onlyvisible --class evince windowactivate %@
Wine 프로그램과 함께 사용할 수 없는 이유는 없습니다. 물론, 그들을 부르려면 올바른 이름을 찾아야 합니다. 이 명령이 xprop
도움이 될 수 있습니다.
답변2
evince
서브셸의 백그라운드에서 실행됩니다(실행 프로세스의 뒤에 오는 앰퍼샌드에 유의하세요) . 하지만 GUI 응용 프로그램이므로 창 닫기 버튼을 누르면 전체 하위 쉘 프로세스가 종료되므로 해당 창을 볼 수 있어야 합니다. 하위 쉘 백그라운드 프로세스가 존재하는 동안 창이 표시되지 않으면 evince
아마도 버그가 있다는 의미일 수 있습니다. 두 가지 가능성이 있습니다:
- 숨겨진 창을 어딘가에서 찾아보십시오(두 번째 데스크탑 또는
Alt+Tab
또는 을 눌러 창 전환Alt+Shift+Tab
). - 프로세스를 수동으로 종료
kill
하거나 서브쉘을 호출하는 쉘을 닫아 서브쉘로evince
보냅니다 .SIGHUP