본문으로 바로가기
728x90
반응형

파이썬 프로그램 작성 시 우분투에서 여러개의 터미널을 실행하고 지정한 터미널에 명령을 실행하고자 할 때 아래의 과정으로 관련 프로그램을 설치하고 환경을 구성하면 가능합니다.

 

1. 먼저 아래의 명령어를 실행하여 wmctrl과 xdotool을 설치합니다.

 

sudo apt-get install wmctrl xdotool

 

2. /home 위치에 bin 폴더를 생성합니다.

 

mkdir bin
cd bin

 

3. 아래의 소스를 편집기에 복사하여 "target_term"으로 저장합니다. 저장위치는 ~/bin 입니다. 만약 bin 폴더가 없으면 새롭게 생성(~$ mkdir bin)하시기 바랍니다.

 

#!/usr/bin/env python3
import subprocess
import os
import sys
import time
#--- set your terminal below
application = "gnome-terminal"
#---

option = sys.argv[1]
data = os.environ["HOME"]+"/.term_list"

def current_windows():
    w_list = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8")
    w_lines = [l for l in w_list.splitlines()]
    try:
        pid = subprocess.check_output(["pgrep", application]).decode("utf-8").strip()
        return [l for l in w_lines if str(pid) in l]
    except subprocess.CalledProcessError:
        return []

def arr_windows(n):
    w_count1 = current_windows()
    for requested in range(n):
        subprocess.Popen([application])
    called = []
    while len(called) < n:
        time.sleep(1)
        w_count2 = current_windows()
        add = [w for w in w_count2 if not w in w_count1]
        [called.append(w.split()[0]) for w in add if not w in called]
        w_count1 = w_count2

    return called

def run_intterm(w, command):
    subprocess.call(["xdotool", "windowfocus", "--sync", w])
    subprocess.call(["xdotool", "type", command+"\n"]) 

if option == "-set":
    open(data, "w").write("")
    n = int(sys.argv[2])
    new = arr_windows(n)
    for w in new:
        open(data, "a").write(w+"\n")
elif option == "-run":
    t_term = open(data).read().splitlines()[int(sys.argv[2])-1]
    command = (" ").join(sys.argv[3:])
    run_intterm(t_term, command)

 

아래의 그림과 같이 gedit를 실행하여 해당 내용을 복사하고 붙여널기를 합니다.

 

3. Home 위치에서 아랭의 명령을 사용하여 bin 폴더를 생성합니다.

 

mkdir bin
ls

위의 그림에서 좌측 하단에 bin 폴더가 생성되었음을 확인할 수 있습니다.

 

4. bin 폴더에 target_term 이름으로 파일을 저장합니다.

 

해당 폴더를 열어보면 파일이 저장됨을 확인할 수 있습니다.

5. 아래의 명령을 실행하여 파일의 속성을 실행이 가능하도록 수정합니다.

 

sudo chmod 777 target_term
ls -al

 

6. 위의 파일 복사 환경설정을 적용하기 위해 아래의 명령을 실행합니다.

 

source ~/.profile

 

7. 사용법은 다음과 같습니다. 열고 싶은 터미널 개수는 아래와 같이 설정합니다.

 

target_term -set 3

위의 그림처럼 3개의 터미널이 실행되었습니다.

 

8. 첫번째 터미널에 "ls -al" 명령을 실행해 봅니다.

 

target_term -run 1 ls -al

 

 

9. 2번째 터미널에 아래의 명령을 실행해 봅니다.

 

target_term -run 2 echo "Monkey eats banana since it ran out of peanuts"

 

 

728x90
반응형

'소프트웨어 > Linux' 카테고리의 다른 글

Ubuntu 18.04 : 한글 입력 설정 #1  (0) 2021.12.29
Ubuntu 18.04 : 게스트 확장 CD 설치  (0) 2021.12.28
MabaXTerm 설치  (0) 2021.01.13
Visual Studio Code 설치 - Ubuntu 18.04  (0) 2020.11.23
Ubuntu 18.04에서 Python 3.7 설치  (0) 2020.11.20