Chciałbym wiedzieć lub jest możliwe skonfigurowanie GNOME Terminal w taki sposób, że kiedy otworzę terminal i już istnieje instancja, pokaże tę instancję i nie otworzy zupełnie nowej.
Chciałbym wiedzieć lub jest możliwe skonfigurowanie GNOME Terminal w taki sposób, że kiedy otworzę terminal i już istnieje instancja, pokaże tę instancję i nie otworzy zupełnie nowej.
Odpowiedzi:
Napisałem prosty skrypt powłoki, używając wmctrl, aby skupić się na terminalu. Robi dokładnie to, czego chcę.
Najpierw zainstaluj wmctrl sudo apt-get install wmctrl
.
Następnie uruchom edytor tekstu, skopiuj następujące wiersze.
#!/bin/sh
SERVICE='gnome-terminal'
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
wmctrl -xa $SERVICE
else
$SERVICE
fi
Zapisz plik w miejscu, w którym zwykle przechowujesz skrypty powłoki. W moim przypadku: ~/bin/single_instance.sh
cd do katalogu ( cd ~/bin
) i uczyń plik wykonywalnymchmod +x single_instance.sh
Teraz otwórz Menu główne, wybierz Akcesoria » Właściwości prasy terminalowej i zastąp polecenie skryptem:~/bin/single_instance.sh
Otwórz Ustawienia systemowe »Klawiatura» Skróty . Wyłącz skrót Uruchom terminal , nadając mu backspace. Utwórz niestandardowy skrót. Ponownie wpisz ścieżkę i nazwę skryptu i nadaj mu kombinację klawiszy ctrl + alt + t .
Skończyłeś, terminal z pojedynczą instancją ...
Dodaj --tab do polecenia uruchamiania. W rezultacie masz tylko jedną aplikację. otwarty.
~$ gnome-terminal --help-all
:
--tab Open a new tab in the last-opened window with the default profile
Jest to zachowanie domyślne, jeśli używasz skrótu Mod4+#
( Mod4
= Super = „Windows”, #
jest liczbą w programie uruchamiającym), aby otworzyć dowolną aplikację.
Chciałbym dodać własny skrypt, ponieważ uważam go za niezwykle przydatny:
Skonfigurowałem skrót Ctrl + Alt + T, aby uruchomić ten skrypt i uważam, że jest on jeszcze wygodniejszy niż Guake lub 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
Używam go z QTerminalem, ale dostosowałem go do twoich potrzeb. Powodzenia