특정 작업 공간에서 각각 일련의 프로그램을 열도록 스크립트하려면 어떻게해야합니까?


35

나는 잠시 둘러 보았고 다음 문제에 대한 답을 찾을 수 없었습니다.

Ubuntu 12.04에서 Unity를 사용하여 6 개의 데스크톱을 설정했습니다. 매일 아침, 나는 같은 5-6 개의 프로그램을 여는 과정을 겪습니다. 특정 작업 공간에서 각각 엽니 다. 이것을 자동화하고 싶습니다. 이것을 스크립팅하거나 구성하는 방법이 있습니까?

추가 질문 : 문제 를 더 복잡하게하기 위해 트윈 뷰 모드에서 두 개의 화면을 실행하고 있습니다. 실제로 각 프로그램을 특정 화면, 바람직하게는 전체 화면에서 시작해야합니다.


1
도움이 될 수 있습니다. 그것은 wmctrl를 가리키는,하지만 난 그것을 사용하지 않은 : movingtofreedom.org/2010/08/10/...
RobotHumans

도움이 될 수 있습니다. askubuntu.com/questions/87002/…
Suhaib

1
매우 간단한 관점에서이 문제가 발생하면 떠날 때 컴퓨터를 일시 중단 모드로 유지할 수없는 이유가 있습니까? 더 영구적 인 해결책을 찾는 동안 빠른 해결책이 될 것입니다 ...
Adeyfk

데스크탑이라고 할 때 작업 공간을 의미합니까?
p0llard

KDE 활동이이를 수행 할 수 있습니다.
기계 달팽이

답변:


20

compizconfig 사용에 대한 jdp407의 아이디어는 특정 응용 프로그램을 특정 작업 공간과 연결하여 해당 응용 프로그램을 열 때마다 해당 작업 공간에 배치되도록합니다. 이것이 바람직하지 않은 경우 다음을 수행 할 수 있습니다.

1) 설치 wmctrl

sudo apt-get install wmctrl

2) 다음과 같은 내용으로 파일을 생성하고 실행 가능하게 만듭니다.

#!/bin/bash
wmctrl -s 0 #Switches to workspace 0 [workspaces are numbered from 0]
gnome-terminal & #Say you want a terminal in the 0th workspace
nautilus & #Maybe a file browser too
sleep 2 #Windows take some time to open. If you switch immediately, they'll open up in wrong workspaces. May have to change the value 2.
wmctrl -s 1 #Switches to workspace 1
firefox & #You get the idea. Continue for all workspaces
sleep 2
wmctrl -s 0 #You will be left at this workspace when the script finishes executing

3) .xsessionrc각 로그인시 프로세스를 자동화하려면 홈 디렉토리 (이 파일을 작성해야 할 경우 )에서이 스크립트를 호출하십시오 . 또는 필요할 때 터미널에서 호출 할 수도 있습니다. 편집 : .xsessionrc가 아니라 "시작 응용 프로그램"에 넣습니다. .xsessionrc는 데스크탑 환경의로드가 완료되기 전에도 실행됩니다.


jdp407에서 제안한대로 사용자 정의 xsession을 작성하여 두 개의 세션 중에서 선택할 수 있습니다. 하나는 이러한 응용 프로그램을 자동으로 열고 다른 하나는 그렇지 않습니다. 그러나 그것은 나에게 불필요 해 보인다.


작업 공간으로 전환하고 적절한 응용 프로그램을 연 다음 다음으로 전환하는 데 시간이 오래 걸리는 경우 모든 응용 프로그램을 한 번에 연 다음를 사용하여 창을 이동할 수 있습니다 wmctrl. 예를 들어

wmctrl -r 'Firefox' -t 1

Firefox의 제목이있는 창을 작업 공간 1 wmctrl로 이동합니다. 둘 이상의 창이 있으면 관리하는 창 목록의 첫 번째 항목 이 이동합니다. 이를 사용하기 위해 응용 프로그램에서 생성 할 창의 제목을 알아야합니다. 이것이 내가 이것을 기본 옵션으로 제안하지 않은 이유입니다. 가장 일반적으로 사용되는 앱의 경우와 같이 제목이 모호하지 않으면 이것이 가장 좋은 방법입니다.


전체 화면으로 응용 프로그램 열기 :

gnome-terminal과 같은 일부 응용 프로그램에는 최대화 상태 또는 전체 화면 모드로 창을 여는 명령 줄 인수가 있습니다. 그러한 옵션이 있으면 사용하십시오. 그렇지 않으면 wmctrl다음과 같이 사용하십시오

wmctrl -r 'prasanth@nb37' -b add,maximized_vert,maximized_horz

이것은 (이미 기존의) 터미널 창을 최대화합니다.

wmctrl -r 'prasanth@nb37' -b add,fullscreen

창을 전체 화면 모드로 보냅니다.


의 맨 wmctrl페이지를 살펴보십시오 . 더 많은 기능을 사용할 수 있습니다.


1
분명히 wmctrl을 사용하여 작업 공간을 선택하면 Post-Lynx 배포에서 작동하지 않습니다. '-s'옵션은 '0'으로 만 설정하거나 오류를 발생 시키거나 전혀 수행하지 않습니다. 출처 : movingtofreedom.org/2010/08/10/...
p0llard

나는 unity2d와 함께 12.04를 사용하고 (시각적 효과는 없다) 그것은 나를 위해 일한다. 시각 효과가 활성화 된 경우 작동하지 않는 것 같습니다.
S Prasanth

wmctrl여기서 잘 작동합니다 (xcompgr를 통해 합성하여 LXDE 및 XFCE)
Glutanimate

시나몬과 함께 민트 14에서 나를 위해 일합니다. 감사합니다!
k102

Ubuntu 14.04에서는 wmctrl -o X,Y특정 뷰포트로 이동하는 데 사용하십시오 . 여러 모니터가있는 경우을 사용하여 응용 프로그램을 다른 모니터로 옮길 수 있습니다 wmctrl -r "App name" -e G,X,Y,W,H. 통일 된 시각 효과와 잘 작동합니다.
Nate

10

여기에는 두 가지 '문제'가 있습니다. 첫 번째는 로그인 할 때 특정 프로그램 세트를 여는 것입니다. 두 번째는 특정 작업 공간에서 열어 두는 것입니다. 나는 둘 다 별도로 처리 할 것이다.

  1. 커스텀 X 세션 만들기

    이것은 매우 쉽습니다. X 세션 스크립트를 만든 다음 LightDM에 사용하도록 지시하면됩니다. 터미널에서 원하는 프로그램을 시작하려면 명령을 알아야합니다.

    1. 터미널을 엽니 다.
    2. 을 입력 touch ~/.customxsession하고 Enter 키를 누릅니다.
    3. 을 입력 gedit ~/.customxsession하고 Enter 키를 누릅니다.
    4. 이제 빈 파일로 텍스트 편집기를 열 수 있습니다.
    5. 이 파일에서 X 세션을 정의해야합니다. 답변 맨 아래에 샘플 '공백 채우기'파일을 만들었습니다. 나는 생각 우분투는 그것의 창 관리자로 그놈 세션을 사용하지만, 나는 가능성이 틀렸다. 현재 테스트 할 수 없으므로 (노트북 고장) 예상대로 작동하지 않으면 (예 : Unity 대신 Gnome을로드) 약간의 연구가 필요할 수 있습니다.
    6. 파일을 저장하고 Gedit를 닫습니다.
    7. 을 입력 touch /usr/share/xsessions/multi.desktop하고 Enter 키를 누릅니다.
    8. 을 입력 gedit /usr/share/xsessions/multi.desktop하고 Enter 키를 누릅니다.
    9. 이제 빈 파일로 텍스트 편집기를 열 수 있습니다.
    10. 답변 하단의 코드 ( '/usr/share/xsessions/multi.desktop :'레이블이 붙은)를 Gedit에 복사하여 붙여 넣습니다.
    11. 파일을 저장하고 Gedit를 닫습니다.
    12. 재부팅하십시오. 로그인 화면이 열리면 사용 가능한 세션을 보면 (사용자 이름 옆에있는 작은 Ubuntu 로고를 클릭하면) 멀티 세션이라는 이름이 표시됩니다. 로그인하면 X 세션 스크립트에 넣은 프로그램이 자동으로 열립니다.
  2. 작업 공간에 프로그램 할당

    이것은 매우 쉽지만 기본적으로 우분투에 설치되지 않은 추가 소프트웨어가 필요합니다.

    1. compizconfig-settings-manager를 설치하십시오 (Software Center를 사용하거나 sudo apt-get install compizconfig-settings-manager터미널에서 간단히 실행할 수 있음).
    2. 대시에서 CompizConfig 설정을 엽니 다.
    3. '창 위치'플러그인을 엽니 다 ( '창 관리'섹션에 있음).
    4. '고정 뷰포트가있는 Windows'섹션에서 '새로 만들기'를 클릭하십시오.
    5. '플러스'아이콘을 클릭하십시오.
    6. '유형'을 '창 제목'으로 설정하고 '값'상자에 프로그램 중 하나의 창 제목을 입력하십시오. '관계'가 'AND'로 설정되어 있는지 확인하고 '추가'를 클릭하십시오.
    7. 'X'및 'Y'상자에 숫자를 입력하여 작업 공간을 설정하십시오. 'X'에 대해 4 개의 작업 공간이있는 경우 '1'이 왼쪽이고 '2'가 오른쪽이고 'Y'의 경우 '1'이 맨 위이고 '2'가 맨 아래입니다. 작업 공간이 6 개인 것처럼 설정 방법에 따라 'Y'를 '3'으로 설정하면 맨 아래 행이 선택되고 'X'를 '3'으로 설정하면 3 번째 열이 선택됩니다.
    8. 작업 공간을 할당 할 나머지 프로그램에 대해 4-7 단계를 반복하십시오.
    9. CompizConfig 설정을 닫습니다.
  3. 로그인

    로그인하면 Ubuntu에 사용자 정의 X 세션을 사용하도록 지시해야합니다.

    1. 재부팅하십시오.
    2. 로그인 화면이 열리면 사용 가능한 세션을 보면 (사용자 이름 옆에있는 작은 Ubuntu 로고를 클릭하면) 멀티 세션이라는 이름이 표시됩니다. 로그인하면 X 세션 스크립트에 넣은 프로그램이 자동으로 열리고 선택한 작업 공간에 할당됩니다.
  4. 문제

    당신이 작은 실수를하거나이 답을 쓸 때 내가 실수를했다면, 이것에 대해 꽤 많은 잘못을했을 수도 있습니다. 문제가 발생하면 편지의 지시 사항을 따르고 그렇지 않은 경우 정정하십시오. 여전히 문제가 있으면 의견을 남겨주십시오.

~ / .customxsession :

#!/usr/bin/env bash
program-command-1 &
program-command-2 &
program-command-3 &
program-command-4 &
program-command-5 &
program-command-6 &
exec gnome-session

/usr/share/xsessions/multi.desktop :

[Desktop Entry]
Name=Multi-Session
Exec=/home/your-username/.customxsession

1

StarupApplications 프로그램에서 필요한 응용 프로그램을 추가 한 다음이 스크립트도 추가하십시오. 이것은 내 스크립트입니다 : ManageWorkSpaces.sh

echo "Jeril"
wmctrl -r NetBeans IDE 7.1.1 -t 0
wmctrl -r /bin/bash -t 1
wmctrl -r Google Chrome -t 2
wmctrl -r jerilkuruvila - Skype™ -t 3

// 터미널에 초점

wmctrl -a NetBeans IDE 7.1.1   -t 0 

그러나 나는 2 개의 디스플레이를 다루는 것에 대해 전혀 모른다.


안녕 제릴! Ask Ubuntu에 오신 것을 환영합니다! 귀하의 솔루션이 저에게 효과적이지 않습니다. 내가 실행하면 wmctrl -d하나의 "데스크톱"만 있습니다. 우분투 12.10의 Unity에서 이것을 테스트 했습니까?
Flimm

안녕하세요 Flimm, wmctrl -r을 사용하고 있습니다. 작업 공간이 4 개 있습니다. 내 우분투 버전은 12.04입니다
jkuruvila
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.