Jalankan beberapa instance proses nyata dari gnome-terminal


17

Jika Anda telah gnome-terminalmenjalankan, dan menginginkan instance baru dari program, Anda mungkin berpikir bahwa menjalankan gnome-terminal &dari shell akan berhasil.

Yang mengejutkan, instance baru ini berperilaku seperti beberapa program Windows atau Mac yang hina; hanya mengirim pesan ke yang sudah ada, berjalan gnome-terminaluntuk membuat jendela baru. Jika gnome-terminalproses yang satu ini macet, Anda kehilangan semua jendela terminal!

(Tentu saja, setiap jendela memiliki cangkangnya sendiri, yang merupakan proses independen, tetapi emulator terminal aktual dan GUI dikelola dari satu instance aplikasi.)

Bagaimana kita bisa membuat contoh independen gnome-terminal, masing-masing berjalan dalam proses mereka sendiri, sehingga membunuh proses itu hanya menghancurkan jendela yang terkait dengan proses itu?


Anda mungkin sukses dengan gnome-terminal --disable-factory, tetapi dukungan untuk itu tampaknya sedang ditarik
steeldriver

@steeldriver Tampaknya berfungsi; mau membuatnya menjadi jawaban? Saya tidak peduli tentang dukungan yang ditarik. Mengapa ini sangat sulit ditemukan? Karena dokumentasi untuk --disable-factorytidak menggunakan terminologi standar seperti "mulai dalam proses baru (atau ruang alamat); jangan menggunakan kembali contoh yang ada".
Kaz


2
Saya tidak percaya orang-orang yang menjalankan proyek-proyek ini terus membuat keputusan yang begitu buruk. Apakah kita tidak belajar apa-apa? Siapa yang peduli menghemat beberapa kilobyte RAM? Orang akan berpikir bahwa menjaga terminal agar tidak saling menabrak harus menjadi prioritas # 1. Kembali ke rxvtkurasa.
Tobia

Bahkan, saya dapat merekomendasikan rxvtkepada siapa pun yang menginginkan terminal multi-proses yang sebenarnya. Ini memiliki dukungan font Truetype, pembungkus ulang garis panjang, dan sebagian besar fitur terminal modern lainnya.
Tobia

Jawaban:


9

Menurut man gnome-terminal, opsi yang Anda cari tampaknya adalah nama yang membingungkan

   --disable-factory
             Do not register with the activation name server, do 
             not re-use an active terminal.

Namun, opsi ini tampaknya dihapus dalam rilis yang lebih baru sehingga tidak dapat diandalkan.


Ini sangat bagus. Pada saat pinhead menghapus fitur ini, saya kemungkinan tidak akan peduli lagi. Saya memerlukan ini dalam pengaturan pengujian di mana lebih dari sepuluh jendela terminal terbuka: beberapa menjalankan minicom ke berbagai garis serial yang terhubung ke perangkat tertanam, dan yang lainnya duduk di direktori skrip pengujian, dan semacamnya. gnome-terminal memiliki fitur terbaik untuk mengubah ukuran dengan font yang terlihat bagus dan dapat dibaca di setiap ukuran. Sayangnya, memori ini bocor seperti orang gila, tumbuh hingga 2GB dalam seminggu. Proses terpisah akan membantu mengatasi masalah ini, membuatnya lebih mudah dikelola.
Kaz

Saya mencoba rxvt, aterm, eterm, xterm, Terminator dan beberapa lainnya. Mereka semua dengan mudah dijalankan sebagai proses yang terpisah, tentu saja, tetapi mengisap dengan cara lain. Tombol cepat mengubah ukuran rxvt yang didokumentasikan tidak akan berfungsi. Aterm dan xterm menghisap polos di departemen itu. Terminator memiliki ukuran aneh yang mengubah ukuran font tanpa ukuran jendela. ETerm hanya memiliki ukuran yang benar-benar aneh dengan empat font tetap; Saya bermain dengan opsi selama sekitar 30 menit, lalu mencopotnya.
Kaz

@Kaz xterm + xdotool --window "$WINDOWID"?
Gilles 'SANGAT berhenti menjadi jahat'

@Kaz Anda mungkin cara di atas, tapi saya sangat menyarankan urxvtlebih rxvt. Dan ya, gnome-terminalmasih lebih unggul secara grafis tetapi saya entah bagaimana belajar untuk tidak melewatkannya. Mungkin ada banyak hubungannya dengan window manager baru (menggunakan i3sekarang tetapi tidak untuk semua orang).
cprn

Lihatlah ke salah satu dari selusin terminal berbasis libvte lainnya? Gnome-terminal hanyalah salah satu aplikasi yang akhirnya berinteraksi dengan perpustakaan di backend tidak seperti yang disebutkan di atas yang menggunakan implementasi terminal mereka sendiri.
dragon788

17

Karena arsitektur klien / server baru (perincian di sini ) Anda harus memulai instance terpisah gnome-terminal-server. Untuk melakukan itu Anda bisa menggunakan --app-idsakelar:

/usr/lib/gnome-terminal/gnome-terminal-server --app-id my.first.Terminal

kemudian gunakan klien (dengan id-aplikasi yang sama) untuk membuat terminal 1 di dalam server baru:

gnome-terminal --app-id my.first.Terminal
gnome-terminal --full-screen --app-id my.first.Terminal
......

Contoh lain:

/usr/lib/gnome-terminal/gnome-terminal-server --app-id my.second.Terminal

dan terminal:

gnome-terminal --geometry 80x24+200+200 --app-id my.second.Terminal
gnome-terminal --app-id my.second.Terminal
.....

Path ke gnome-terminal-servermungkin berbeda pada sistem Anda.


1: Perhatikan bahwa "Anda memiliki 10 detik untuk menggunakan klien untuk membuat terminal di dalam server baru" .


Bisakah Anda memberikan contoh yang berfungsi atau melihat pertanyaan ini ?: unix.stackexchange.com/questions/304269/…
cprn

@CyprianGuerra - dalam gnome-terminal buka dua tab: pada tab pertama jalankan perintah 1 dalam contoh saya (yaitu untuk memulai server baru) kemudian, dalam waktu kurang dari 10 detik , beralih ke tab kedua dan jalankan perintah ke-2 (untuk memulai klien baru) disesuaikan sesuai kebutuhan Anda ...
don_crissti

Tab ... Saya akan coba. Untuk saat ini saya tahu itu tidak berfungsi di dalam screen.
cprn

Apakah persyaratan tab? Seperti dalam: apakah proses terminal klien harus menjadi anak server?
cprn

@CyprianGuerra - itu hanya contoh, mereka tidak diharuskan dari apa yang saya lihat ...
don_crissti

1

Saya telah berjuang dengan mc berada di grup alt-tab yang sama dengan jendela terminal lainnya dan menemukan solusi ini.

https://chrisirwin.ca/posts/multiple-inances-of-gnome-terminal/

Pria itu (Chris Irwin) menyelesaikannya untuk rutinitas suratnya. Saya melakukan hal yang sama untuk mc dengan kesuksesan penuh terlepas dari ikon mc di dalam alt-tab tapi itu bagus.

Anda membutuhkan 3 file:

/usr/share/dbus-1/services/org.gnome.Terminal-mc.service

[D-BUS Service]
Name=org.gnome.Terminal-mc
SystemdService=gnome-terminal-server-mc.service
Exec=/usr/lib/gnome-terminal-server --class=org.gnome.Terminal-mc --app-id org.gnome.Terminal-mc

/usr/lib/systemd/user/gnome-terminal-server-mc.service

[Unit]
Description=GNOME mc Terminal Server
[Service]
KillMode=process
Type=dbus
BusName=org.gnome.Terminal-mc
ExecStart=/usr/lib/gnome-terminal-server --class=org.gnome.Terminal-mc --app-id org.gnome.Terminal-mc

/usr/local/share/applications/mc.desktop

Ini adalah entri desktop Anda untuk komandan tengah malam. Baik edit secara langsung /usr/share/applications/...atau pindahkan dari sana /usr/local/share/applications/mc.desktopuntuk menekankan bahwa itu adalah salinan Anda sendiri yang dimodifikasi. Bagaimanapun, Execentri harus dimodifikasi untuk dimilikignome-terminal --app-id org.gnome.Terminal-mc -e mc

Exec=gnome-terminal --app-id org.gnome.Terminal-mc --hide-menubar --geometry=102x35 -e mc

Arsipkan dengan semua hal di atas

https://we.tl/t-6rH5jduMG7 Ini adalah .tar.gz untuk membongkar /. Ini akan membuat file dari atas, ditambah ikon .svg untuk mc.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.