Я хотел бы знать, или можно настроить терминал GNOME таким образом, чтобы, когда я открываю терминал и уже был открыт экземпляр, он будет показывать этот экземпляр, а не открывать новый.
Я хотел бы знать, или можно настроить терминал 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 ~/bin
) и сделайте файл исполняемымchmod +x single_instance.sh
Теперь откройте Главное меню, выберите « Стандартные», нажмите « Свойства терминала» и замените команду на скрипт:~/bin/single_instance.sh
Откройте Системные настройки »Клавиатура» Ярлыки . Отключите ярлык Launch Terminal , предоставив ему возврат. Сделайте пользовательский ярлык. Снова заполните путь и имя скрипта и дайте ему комбинацию клавиш ctrl + alt + t .
Вы сделали, терминал единственного экземпляра ...
Добавьте --tab к команде запуска. Тогда вы получите только одно приложение. открытый.
~$ gnome-terminal --help-all
:
--tab Open a new tab in the last-opened window with the default profile
Это поведение по умолчанию, если вы используете Mod4+#
( Mod4
= Super = "Windows" ключ, #
номер в панели запуска) ярлык, чтобы открыть любое приложение.
Я хотел бы добавить свой собственный скрипт, так как я нахожу его чрезвычайно полезным:
Я настроил комбинацию клавиш 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, но я изменил его в соответствии с вашими потребностями. Удачи