Suckless의 DWM 제비 패치 + Tmux

Suckless의 DWM 제비 패치 + Tmux

Tmux를 실행하는 터미널을 삼킬 수 있습니까? Tmux를 비활성화하지 않으면 패치가 작동하지 않는 것 같습니다.

나는 아무런 문제 없이 st에서 "Screen"을 사용해 보았습니다. :/.

감사해요!

https://dwm.suckless.org/patches/swallow/ (dwm-swallow-20200522-7accbcf.diff 사용)

편집하다:

알아낼 수는 없었지만 뭔가 멋진 것을 발견했습니다.

DVTM(터미널에서 DWM을 실행하는 것과 유사)

https://github.com/martanne/dvtm

답변1

저도 당신과 같은 문제를 겪고 있었기 때문에 Swallow Patch가 어떻게 작동하는지, 왜 tmux 창을 삼키지 않는지 자세히 알아봤습니다.

기본적으로 dwm의 삼키기 패치는 tmux를 실행하는 터미널 에뮬레이터에서 시작된 응용 프로그램을 처리할 수 없습니다. 왜냐하면 패치는 가장 최근에 시작된 GUI 응용 프로그램의 상위 프로세스를 확인하여 어느 창을 삼켜야 하는지 결정하기 때문입니다. tmux가 PID 1(init 프로세스)의 직계 자식인 서버 프로세스에서 애플리케이션을 포크하기 때문에 tmux를 실행할 때 실패합니다. 프로세스 트리에는 GUI 응용 프로그램에서 터미널 에뮬레이터로의 직접적인 경로가 없습니다. 즉, dwm은 새 응용 프로그램이 어떤 터미널을 삼켜야 할지 결정할 수 없으므로 응용 프로그램을 정상적으로 생성합니다.

screen은 터미널 에뮬레이터의 하위 프로세스이고 따라서 응용 프로그램이 여기에서 실행되기 때문에 삼키는 것이 여전히 screen에서 작동합니다. 이 경우 GUI 애플리케이션에서 터미널 에뮬레이터까지의 프로세스 트리에 직접 경로가 있으므로 dwm은 어떤 터미널을 삼킬지 알아낼 수 있습니다.

프로세스 트리 다이어그램을 사용하여 어떻게 작동하는지 더 자세히 살펴보았습니다.내 블로그에당신이 관심이 있다면.

라는 프로그램 형태의 해결 방법이 있습니다.삼키다. 제비 패치처럼 실제 창 삼키기를 제공하지는 않지만 tmux에서는 작동합니다.

관련 정보