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 |