xfce4-terminal을 시작한 후 WMCTRL이 작동하지 않습니다

xfce4-terminal을 시작한 후 WMCTRL이 작동하지 않습니다

터미널에 다음 두 명령을 입력하면:

xfce4-terminal --hide-menubar --hide-borders --hide-toolbars --title=dt
wmctrl -r dt -e 0,10,10,720,720

원하는 결과를 얻었습니다(제목이 있는 창의 위치 및 크기 dt, 와는 달리 수동 gnome-terminal으로 xfce4-terminal할당된 제목은 재정의되지 않습니다).

당연히 이것이 효과가 있기를 바랍니다.

#! /bin/bash
xfce4-terminal --hide-menubar --hide-borders --hide-toolbars --title=dt && wmctrl -r dt -e 0,10,10,720,720

터미널은 자체적으로 올바른 설정과 제목을 표시하지만 wmctrl아무런 효과가 없습니다.

답변1

연결 &&연산자는 첫 번째 명령( )이 종료될 때까지 두 번째 명령이 실행되지 않도록 합니다 xfce4-terminal(단락 논리 연산자이므로 종료 상태가 성공을 나타내는 경우에만).

&&스크립트의 별도 줄에 명령을 변경하거나 ; 입력하면 예상한 동작을 얻을 수 있습니다.wmctrl

답변2

명령이 종료된 후 직접 wmctrl을 실행하십시오 xfce4-terminal. 그러나 이미 열려 있는 Xfce 터미널 인스턴스가 있으면 xfce4-terminal실제 터미널 화면을 설정하는 과정이 진행되는 동안 자체적으로 배경에 놓였다가 즉시 명령 프롬프트로 돌아갑니다. 따라서 wmctrl실행 시 제목이 포함된 창이 rd아직 존재하지 않을 수 있습니다.

(예제와 같이) 명령을 입력할 필요가 없으면 너무 빨리 시작됩니다 &&. wmctrl첫 번째 예에서는 입력하거나 기록에서 선택하는 데 지연이 발생하면 터미널 창에 올바른 제목이 표시됩니다.

첫 번째 예에서 두 개의 명령줄 입력을 잘라내어 붙여넣는 경우에도 이 문제가 발생할 수 있습니다.

sleep를 호출하기 전에 명령을 입력 해야 합니다 wmctrl. 기간을 실험해 볼 수 있습니다. 시작된 셸이 시작 파일을 처리해야 하기 전에 터미널 제목이 설정되므로 1초이면 충분합니다. (검색해야 하는 URL을 사용하여 Firefox/Chrom을 실행하는 경우 예상 제목을 기다리는 데 몇 초가 걸릴 수 있으며 네트워크 오류가 발생할 때 표시되지 않을 수 있습니다.)

균일한 동작을 얻으려면 xfce4-terminal처음 실행하는 인스턴스라도 차단되지 않도록 백그라운드에서 실행하세요.

xfce4-terminal --hide-menubar --hide-borders --hide-toolbars --title=dt &
sleep 1
wmctrl -r dt -e 0,10,10,720,720

답변3

안톤의 대답무슨 일이 일어나고 있는지 설명했습니다. wmctrl하지만 나중에 창 크기를 조정하거나 이동하는 것은 문제가 됩니다. 타이머에 의존해야 하므로 창이 짧은 시간 동안 잘못된 위치에 있다가 이동하게 됩니다(또는 기계가 정말 느린 경우; 창이 wmctrl너무 일찍 실행되기 때문에 전혀 움직이지 않습니다 ). 또한 동일한 제목을 가진 다른 창이 있을 수 있습니다(임의의 문자열이나 타임스탬프를 사용하는 등 고유한 제목을 생성하지 않는 한).

다행히 xfce4-terminal초기 위치와 크기를 설정하는 옵션이 있습니다. 그것은 표준을 따른다X11 기하학 구문. 를 호출하는 대신 이것을 사용하십시오 wmctrl. 크기는 픽셀이 아닌 문자 단위로 표시됩니다.

xfce4-terminal --geometry 80x40+10+10 --hide-menubar --hide-borders --hide-toolbars --title=dt

관련 정보