우분투 / 그놈 : 특정 작업 공간에서 응용 프로그램 열기


10

특정 작업 공간에서 응용 프로그램을 열도록하려면 어떻게합니까?


더 많은 정보:

작업 공간 2에 C ++ IDE, 작업 공간 3에 Java IDE, 작업 공간 4에 전자 메일, 브라우저 및 기타가 있습니다. 또한 로그인 할 때 실행되는 쉘 스크립트를 사용합니다.

#!/bin/bash
gnome-terminal & # WS 1
netbeans-6-9-1 & # WS2
qtcreator-2-0-1 & # WS 3
firefox & # WS 4
thunderbird & # WS 4

물론 현재는 모두 현재 작업 공간에서 열립니다 ... 각 명령을 시작할 작업 공간을 지정할 수있는 방법이 있습니까?

미리 감사드립니다!


1
이러한 프로그램을 항상 실행하는 경우 가장 쉽고 간단한 방법은 원하는 위치에 모두로드하고 '로그 아웃 할 때 응용 프로그램 기억'
Unfundednut

1
@MrStatic : 제안 해 주셔서 감사하지만 다른 이유로 쉘 스크립트에 있어야합니다. 그리고 '로그 아웃 할 때 응용 프로그램을 기억할 수 없습니다'
bguiz

답변:


4

devilspie 를 사용 하여 어느 창에서 어떤 작업 공간으로 이동하는지에 대한 규칙을 설정할 수 있습니다 .

정확히 그 예를 보려면 문서 를 참조하십시오 .

그러나 MrStatic도 좋은 제안을했습니다. 먼저 시도해보십시오. 쉘 스크립트가 필요하지 않을 수도 있습니다.

쉘 스크립트에서 사용할 수있는 명령이 필요하면 wmctrl을 살펴보십시오 .


제안에 감사드립니다. 확인해보십시오. CLI 전용 솔루션은 여전히 ​​우수한 솔루션이라고 생각합니다. 그래도 아이디어가 있다면 알려주세요!
bguiz

4
wmctrl을 사용해보십시오. 위의 답변에 링크를 추가했습니다.
Mikel

7

나는 wmctrl도구를 사용해 보았고 나에게 가장 쉬운 해결책은 다음 명령으로 창을 움직이는 것임을 발견했다.

wmctrl -r <WindowName> -t <WorkspaceNumber>

작업 공간 번호는 0부터 시작합니다. 마지막으로 다음 명령을 사용하여 원하는 작업 공간으로 이동할 수 있습니다.

wmctrl -s <WorkspaceNumber>

1

스크립트 에서이 기본 구조를 사용하여 특정 작업 공간에서 특정 응용 프로그램 세트를 엽니 다.이 예제는 터미널을 열고 작업 공간 1로 옮깁니다.

cd
gnome-terminal
until wmctrl -l | grep -q "me@mypc ~"; 
do
    sleep 0.1
done
wmctrl -r "me@mypc ~" -t 1

이 코드에 대한 약간의 설명을 환영합니다. 왜 cd로 시작합니까? 까지 무엇을 기대하고 있습니까? "me @ myspc ~"는 창 이름입니까?
wranvaud 2015 년

0

wmctrl 설치

sudo apt install wmctrl

그리고 스크립트를 작성하십시오 (이 예에서는 두 번째 작업 공간에있는 Thunderbird -t 1) :

#!/bin/sh
(thunderbird &)  & sleep 5 && 
sh -c "wmctrl -i -r `wmctrl -l | grep Thunderbird` -t 1"

wmctrl에서 애플리케이션 이름을 알려면 터미널을 눌러 볼 수 있습니다.

wmctrl -l

스크립트에서 올바른 이름으로 바꾸십시오.

대문자로주의를 기울이십시오 ( "썬더 버드"가 아닌 "썬더 버드")!

3d 작업 공간 ( -t 2) 에 firefox가있는 다른 예 :

#!/bin/sh
(firefox &)  & sleep 5 && 
sh -c "wmctrl -i -r `wmctrl -l | grep Firefox` -t 2"

시나몬과 함께 Debain 10 작업. 그러나 모두를 위해 작동해야합니다


-1

나는 그것이 불가능하다는 것을 확신합니다. 그놈과 같은 창 환경이 소프트웨어가이를 처리 할 것으로 기대하고 소프트웨어 제조업체가 창 환경이이를 처리 할 것으로 기대하기 때문에 이음새가없는 이유가 있습니다.

Devilspie는 좋은 생각이지만 패턴 일치를 수행합니다 (예 : name == 'google-chrome'인 경우). 두 개의 브라우저를 열면 어떻게됩니까? 둘 다 같은 작업 공간으로 이동합니까? 6x3 = 18 작업 공간이 있으며 각 작업 공간에는 특정 크롬 인스턴스가 있습니다. 이 프로그램의 이름을 바꿀 수 있으면 (예 : 'google-chrome1', 'google-chrome2'...) 도움이되지만 그렇게하는 방법을 찾을 수 없습니다. wmctrl을 사용해야합니다.

wmctrl은 창 제목을 사용하는 것 외에도 약간 더 나은 b / c입니다. 창 ID를 사용하거나 현재 강조 표시된 창을 사용할 수도 있습니다. 창 ID는 즉시 생성되지 않는 B / C를 얻는 데 어려움이 있습니다. 아래 참조

gedit 1.txt
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1

그러나 AFTER gedit가 종료 될 때까지 명령 행으로 제어가 리턴되지 않습니다. 우리가 해결하기 위해해야 할 일은 이것을 넣고 &기호를

gedit 1.txt &
#get window ID by looking at wmctrl -l store in windowID
wmctrl -i -r $windowID -e 0,3660,0,-1,-1

그러나 이제 창 관리자가 창을 시작하고 창 ID를 찾을 수있는 방법이 없기 전에 99.999 %의 시간 동안 제어가 명령 행으로 리턴됩니다. 새로운 윈도우가 생성되었는지, 그리고 그것이 우리가 찾고있는 윈도우인지 추측하기 위해 테스트하기 위해 매우 복잡한 루핑 기술을 설정해야합니다.

플래그를 통해 활성 창을 확인 :ACTIVE:하면 동일한 문제가 발생하지만 프로그램 실행이 완료 될 때까지 기다리지 않습니다.

wmctrl나를 매우 이상한 프로그램으로 생각합니다. 마우스가 없거나 작업 공간을 통해 프로그램을 물리적으로 끌 수없는 사람들을 위해 설계된 것처럼 보입니다.


OP는 브라우저가 작업 공간 4를 진행한다고 말했다. 세션 시작 스크립트가 실행 된 후 다른 작업 공간에서 브라우저를 열 수 있어야하는 경우 해당 스크립트의 마지막 명령이 절전 모드 일 수 있습니다. pkill devilspie.
Mikel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.