it-swarm.com.de

Öffnen Sie eine neue Registerkarte in gnome-terminal über die Befehlszeile

Wenn ich schreibe 

gnome-terminal --tab

ich erwarte, dass am Terminal eine neue Registerkarte im selben Terminalfenster geöffnet wird. Es öffnet sich jedoch ein neues Fenster.

Ich habe herausgefunden, dass es die Absicht ist, eine neue Registerkarte in einem neuen Fenster zu öffnen, d. H. Wenn ich schreibe

gnome-terminal --tab --tab

es öffnet sich ein neues Fenster mit zwei Registerkarten.

Die Frage ist also, wie kann ich mit einem Befehl in gnome-terminal eine neue Registerkarte im Fenster current öffnen?

Ich verwende Ubuntu 9.04 x64.

112
#!/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

Dadurch wird automatisch das entsprechende Terminal ermittelt und die Registerkarte entsprechend geöffnet.

62
utkarsh dubey

Sie können auch auf jeder Registerkarte einen Set-Befehl ausführen.

gnome-terminal --tab -e "tail -f somefile" --tab -e "some_other_command"
66
Chase Seibert

Ich habe den einfachsten Weg gefunden:

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

Ich verwende tmux anstelle des Terminals direkt. Was ich also will, ist wirklich eine einzelne und einfache Befehls-/Shell-Datei, um die Entwicklung env mit mehreren tmux-Fenstern zu erstellen. Der Shell-Code lautet wie folgt:

#!/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
5
jaogoy

Eine etwas aufwendigere Version (zur Verwendung in einem anderen Fenster):

#!/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 "[email protected]"
xdotool key Return

wmctrl -i -a $WID # go to that window (WID is numeric)

# vim:ai
# EOF #
3
jno

Um eine Reihe verschiedener Punkte zusammenzufassen, hier ein Skript, das alle an das Skript vim new_tab.sh übergebenen Argumente ausführt:

#!/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 "[email protected]"; xdotool key Return;

Machen Sie es als nächstes ausführbar: chmod +x new_tab.sh

Jetzt können Sie es verwenden, um in einem neuen Tab alles auszuführen, was Sie möchten: ./new_tab.sh "watch ls -l"

1
NeoGeek

Für alle, die eine Lösung suchen, die die Befehlszeile nicht verwendet: Strg + Umschalttaste + t

0
Jemini

Nur für den Fall, dass Sie öffnen möchten 

  • ein neues Fenster
  • mit zwei Registerkarten
  • und dort Befehl ausführen 
  • und dass sie offen bleiben ...

bitte schön:

gnome-terminal --geometry=73x16+0+0 --window \
  --working-directory=/depot --title='A' --command="bash -c ls;bash" \
  --tab --working-directory=/depot/kn --title='B' --command="bash -c ls;bash"

(Gleiches gilt für mate-terminal u.

0
Frank Nocke

Ich habe kein gnome-terminal installiert, aber Sie sollten dazu in der Lage sein, einen DBUS-Aufruf in der Befehlszeile mit dbus-send zu verwenden.

0
Mike McQuaid

Verwenden Sie stattdessen Roxterm. 

roxterm --tab

Öffnet eine Registerkarte im aktuellen Fenster.

0
user25643