4개의 터미널을 열어야 합니다. 각 터미널은 4개의 서로 다른 원격 컴퓨터에 연결되고 해당 컴퓨터의 특정 디렉터리 위치를 엽니다. 각 터미널은 내 컴퓨터 데스크탑 화면의 다른 위치에서 열립니다. 우분투-12.04를 사용하고 있습니다.
답변1
일반적으로 선호되는 방법 중 하나 는 tmux
등을 사용하는 것입니다 . screen
이것이 옵션이 아닌 경우 - 여러 개의 터미널 창 등을 원하면 보다 정교한 방법으로 이를 수행할 수 있습니다.
이는 보기 흉해 보이고 더 잘 해결될 수 있지만 출발점 역할을 합니다. 이는 bash 기반이며 wmctrl
터미널 창 위치를 지정하는 데 사용됩니다.
1.
터미널 창을 배치합니다.
저는 터미널 창의 크기와 위치를 조정하기 위해 빠른 매시업(추악한 스크립트)을 사용합니다 wmctrl
. c
하나 또는 두 개의 선택적 매개변수를 허용하는 함수에 이를 넣었습니다 . 이는 사람들의 필요에 따라 해킹될 수 있습니다.
c()
{
local -i tbar_height=23 # To take title bar into account.
local win r="-ir"
local -i w h w2 h2 y2
# Argument 2 is Window ID, x or none.
if [[ "$2" =~ ^0x[0-9a-f]+$ ]]; then
win="$2"
elif [[ "$2" == "x" ]]; then
win="$(xprop -root \
-f _NET_ACTIVE_WINDOW \
0x "\t\$0" _NET_ACTIVE_WINDOW | \
cut -f2)"
else
win=":ACTIVE:"
r="-r"
fi
# Get monitor size (fear this easily can bug – should be done better).
read -d ', ' w h <<< \
$( awk 'NR == 1 { print $8, $10; exit }' <(xrandr) )
((w2 = w / 2)) # Monitor width / 2
((h2 = h / 2 - tbar_height)) # Monitor height / 2 - title bar
((y2 = h / 2)) # Monitor height / 2 - title bar
case "$1" in # g, x, y, w, h
"nw") wmctrl $r "$win" -e "0, 0, 0, $w2, $h2";;
"ne") wmctrl $r "$win" -e "0, $w2, 0, $w2, $h2";;
"se") wmctrl $r "$win" -e "0, $w2, $y2, $w2, $h2";;
"sw") wmctrl $r "$win" -e "0, 0, $y2, $w2, $h2";;
"n") wmctrl $r "$win" -e "0, 0, 0, $w, $h2";;
"e") wmctrl $r "$win" -e "0, $w2, 0, $w2, $h";;
"s") wmctrl $r "$win" -e "0, 0, $y2, $w, $h2";;
"w") wmctrl $r "$win" -e "0, 0, 0, $w2, $h";;
"mh") wmctrl $r "$win" -e "0, -1, -1, -1, $h";;
"mw") wmctrl $r "$win" -e "0, -1, -1, $w, -1";;
esac
}
창을 북서쪽, c nw
북동쪽 c ne
등 으로 배치합니다. 매개변수 mh
및 mw
는 각각 최대 높이와 최대 너비입니다. 창 ID는 인수 2로 전달되거나 "x"
스크립트에서 읽을 수 있습니다 . xprop
그렇지 않으면 사용됩니다 .:ACTIVE:
2.
스크립트 쓰기초기화Bash 세션은 새 터미널 창에서 열리고 위치를 요청하고 SSH(또는 기타)를 시작합니다.
호스트를 매개변수 등으로 사용하도록 여기에서 조정할 수 있습니다.
#!/bin/bash
# Source positioning script.
. "$HOME/scripts/bash/_mypos_wmctrl"
# Position window according to argument 1.
c "$1"
# Act according to argument 2.
case "$2" in
"host1") ssh -t user@host1 "cd www; bash";;
"host2") ssh -t user@host2 "cd mail; bash";;
"host3") ssh -t user@host3 "cd dev; bash";;
"host4") ssh -t user@host4;;
esac
# Add this if one want to keep terminal window open after exit from ssh
/bin/bash
3.
런처 스크립트.
wmctrl
창 ID를 가져와서 조치를 취하려면 수면이 필요합니다 . 체크 아웃 xtoolwait
하거나 비슷한 것을 원할 수도 있습니다 .
#!/bin/bash
terminal=some-terminal-emulator
$terminal -e '/path/to/script2 "nw" "host1"'
sleep 1
$terminal -e '/path/to/script2 "ne" "host2"'
sleep 1
$terminal -e '/path/to/script2 "se" "host3"'
sleep 1
$terminal -e '/path/to/script2 "sw" "host4"'
sleep 1
오랫동안 잊혀진 스크립트가 있었는데, 창 ID를 tmp 파일에 저장했습니다. 이 스크립트는 모든 터미널을 다른 데스크탑으로 이동하고 모든 터미널을 집중시키고 섞는 등의 작업을 위해 다른 스크립트에서 호출될 수 있습니다.
wmctrl
대부분의 에뮬레이터(및 필요한 경우 다른 앱)에서 작동 합니다.
현재로서는 ---^
(제공된 스크립트 예제) 꽤 보기 흉하지만 아마도 이 중 일부를 기반으로 사용할 수 있을 것입니다.