Einzelinstanz des GNOME-Terminals?


8

Ich würde gerne wissen, oder es ist möglich, das GNOME-Terminal so einzurichten, dass beim Öffnen des Terminals und wenn bereits eine Instanz geöffnet ist, diese Instanz angezeigt wird und keine brandneue geöffnet wird.


Welche Ubuntu-Version verwenden Sie und welche Umgebung? Ich frage, denn was Sie beschreiben, ist das Standard-Setup in Unity und Gnome-Shell.
Martin

Ich verwende Ubuntu 11.10 mit Unity-2D. Ich habe keine Neuinstallation durchgeführt, sondern ein Upgrade von 11.04.
Stimmung

Verwenden Sie Strg + Alt + T als Verknüpfung?
int_ua

Ja, das tue ich. Oder ich starte ein Terminal, indem ich in Kupfer "ter» enter "eingebe. Das sind die 2 Methoden, die ich benutze. Da ich nicht allzu oft auf den Unity-Laucher schaue, habe ich 3, 4 verschiedene Terminals.
Stimmung

Antworten:


7

Ich habe ein einfaches Shell-Skript mit wmctrl geschrieben, um den Terminal-Fokus festzulegen. Es macht genau das, was ich will.

Installieren Sie zuerst wmctrl sudo apt-get install wmctrl.

Starten Sie als Nächstes einen Texteditor und kopieren Sie die folgenden Zeilen.

#!/bin/sh
SERVICE='gnome-terminal'

if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
  wmctrl -xa $SERVICE
else
  $SERVICE
fi

Speichern Sie die Datei an einem Ort, an dem Sie normalerweise Ihre Shell-Skripte aufbewahren. In meinem Fall habe ich: ~/bin/single_instance.sh

CD in das Verzeichnis ( cd ~/bin) und machen Sie die Datei ausführbarchmod +x single_instance.sh

Nun öffnen Hauptmenü wählen Zubehör »Klemmen drücken Eigenschaften und ersetzen Befehl mit dem Skript:~/bin/single_instance.sh

Öffnen Sie Systemeinstellungen »Tastatur» Verknüpfungen . Deaktivieren Sie die Verknüpfung zum Starten des Terminals, indem Sie eine Rücktaste eingeben. Erstellen Sie eine benutzerdefinierte Verknüpfung. Füllen wieder in den Pfad und den Namen für das Skript und geben ihm die Tastenkombination Strg + Alt + t .

Sie sind fertig, Einzelinstanz-Terminal ...


Warum machen Sie Ihr Skript nicht einfach zum Standard-Terminal-Launcher? Warum alle Schritte zum Hinzufügen von Verknüpfungen und alles? +1 für das Skript, -1 für die Implementierung.
Bruno Pereira

Ganz ehrlich ... ich weiß nicht, wie ich das machen soll. Ich habe mir Standardanwendungen angesehen und kein Terminal gesehen. Ich bin auch davon überzeugt, dass die vorherige Version von Ubuntu Textfelder hatte, in die Befehle eingegeben werden konnten. Diese Version der Standard-Apps enthält alle Dropdown-Menüs.
Stimmung

2

Fügen Sie dem Launcher-Befehl --tab hinzu . Dann haben Sie nur noch eine App. öffnen.

~$ gnome-terminal --help-all
:
--tab       Open a new tab in the last-opened window with the default profile

Nein, ich möchte keinen neuen Tab. Ich möchte, dass das Terminal in dem Zustand, in dem ich es zuletzt verlassen habe, in den Vordergrund gerückt wird.
Stimmung

1
Dies öffnet gerade neue Fenster für mich auf Ubuntu 16.04
berühmten

0

Dies ist das Standardverhalten, wenn Sie zum Öffnen einer Anwendung die Verknüpfung Mod4+#( Mod4= Super = "Windows" -Taste, #Nummer im Launcher) verwenden.


Ja, das ist mir bewusst. Trotzdem muss ich zunächst ein Terminal offen haben. Ich meinte, wenn ich Strg + Alt + T drücke oder es in Kupfer öffne. Ich suche das gleiche Verhalten wie beispielsweise Chrome: Wenn eine Instanz geöffnet ist, zeigen Sie mir diese Instanz, wenn keine Instanz vorhanden ist, öffnen Sie eine neue Instanz.
Stimmung

0

Ich habe das Skript von @Mood ein wenig verallgemeinert und vereinfacht. Jetzt wird ein Befehlszeilenparameter verwendet und stattdessen pgrep verwendet.

sudo apt-get install procps

Das Skript:

#!/usr/bin/env bash

if pgrep $1
then
    wmctrl -xa $1
else
    $1
fi

0

Ich möchte mein eigenes Skript hinzufügen, da ich es äußerst nützlich finde:

  1. Wenn sich im aktuellen Arbeitsbereich ein Gnom-Terminal befindet, wird es nach vorne gebracht und fokussiert
  2. Wenn sich im aktuellen Arbeitsbereich kein Gnome-Terminal befindet, wechselt es den Arbeitsbereich und bringt das erste vorhandene Gnome-Terminal, das es findet, nach vorne und gibt ihm den Fokus
  3. Wenn keine Gnome-Terminal-Instanzen ausgeführt werden, wird eine neue Instanz geöffnet, nach vorne gebracht und fokussiert

Ich habe die Tastenkombination Strg + Alt + T so konfiguriert, dass dieses Skript ausgeführt wird, und finde es noch komfortabler als Guake oder Tilda.

#!/usr/bin/env sh

# APP is the binary name you see when you do ps
APP="gnome-terminal"
# WIN_CLASS is the window class you see when you do wmctrl -lx
WIN_CLASS="gnome-terminal-server.Gnome-terminal"

# Use the app from current workpace first, or any if not available
WORKSPACE=$(wmctrl -d | grep '\*' | cut -d ' ' -f1)
TPID=$(ps aux | pgrep $APP)
if [ "$TPID" ]
then
  QTERM_WIN=$(wmctrl -lx | grep $WIN_CLASS | grep $WORKSPACE  | awk 'NR == 1 {print $1}')
  if [ "$QTERM_WIN" ]
  then
    wmctrl -ia $QTERM_WIN
  else
    # No valid app found in the current workspace, switch to any
    QTERM_WIN=$(wmctrl -lx | grep $WIN_CLASS | awk 'NR == 1 {print $1}')
    wmctrl -ia $QTERM_WIN
  fi
else
  $APP &
fi

Ich benutze es mit QTerminal, aber ich habe es an Ihre Bedürfnisse angepasst. Viel Glück

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.