Abra una nueva pestaña en gnome-terminal usando la línea de comando

Cuando yo escribo

gnome-terminal --tab

en la terminal, espero que abra una nueva pestaña en la misma ventana de terminal. Pero abre una nueva ventana en su lugar.

Descubrí que su intención es abrir una nueva pestaña en una nueva ventana, es decir, si escribo

gnome-terminal --tab --tab

abrirá una nueva ventana con dos tabs.

Entonces, la pregunta es, ¿cómo puedo abrir una nueva pestaña en la ventana actual usando un comando en gnome-terminal ?

Estoy usando Ubuntu 9.04 x64.

 #!/bin/sh WID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}') xdotool windowfocus $WID xdotool key ctrl+shift+t wmctrl -i -a $WID 

Esto determinará automáticamente el terminal correspondiente y abrirá la pestaña en consecuencia.

También puede hacer que cada pestaña ejecute un comando establecido.

 gnome-terminal --tab -e "tail -f somefile" --tab -e "some_other_command" 

Una versión un poco más elaborada (para usar desde otra ventana):

 #!/bin/bash DELAY=3 TERM_PID=$(echo `ps -C gnome-terminal -o pid= | head -1`) # get first gnome-terminal's PID WID=$(wmctrl -lp | awk -v pid=$TERM_PID '$3==pid{print $1;exit;}') # get window id xdotool windowfocus $WID xdotool key alt+t # my key map xdotool sleep $DELAY # it may take a while to start new shell :( xdotool type --delay 1 --clearmodifiers "$@" xdotool key Return wmctrl -i -a $WID # go to that window (WID is numeric) # vim:ai # EOF # 

Encontré la manera más simple:

 gnome-terminal --tab -e 'command 1' --tab -e 'command 2' 

Uso tmux lugar de usar terminal directamente. Entonces, lo que quiero es realmente un simple y simple comando / shell para construir el env desarrollo con varias ventanas de tmux . El código de shell es el siguiente:

 #!/bin/bash tabs="adb ana repo" gen_params() { local params="" for tab in ${tabs} do params="${params} --tab -e 'tmux -u attach-session -t ${tab}'" done echo "${params}" } cmd="gnome-terminal $(gen_params)" eval $cmd 

Para reunir una serie de diferentes puntos anteriores, aquí hay un script que ejecutará todos los argumentos pasados ​​al script vim new_tab.sh :

 #!/bin/bash # # Dependencies: # sudo apt install xdotool WID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}') xdotool windowfocus $WID xdotool key ctrl+shift+t wmctrl -i -a $WID sleep 1; xdotool type --delay 1 --clearmodifiers "$@"; xdotool key Return; 

Luego chmod +x new_tab.sh ejecutable: chmod +x new_tab.sh

Ahora puede usarlo para ejecutar lo que desee en una nueva pestaña: ./new_tab.sh "watch ls -l"

No tengo instalado un gnome-terminal pero deberías poder hacer esto usando una llamada DBUS en la línea de comandos usando dbus-send .

Considera usar Roxterm en su lugar.

 roxterm --tab 

abre una pestaña en la ventana actual.

Para cualquiera que busque una solución que no use la línea de comando: ctrl + shift + t

Para abrir múltiples tabs en la misma ventana de terminal, puede ir con la siguiente solución.

Script de ejemplo:

 pwd='/Users/pallavi/Documents/containers/platform241/etisalatwallet/api-server-tomcat-7/bin' pwdlog='/Users/pallavi/Documents/containers/platform241/etisalatwallet/api-server-tomcat-7/logs' pwd1='/Users/pallavi/Documents/containers/platform241/etisalatwallet/core-server-jboss-7.2/bin' logpwd1='/Users/pallavi/Documents/containers/platform241/etisalatwallet/core-server-jboss-7.2/standalone/log' osascript -e "tell application \"Terminal\"" \ -e "tell application \"System Events\" to keystroke \"t\" using {command down}" \ -e "do script \"cd $pwd\" in front window" \ -e "do script \"./startup.sh\" in front window" \ -e "tell application \"System Events\" to keystroke \"t\" using {command down}" \ -e "do script \"cd $pwdlog\" in front window" \ -e "do script \"tail -f catalina.out \" in front window" \ -e "tell application \"System Events\" to keystroke \"t\" using {command down}" \ -e "do script \"cd $pwd1\" in front window" \ -e "do script \"./standalone.sh\" in front window" \ -e "tell application \"System Events\" to keystroke \"t\" using {command down}" \ -e "do script \"cd $logpwd1\" in front window" \ -e "do script \"tail -f core.log \" in front window" \ -e "end tell" > /dev/null