ในสถานการณ์ที่ผู้ใช้คนเดียวถ้าเราเอาตัวอย่างของxtermเราก็สามารถนับจำนวนของ PIDs ของxterm; xtermสร้าง pid แยกต่างหากสำหรับแต่ละหน้าต่าง 
gnome-terminalอย่างไรก็ตามรัน pid เดียว แต่ข่าวดีก็คือมันสร้างกระบวนการลูกสำหรับแต่ละหน้าต่างและ / หรือแท็บ เราสามารถเรียกกระบวนการลูกเหล่านี้ได้โดยใช้คำสั่ง:
pgrep -P <pid_of_gnome-terminal>
อย่างไรก็ตามมีความยุ่งยากเล็กน้อยในการจัดการกับ:
อ่านคำถามของคุณเราอาจคิดว่าผู้ใช้ในกรณีนี้เป็นจริงเจ้าของ x โดยปกติแล้วเราสามารถใช้$USER-variable ได้ แต่สิ่งนี้อาจไม่ตรงกับผู้ใช้ที่เข้าสู่ระบบใน$DISPLAYปัจจุบัน
 
ในสถานการณ์ที่ผู้ใช้หลาย PIDs เป็นของ (ทั้งที่) การประยุกต์ใช้ terminal, $DISPLAYไม่จำเป็นต้องเป็นของปัจจุบัน เราจำเป็นต้องแยกเฉพาะ pids ที่เกี่ยวข้องและ pids เด็ก
 
บน Unity (15.10 หรือต่ำกว่า) หากผู้ใช้รายที่สองเข้าสู่ระบบกระบวนการเพิ่มเติมจะเริ่มต้นขึ้น ( gnome-pty-helper) ซึ่งปรากฏขึ้นเป็นกระบวนการลูกเข้าgnome-terminalแต่กระบวนการ (ชัด) ไม่มีหน้าต่างหรือแท็บ บนMateกระบวนการอยู่แล้ว
 
ในระยะสั้น
ในการนับจำนวนแท็บและ / หรือหน้าต่างของแอปพลิเคชันเทอร์มินัลเราจำเป็นต้อง:
- ดูว่าเราใช้แอพพลิเคชั่นเทอร์มินัลที่มีหลาย pids หรือ pid เดียวในหนึ่ง
$DISPLAY(x-session) 
- จากกระบวนการทำงานให้แยกเฉพาะ pids ที่เกี่ยวข้องเท่านั้น
$DISPLAY 
- หากแอปพลิเคชันรันกระบวนการลูกสำหรับ pid (สำหรับ windows / แท็บ) ดูว่า
gnome-pty-helperทำงานหรือไม่เพื่อแก้ไขหมายเลข 
สิ่งนี้สามารถเขียนสคริปต์ได้เป็นอย่างดีอย่างไรก็ตามเพื่อค้นหาจำนวนหน้าต่างและ / หรือแท็บที่เปิดอยู่ในปัจจุบันได้อย่างน่าเชื่อถือ 
สคริปต์
ในสคริปต์ดังต่อไปนี้โปรแกรมขั้วกำหนดเป้าหมายจะใช้เป็นข้อโต้แย้ง สคริปต์ทำงานบนเทอร์มินัลมากมายที่ฉันทดสอบ ข้อยกเว้นอยู่Tildaในขณะนี้
ตัวอย่าง
- ฉันมีผู้ใช้สองคนเข้าสู่ระบบหนึ่งคน (ไม่ใช่คนปัจจุบัน) ที่มีสอง
gnome-terminalหน้าต่างหนึ่งคน (หนึ่งคนในรูป) ที่มีสามgnome-terminalหน้าต่างและสองxtermหน้าต่าง 

คำสั่ง: 
/path/to/get_terms.sh gnome-terminal
เอาท์พุท:
3
ในขณะที่
/path/to/get_terms.sh xterm
เอาท์พุท:
2
สคริปต์
#!/bin/bash
terminal=$1
# get the user running the current x-session
username=$(who | grep $DISPLAY | head -1 | awk '{print $1}')
# get the pid of the terminal for the current user
userpid=$(pgrep -u $username $terminal)
# check what type the terminal is (multi pid/single pid)
npids="$(echo "$userpid" | wc -w)"
# in case of a single pid, count the children
if [ "$npids" -eq 1 ]; then
  # check if gnome-pty-helper runs (starts when multiple users are logged in)
  ptpid=$(pgrep gnome-pty-helpe)
  # get number of child- procs
  let "orig = $( pgrep -P $(pgrep -u $username $terminal) | wc -w )" 
  # if pty-helper runs, correct the number of child procs
  if [ -n "$ptpid" ] && [ -n "$userpid" ]; then
    let "n_terms = $orig-1"; else let "n_terms = $orig"
  fi
  # if no child procs run, n-terminals = n-counted pids (difference Mate <> Unity)
  if [ "$n_terms" -eq 0 ]; then echo $orig; else echo $n_terms; fi
# in case of multiple pids, count the pids
elif [ "$npids" -gt 1 ]; then echo $npids
fi
ใช้
               
              
ttyความคิดที่สวยงามด้วย ฉันเดาว่าเรา / คนอื่นให้ความสนใจกับ "คำถาม" นั้นมากเกินไปและลืมไปว่าอาจมีวิธีแก้ปัญหาอื่น ๆ สำหรับ "ความต้องการ" ทั้งหมด :) ฉันจะเล่นด้วยการใช้ตัวเลือกสีแบบสุ่ม หากเป็น 256 สีการเลือกสีเดียวกัน / สีที่คล้ายกันไม่ควรเกิดขึ้นมาก อย่างไรก็ตามการตั้งค่าสีด้วยตนเองสำหรับหมายเลข pts ที่กำหนดจะให้การตั้งค่าส่วนบุคคลที่ดีขึ้น