Я хотел бы знать, или возможно настроить Терминал GNOME способом, что, когда я открываю терминал и уже существует экземпляр, открытый, это покажет, что экземпляр и не открывает совершенно новый.
Я записал простой сценарий оболочки с помощью wmctrl для предоставления Терминального фокуса. Это делает точно, что я хочу.
Во-первых, установка wmctrl sudo apt-get install wmctrl
.
Затем, разожгите текстовый редактор, скопируйте следующие строки.
#!/bin/sh
SERVICE='gnome-terminal'
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
wmctrl -xa $SERVICE
else
$SERVICE
fi
Сохраните файл где-нибудь, где Вы обычно сохраняете свои сценарии оболочки. В моем случае я сделал: ~/bin/single_instance.sh
CD к каталогу (cd ~/bin
) и сделайте исполняемый файл файла chmod +x single_instance.sh
Теперь, откройтесь, Главное меню выбирают Аксессуары» Терминальные свойства нажатия и заменяют команду сценарием: ~/bin/single_instance.sh
Откройте Параметры настройки системы» Клавиатура» Ярлыки. Отключите ярлык Терминала Запуска путем предоставления ему клавиши Backspace. Сделайте пользовательский ярлык. Снова заполните путь и имя к сценарию и дайте ему сочетание клавиш ctrl + высокий звук + t.
Вы сделаны, единственный терминал экземпляра...
Добавьте - вкладка к команде средства запуска. Затем Вы заканчиваете только с одним приложением. открытый.
~$ gnome-terminal --help-all
:
--tab Open a new tab in the last-opened window with the default profile
Это - поведение по умолчанию, если Вы используете Mod4+#
(Mod4
= Супер = ключ "Windows", #
число в средстве запуска), ярлык для открытия любого приложения.
Я сделал вывод и сценарий simplfied @Mood немного. Теперь это берет параметр командной строки и использование pgrep вместо этого.
sudo apt-get install procps
Сценарий:
#!/usr/bin/env bash
if pgrep $1
then
wmctrl -xa $1
else
$1
fi
Я хотел бы добавить свой собственный сценарий, так как я нахожу это чрезвычайно полезным:
Я настроил ярлык Ctrl+Alt+T для запущения этого скрипта, и я нахожу это еще более удобным, чем Guake или 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
Я использую его с QTerminal, но я изменил для установки потребностям.Удачи