Satu instance dari Terminal GNOME?

8

Saya ingin tahu atau mungkin untuk mengatur Terminal GNOME dengan cara bahwa ketika saya membuka terminal dan sudah ada instance terbuka itu akan menunjukkan contoh itu dan tidak membuka yang baru.

Suasana hati
sumber
versi ubuntu apa yang Anda gunakan, dan lingkungan mana? Saya bertanya, karena apa yang Anda gambarkan adalah pengaturan default dalam unity dan gnome-shell.
Martin
Saya menggunakan Ubuntu 11.10 dengan Unity-2D. Saya belum melakukan instalasi bersih tetapi upgrade dari 11,04.
Mood
Apakah Anda menggunakan Ctrl + Alt + T sebagai pintasan?
int_ua
Ya saya lakukan. Itu atau saya memulai terminal mengetik "ter» enter "di Kupfer. Itu adalah 2 metode yang saya gunakan. Karena saya tidak melihat laucher Unity terlalu sering saya berakhir dengan 3, 4 terminal yang berbeda.
Mood

Jawaban:

8

Saya menulis skrip shell sederhana menggunakan wmctrl untuk memberikan fokus Terminal. Itu tepat seperti yang saya inginkan.

Pertama, instal wmctrl sudo apt-get install wmctrl.

Selanjutnya, jalankan editor teks, salin baris berikut.

#!/bin/sh
SERVICE='gnome-terminal'

if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
  wmctrl -xa $SERVICE
else
  $SERVICE
fi

Simpan file di suatu tempat di mana Anda biasanya menyimpan skrip shell Anda. Dalam kasus saya saya lakukan: ~/bin/single_instance.sh

cd ke direktori ( cd ~/bin) dan membuat file dapat dieksekusichmod +x single_instance.sh

Sekarang, buka Menu Utama pilih Accessories »Terminal pers sifat dan mengganti perintah dengan script:~/bin/single_instance.sh

Buka Pengaturan Sistem »Keyboard» Pintasan . Nonaktifkan luncurkan pintasan Terminal dengan memberinya backspace. Buat pintasan khusus. Sekali lagi isi lintasan dan nama untuk naskah dan berikan kombinasi tombol ctrl + alt + t .

Anda sudah selesai, terminal instance tunggal ...

Suasana hati
sumber
Mengapa tidak menjadikan skrip Anda peluncur terminal default? Mengapa semua langkah untuk menambahkan cara pintas dan semua? +1 untuk skrip, -1 untuk implementasi.
Bruno Pereira
Sejujurnya ... Saya tidak tahu bagaimana melakukan itu. Saya telah melihat aplikasi default dan tidak melihat terminal. Saya juga yakin bahwa versi Ubuntu sebelumnya memiliki bidang teks tempat perintah dapat dimasukkan. Versi aplikasi default ini adalah semua menu drop down.
Suasana
2

Tambahkan --tab ke perintah peluncur. Maka Anda berakhir hanya dengan satu aplikasi. Buka.

~$ gnome-terminal --help-all
:
--tab       Open a new tab in the last-opened window with the default profile
david6
sumber
Tidak, saya tidak ingin tab baru. Saya ingin terminal untuk pindah ke latar depan di negara saya terakhir meninggalkannya.
Suasana
1
Ini hanya membuka jendela baru bagi saya di Ubuntu 16.04
beruic
0

Ini adalah perilaku default jika Anda menggunakan pintasan Mod4+#( Mod4= Super = "Windows", #adalah pintasan dalam peluncur) untuk membuka aplikasi apa pun.

int_ua
sumber
Ya saya tahu itu. Namun, saya harus memiliki terminal terbuka untuk memulai. Maksud saya ketika saya menekan control + alt + t atau membukanya di Kupfer. Saya mencari perilaku yang sama dengan - misalnya - Chrome: Jika sebuah instance terbuka, tunjukkan instance itu kepada saya, jika tidak ada instance, buka instance baru.
Mood
0

Saya menggeneralisasi dan menyederhanakan skrip @Mood. Sekarang dibutuhkan parameter baris perintah dan gunakan pgrep sebagai gantinya.

sudo apt-get install procps

Naskah:

#!/usr/bin/env bash

if pgrep $1
then
    wmctrl -xa $1
else
    $1
fi
Einar
sumber
0

Saya ingin menambahkan skrip saya sendiri, karena menurut saya ini sangat berguna:

  1. Jika ada terminal gnome di ruang kerja saat ini, maka itu membawa ke depan dan memberikannya fokus
  2. Jika tidak ada terminal gnome di ruang kerja saat ini, ini akan mengganti ruang kerja dan membawa terminal gnome yang ada pertama yang ditemukannya ke depan dan memberinya fokus
  3. Jika tidak ada instance gnome-terminal berjalan, ia membuka instance baru, membawanya ke depan dan memberikannya fokus

Saya mengkonfigurasi pintas Ctrl + Alt + T untuk menjalankan skrip ini dan saya merasa lebih nyaman daripada Guake atau 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

Saya menggunakannya dengan QTerminal tetapi saya memodifikasi agar sesuai dengan kebutuhan Anda. Semoga berhasil

Emilio M.
sumber