เรียกใช้อินสแตนซ์กระบวนการหลายกระบวนการจริงของ gnome-terminal


17

หากคุณgnome-terminalใช้งานและต้องการอินสแตนซ์ใหม่ของโปรแกรมคุณอาจคิดว่าการใช้งานgnome-terminal &จากเชลล์จะเป็นการหลอกลวง

น่าประหลาดใจที่อินสแตนซ์ใหม่นี้ทำงานเหมือนกับโปรแกรม Windows หรือ Mac ที่ไม่น่าสนใจ มันจะส่งข้อความไปยังที่มีอยู่เท่านั้นที่ทำงานgnome-terminalเพื่อสร้างหน้าต่างใหม่ หากgnome-terminalกระบวนการนี้ขัดข้องคุณจะสูญเสียหน้าต่างเทอร์มินัลทั้งหมด!

(แน่นอนว่าแต่ละหน้าต่างมีเชลล์ของตัวเองซึ่งเป็นกระบวนการที่เป็นอิสระ แต่เทอร์มินัลอีมูเลเตอร์จำลองและ GUI ได้รับการจัดการจากอินสแตนซ์เดียวของแอปพลิเคชัน)

เราจะสร้างอินสแตนซ์ที่เป็นอิสระของgnome-terminalแต่ละการทำงานในกระบวนการของตนเองเพื่อฆ่ากระบวนการนั้นทำลายหน้าต่างที่เกี่ยวข้องกับกระบวนการนั้นเท่านั้น


คุณอาจประสบความสำเร็จด้วยgnome-terminal --disable-factoryอย่างไรก็ตามดูเหมือนว่าการสนับสนุนนั้นจะถูกถอนออก
steeldriver

@steeldriver ดูเหมือนว่าจะใช้งานได้ สนใจที่จะทำให้มันเป็นคำตอบ? ฉันไม่สนใจว่าจะมีการถอนการสนับสนุน เหตุใดจึงหายาก เนื่องจากเอกสารประกอบสำหรับ--disable-factoryไม่ได้ใช้คำศัพท์มาตรฐานใด ๆ เช่น "เริ่มต้นในกระบวนการใหม่ (หรือพื้นที่ที่อยู่) อย่าใช้อินสแตนซ์ที่มีอยู่อีกครั้ง"
Kaz

เปรียบเทียบunix.stackexchange.com/questions/323663
JdeBP

2
ฉันไม่อยากจะเชื่อเลยว่าคนที่ทำโครงการเหล่านี้ยังคงทำการตัดสินใจที่เลวร้าย เราไม่ได้เรียนรู้อะไรเลยเหรอ? ใครสนใจเรื่องการประหยัด RAM สักกิโลไบต์ ใครจะคิดว่าการป้องกันมิให้เครื่องชนกันควรเป็นลำดับความสำคัญอันดับ 1 กลับไปที่rxvtฉันเดา
เบี

ในความเป็นจริงฉันสามารถแนะนำrxvtให้ใครก็ตามที่ต้องการอาคารผู้โดยสารหลายกระบวนการที่แท้จริง มันรองรับฟอนต์ Truetype การพันสายยาวและคุณสมบัติอื่น ๆ ของเทอร์มินัลสมัยใหม่
Tobia

คำตอบ:


9

ตามman gnome-terminalตัวเลือกที่คุณค้นหาดูเหมือนจะเป็นชื่อที่สับสน

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

อย่างไรก็ตามตัวเลือกดังกล่าวจะถูกลบออกในรุ่นที่ใหม่กว่าดังนั้นจึงไม่ควรเชื่อถือ


มันใช้งานได้ดี เมื่อถึงเวลาที่หมุดจะลบคุณลักษณะนี้ฉันจะไม่สนใจอีกต่อไป ฉันต้องการสิ่งนี้ในการตั้งค่าการทดสอบที่เปิดหน้าต่างเทอร์มินัลมากกว่าสิบหน้าต่าง: บาง minicom ที่ทำงานอยู่กับสายอนุกรมต่างๆที่เชื่อมต่อกับอุปกรณ์ฝังตัวและอื่น ๆ กำลังนั่งอยู่ในไดเรกทอรีสคริปต์ทดสอบและเช่นนั้น gnome-terminal มีคุณสมบัติที่ดีที่สุดสำหรับการปรับขนาดด้วยแบบอักษรที่ดูดีอ่านได้ทุกขนาด น่าเสียดายที่หน่วยความจำรั่วไหลอย่างบ้าคลั่งเติบโตถึง 2GB ในหนึ่งสัปดาห์ กระบวนการแยกต่างหากจะช่วยให้มีปัญหานี้ทำให้จัดการได้ง่ายขึ้น
Kaz

ฉันลอง rxvt, aterm, eterm, xterm, Terminator และอีกสองสามคน พวกเขาทั้งหมดทำงานได้อย่างง่ายดายเป็นกระบวนการแยกต่างหาก แต่ดูดในวิธีอื่น คีย์ลัดการปรับขนาดที่เป็นเอกสารของ rxvt จะไม่ทำงาน Aterm และ xterm ล้วนดูดในแผนกนั้น Terminator มีการปรับขนาดแปลก ๆ ที่เปลี่ยนขนาดตัวอักษรโดยไม่มีขนาดหน้าต่าง ETerm เพิ่งปรับขนาดแปลกประหลาดอย่างสมบูรณ์ด้วยสี่แบบอักษรคงที่; ฉันเล่นกับตัวเลือกประมาณ 30 นาทีแล้วถอนการติดตั้ง
Kaz

@Kaz xterm + xdotool --window "$WINDOWID"?
Gilles 'หยุดความชั่วร้าย' ใน

@Kaz คุณอาจวิธีที่มากกว่านั้น แต่ผมขอแนะนำให้มากกว่าurxvt rxvtและใช่gnome-terminalยังคงเหนือกว่ากราฟิก แต่อย่างใดฉันได้เรียนรู้ที่จะไม่พลาดมัน อาจเป็นเรื่องเกี่ยวกับตัวจัดการหน้าต่างใหม่ (ใช้i3ตอนนี้ แต่ไม่ใช่สำหรับทุกคน)
cprn

ดูเทอร์มินัลที่ใช้ libvte อื่น ๆ อีกโหลหรือไม่ Gnome-terminal เป็นเพียงแอปพลิเคชั่นเดียวที่จบลงด้วยการเชื่อมต่อกับไลบรารีนั้นในแบ็กเอนด์ซึ่งแตกต่างจากที่กล่าวถึงข้างต้นที่ใช้การใช้งานเทอร์มินัลของตนเอง
dragon788

17

เนื่องจากสถาปัตยกรรมไคลเอ็นต์ / เซิร์ฟเวอร์ใหม่ (รายละเอียดที่นี่ ) gnome-terminal-serverที่คุณจะต้องเริ่มต้นอินสแตนซ์ที่แยกต่างหากจาก ในการทำเช่นนั้นคุณสามารถใช้--app-idสวิตช์ได้

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

จากนั้นใช้ไคลเอ็นต์ (ที่มี app-id เดียวกัน) เพื่อสร้างเทอร์มินัล1ภายในเซิร์ฟเวอร์ใหม่:

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

อีกตัวอย่าง:

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

และอาคาร:

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

เส้นทางไปยังgnome-terminal-serverอาจแตกต่างกันในระบบของคุณ


1: หมายเหตุว่า"คุณมี 10 วินาทีในการใช้โปรแกรมในการสร้างอาคารผู้โดยสารภายในเซิร์ฟเวอร์ใหม่"


คุณสามารถยกตัวอย่างการทำงานหรือดูคำถามนี้ได้หรือไม่: unix.stackexchange.com/questions/304269/…
cprn

@CyprianGuerra - ในแท็บ gnome-terminal เปิดสองแท็บ: ในแท็บแรกเรียกใช้คำสั่งที่ 1 ในตัวอย่างของฉัน (นั่นคือการเริ่มเซิร์ฟเวอร์ใหม่) จากนั้นในเวลาน้อยกว่า 10 วินาทีให้สลับไปที่แท็บที่สองและเรียกใช้คำสั่งที่ 2 (เพื่อเริ่มไคลเอนต์ใหม่) ปรับแต่งตามความต้องการของคุณ ...
don_crissti

แท็บ ... ฉันจะลอง screenสำหรับตอนนี้ผมสามารถบอกได้ว่ามันไม่ทำงานภายใน
cprn

ข้อกำหนดของแท็บมีอะไรบ้าง ดังที่: กระบวนการเทอร์มินัลไคลเอ็นต์จำเป็นต้องเป็นลูกของเซิร์ฟเวอร์หรือไม่?
cprn

@CyprianGuerra - มันเป็นเพียงตัวอย่างพวกเขาไม่ต้องการจากสิ่งที่ฉันเห็น ...
don_crissti

1

ฉันดิ้นรนกับ mc ที่อยู่ในกลุ่มแท็บ alt เหมือนกับ windows terminal อื่น ๆ และพบวิธีแก้ปัญหานี้

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

คนที่แต่งตัวประหลาด (คริสเออร์วิน) แก้ไขมันสำหรับกิจวัตรประจำวันทางอีเมลของเขา ฉันทำเช่นเดียวกันกับ mc ที่ประสบความสำเร็จอย่างสมบูรณ์นอกเหนือจากไอคอน mc ภายใน alt-tab แต่ก็ใช้ได้

คุณจะต้องมี 3 ไฟล์:

/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

นี่คือรายการเดสก์ทอปของคุณสำหรับผู้บัญชาการเที่ยงคืน ทั้งแก้ไขโดยตรง/usr/share/applications/...หรือย้ายจากที่นั่น/usr/local/share/applications/mc.desktopเพื่อเน้นว่ามันเป็นสำเนาที่คุณแก้ไข ไม่ว่าในกรณีใด ๆExecควรแก้ไขรายการให้มีgnome-terminal --app-id org.gnome.Terminal-mc -e mc

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

เก็บถาวรด้วยทั้งหมดข้างต้น

https://we.tl/t-6rH5jduMG7 นี้เป็น .tar.gz /แกะในของคุณ มันจะสร้างไฟล์จากด้านบนรวมทั้งไอคอน. svg สำหรับ mc

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.