Kann ich den Namen der Registerkarte guake ändern, um den aktuellen Befehl anzuzeigen?

13

Ich benutze Guake sehr stark und ssh in mehr als 3 Computern zu jedem Zeitpunkt. Ich habe auch Dämonen auf einigen Registerkarten (Terminals) ausgeführt. Was ich wissen möchte, ist es möglich, den Namen des aktuellen Befehls als den Namen des Terminals zu haben? Wenn Sie mit der rechten Maustaste auf eine Registerkarte klicken und ihren Namen ändern, geschieht Folgendes: (Sehen Sie sich die Registerkarte nach Terminal 5 an.)

Sehen Sie sich die Registerkarte nach Terminal 5 an

Vielen Dank.

theTuxRacer
quelle
Siehe meine Antwort auf eine verwandte Frage, um eine abgekürzte Darstellung des aktuellen Verzeichnisses als Registerkartentitel anzuzeigen.
krlmlr
Was meinst du mit "aktueller Befehl"? Gibt es immer einen Befehl, der in jedem Terminal ausgeführt wird? Was soll der Titel sein, wenn nichts läuft?
rubo77

Antworten:

4

Dies ist ein Fehler von guake (0.4.1). Ich sehe und löse dieses Problem nur über diesen Fehlerbericht, obwohl der Autor sagt, dass dies nicht die beste Methode ist: https://github.com/Guake/guake/issues/205

Ich habe herausgefunden, dass das Verschieben des Dialogzerstörungscodes (guake.py Zeile 983) nach unten, nachdem der Code, der die Tab-Bezeichnung festlegt (Zeile 986), das Problem tatsächlich löst. So sieht der Code aus, der für mich funktioniert:

    response = dialog.run()
    # dialog.destroy() 

    if response == gtk.RESPONSE_ACCEPT:
        self.selected_tab.set_label(entry.get_text())

    dialog.destroy()

Vielleicht gibt es ein Problem mit Gtk und Dialogen, aber ich habe keine Codeänderungen gefunden, die mit Gtk in der Version 0.4.1 Diff verbunden sind.

EDIT : guake 0.4.2 können die Registerkarte Namen richtig ändern

hutushen222
quelle
1
Dies beantwortet nicht die Frage
Phil294
3

Ich bin nicht sicher, ob dies funktioniert, es funktioniert für die meisten Terminal-Emulatoren. Sie können Ihren Skripten ein Echo hinzufügen, um den Titel des Terminals zu ändern:

echo -ne "\033]0;your_title_here\007"
João Pinto
quelle
Das hat nicht funktioniert, als ich es im Terminal eingetippt habe.
theTuxRacer
1
Das liegt daran, dass die Eingabeaufforderung Ihrer Shell normalerweise das aktuelle Arbeitsverzeichnis angibt. Überprüfen Sie die PS1-Variable.
Ak2
Auf meinem Ubuntu 15.10 funktioniert es auch nicht. Ich habe nachgesehen, echo $PS1welche Shows so ähnlich sind. \[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$Was hilft mir dabei, das zu lösen?
Rubo77
3

Ein bisschen hacken, aber das wird das aktuelle Terminal in das umbenennen, wofür Sie sich entschieden haben.

function ssh() {
    guake -r "$@";
    /usr/bin/ssh $@
}

Auch wenn Sie Ihren PROMPT_COMMAND aktualisieren, können Sie eine Funktion haben, um den Terminalnamen jedes Mal zu aktualisieren. Dies funktioniert zwar nicht für Ihr SSH-Problem, da der Name erst geändert wird, nachdem der Befehl ausgeführt wurde.

z.B

export PROMPT_COMMAND=renameTerminal

function renameTerminal() {
    guake -r "$SOMENAME";
}
user257818
quelle
2

Wenn ich den Tab-Namen in Guake ändern möchte, klicke ich einfach mit der rechten Maustaste auf den Tab-Namen und benenne ihn mit der linken Maustaste um. Ein Popup-Fenster wird geöffnet, in das Sie den neuen Namen eingeben können.

Charlie-Tca
quelle
sicher, aber wie können Sie dies zu einem Skript hinzufügen?
Rubo77
1

Sie können den Registerkartennamen einfach mit ändern

guake -r newtabname

Wenn Sie den neuesten Ausführungsbefehl erhalten möchten, verwenden Sie zum Beispiel

echo "!!" | cut -f 1 -d " "

!!wird durch Bash erweitert, wenn Sie es eingeben. Es wird nicht durch Alias-Ersetzung erweitert. Sie müssen also die historyeingebaute Erweiterung verwenden, um einen Alias ​​zu erstellen:

alias setguaketitle='guake -r $(echo "$(history -p !! )"| cut -f 1 -d " ")'

als dein letzter befehl war

echo this is a test

dann anrufen

setguaketitle

setzt den Titel auf "Echo".

rubo77
quelle
0

Wenn Sie Ihre Shell in zsh ändern, können Sie Folgendes zu Ihrer hinzufügen ~/.zshrc:

preexec() {
    echo -n '\e]0;'
    echo -nE "$1"
    print -nP '  (%~)'
    echo -n '\a'
}

und es wird der aktuelle Befehl und das aktuelle Arbeitsverzeichnis angezeigt. Dies funktioniert für alle Terminalemulatoren, nicht nur für Guake.

So installieren Sie zsh:

sudo apt-get install zsh

Zum Ausprobieren einfach sagen

zsh

Um es zu Ihrem Standard für neue Terminals zu machen:

chsh -s /bin/zsh 
Poolie
quelle
1
zsh funktioniert überhaupt nicht mit guake :(
theTuxRacer
Oh, richtig, ich erinnere mich, dass ich dieses Problem schon einmal getroffen habe. Aber zumindest einige der Fehler, die sich darauf beziehen, scheinen behoben zu sein, zB < guake.org/ticket/49 >.
Poolie