Единственный экземпляр Терминала GNOME?

Я хотел бы знать, или возможно настроить Терминал GNOME способом, что, когда я открываю терминал и уже существует экземпляр, открытый, это покажет, что экземпляр и не открывает совершенно новый.

8
задан 2 December 2016 в 03:17

5 ответов

Я записал простой сценарий оболочки с помощью 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.

Вы сделаны, единственный терминал экземпляра...

7
ответ дан 23 November 2019 в 05:42

Добавьте - вкладка к команде средства запуска. Затем Вы заканчиваете только с одним приложением. открытый.

~$ gnome-terminal --help-all
:
--tab       Open a new tab in the last-opened window with the default profile
2
ответ дан 23 November 2019 в 05:42

Это - поведение по умолчанию, если Вы используете Mod4+# (Mod4 = Супер = ключ "Windows", # число в средстве запуска), ярлык для открытия любого приложения.

0
ответ дан 23 November 2019 в 05:42

Я сделал вывод и сценарий simplfied @Mood немного. Теперь это берет параметр командной строки и использование pgrep вместо этого.

sudo apt-get install procps

Сценарий:

#!/usr/bin/env bash

if pgrep $1
then
    wmctrl -xa $1
else
    $1
fi
0
ответ дан 23 November 2019 в 05:42

Я хотел бы добавить свой собственный сценарий, так как я нахожу это чрезвычайно полезным:

  1. Если существует терминал гнома в текущей рабочей области, то это выявляет его и дает ему фокус
  2. Если нет никакого терминала гнома в текущей рабочей области, он переключает рабочую область и приносит первый существующий терминал гнома, который он находит к передней стороне и дает ему фокус
  3. Если нет никакого терминального гномом выполнения экземпляров, это открывает новый экземпляр, переносит его на передний план и дает ему фокус

Я настроил ярлык 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, но я изменил для установки потребностям.Удачи

0
ответ дан 23 November 2019 в 05:42

Другие вопросы по тегам:

Похожие вопросы: