Отдельный экземпляр терминала GNOME?


8

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


Какую версию Ubuntu вы используете, и в какой среде? Я спрашиваю, потому что вы описываете настройки по умолчанию в unity и gnome-shell.
Мартин

Я использую Ubuntu 11.10 с Unity-2D. Я не сделал чистую установку, но обновление с 11.04.
Настроение

Используете ли вы Ctrl + Alt + T в качестве ярлыка?
int_ua

Да, я делаю. Или я запускаю терминал, набирая «ter» enter »в Kupfer. Это те 2 метода, которые я использую. Поскольку я не слишком часто смотрю на Unity laucher, я получаю 3, 4 разных терминала.
Настроение

Ответы:


9

Я написал простой скрипт оболочки, используя 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 .

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


Почему бы просто не сделать свой скрипт программой запуска терминала по умолчанию? Зачем все шаги, чтобы добавить ярлыки и все? +1 за скрипт, -1 за реализацию.
Бруно Перейра

Вообще честно… я не знаю как это сделать. Я посмотрел на приложения по умолчанию и не увидел терминал. Также я убежден, что в предыдущей версии Ubuntu были текстовые поля, в которые можно было вводить команды. Эта версия приложений по умолчанию - все выпадающие меню.
настроение

2

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

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

Нет, я не хочу новую вкладку. Я хочу, чтобы терминал переместился на передний план в том состоянии, в котором я его оставил в последний раз.
Настроение

1
Это только открывает для меня новые окна в Ubuntu 16.04
beruic

0

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


Да, я знаю об этом. Тем не менее, для начала мне нужно открыть терминал. Я имел в виду, когда нажимаю control + alt + t или открываю его в Kupfer. Я ищу то же поведение, что и, например, в Chrome: если экземпляр открыт, покажите мне этот экземпляр, если там нет экземпляра, откройте новый экземпляр.
Настроение

0

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

sudo apt-get install procps

Сценарий:

#!/usr/bin/env bash

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

0

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.