ฉันสามารถเปลี่ยนชื่อของแท็บ guake เพื่อแสดงคำสั่งปัจจุบันได้หรือไม่?


13

ฉันใช้ guake อย่างหนักและ ssh ลงในคอมพิวเตอร์มากกว่า 3 เครื่องในเวลาใดก็ได้ ฉันยังมี daemons ที่ทำงานบนแท็บบางตัว (เทอร์มินัล) สิ่งที่ฉันต้องการรู้ว่ามันเป็นไปได้ที่จะมีชื่อของคำสั่งปัจจุบันเป็นชื่อของ Terminal หรือไม่? คลิกขวาที่แท็บและเปลี่ยนชื่อเป็นสาเหตุ: (ดูที่แท็บหลังเทอร์มินัล 5)

ดูแท็บหลัง Terminal 5

ขอบคุณ


ดูคำตอบของฉันสำหรับคำถามที่เกี่ยวข้องเพื่อแสดงตัวย่อของไดเรกทอรีปัจจุบันเป็นชื่อแท็บ
krlmlr

คุณหมายถึงอะไรกับ "คำสั่งปัจจุบัน"? มีคำสั่งให้รันในแต่ละเทอร์มินัลเสมอหรือไม่ ชื่อเรื่องควรเป็นอย่างไรเมื่อไม่มีอะไรทำงาน
rubo77

คำตอบ:


4

นี่เป็นข้อผิดพลาด guake (0.4.1) ฉันเพิ่งเห็นและแก้ปัญหานี้ผ่านรายงานข้อผิดพลาดนี้ แต่ผู้เขียนบอกว่านี่ไม่ใช่วิธีที่ดีที่สุด: https://github.com/Guake/guake/issues/205

ฉันพบว่าการย้ายรหัสทำลายกล่องโต้ตอบ (guake.py บรรทัด 983) ลงหลังจากรหัสที่ตั้งป้ายกำกับแท็บ (บรรทัดที่ 986) แก้ปัญหาได้จริง ดังนั้นรหัสที่เหมาะกับฉันจะเป็นดังนี้:

    response = dialog.run()
    # dialog.destroy() 

    if response == gtk.RESPONSE_ACCEPT:
        self.selected_tab.set_label(entry.get_text())

    dialog.destroy()

อาจมีปัญหากับ gtk และกล่องโต้ตอบ แต่ฉันไม่พบการเปลี่ยนแปลงรหัสใด ๆ ที่เชื่อมต่อกับ gtk ในรุ่น 0.4.1 diff

แก้ไข : guake 0.4.2 สามารถเปลี่ยนชื่อแท็บได้อย่างถูกต้อง


1
นี่ไม่ได้ตอบคำถาม
phil294

3

ฉันไม่แน่ใจว่าสิ่งนี้ใช้ได้กับการหลอกลวงมันทำงานได้กับเครื่องเลียนแบบเทอร์มินัลส่วนใหญ่ คุณสามารถรวมเสียงสะท้อนในสคริปต์ของคุณเพื่อเปลี่ยนชื่อเทอร์มินัล:

echo -ne "\033]0;your_title_here\007"

ไม่ทำงานเมื่อฉันพิมพ์ลงในเทอร์มินัล
theTuxRacer

1
นั่นเป็นเพราะการแจ้งเตือนของเชลล์ของคุณมักจะตั้งเป็นไดเรกทอรีทำงานปัจจุบัน ตรวจสอบตัวแปร PS1
ak2

มันไม่ทำงานบน Ubuntu 15.10 ของฉันเช่นกัน ฉันตรวจสอบecho $PS1สิ่งที่แสดงให้เห็น\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ว่าสิ่งนี้ช่วยฉันแก้ปัญหานี้ได้อย่างไร
rubo77

3

บิตของแฮ็ค แต่สิ่งนี้จะเปลี่ยนชื่อเทอร์มินัลปัจจุบันเป็นสิ่งที่คุณต้องการ

function ssh() {
    guake -r "$@";
    /usr/bin/ssh $@
}

นอกจากนี้หากคุณอัปเดต PROMPT_COMMAND คุณสามารถมีฟังก์ชั่นเพื่ออัพเดทชื่อเทอร์มินัลในแต่ละครั้ง แม้ว่าสิ่งนี้จะไม่ทำงานสำหรับปัญหา ssh ของคุณเนื่องจากจะเปลี่ยนชื่อหลังจากคำสั่งรันเท่านั้น

เช่น

export PROMPT_COMMAND=renameTerminal

function renameTerminal() {
    guake -r "$SOMENAME";
}

2

เมื่อฉันต้องการเปลี่ยนชื่อแท็บใน guake ฉันเพียงคลิกขวาที่ชื่อแท็บและเปลี่ยนชื่อคลิกซ้าย กล่องป๊อปอัปจะเปิดขึ้นเพื่อพิมพ์ชื่อใหม่


แน่นอน แต่คุณจะเพิ่มสิ่งนี้ลงในสคริปต์ได้อย่างไร
rubo77

1

คุณสามารถเปลี่ยนแท็บด้วย

guake -r newtabname

หากคุณต้องการรับคำสั่งที่รันล่าสุดให้ใช้ตัวอย่างเช่น

echo "!!" | cut -f 1 -d " "

!!ถูกขยายโดย bash เมื่อคุณพิมพ์ มันไม่ได้ถูกขยายด้วยการทดแทน alias ดังนั้นคุณต้องใช้historyบิวด์อินเพื่อทำการขยายเพื่อวางไว้ในนามแฝง:

alias setguaketitle='guake -r $(echo "$(history -p !! )"| cut -f 1 -d " ")'

เมื่อคำสั่งสุดท้ายของคุณคือ

echo this is a test

จากนั้นโทร

setguaketitle

จะตั้งชื่อเป็น "echo"


0

หากคุณเปลี่ยนเชลล์เป็น zsh คุณสามารถเพิ่มสิ่งนี้ใน~/.zshrc:

preexec() {
    echo -n '\e]0;'
    echo -nE "$1"
    print -nP '  (%~)'
    echo -n '\a'
}

และมันจะแสดงคำสั่งปัจจุบันและไดเรกทอรีการทำงานปัจจุบัน มันใช้งานได้กับเทอร์มินัลอีมูเลเตอร์ทั้งหมดไม่ใช่แค่เดาเอาเอง

ในการติดตั้ง zsh:

sudo apt-get install zsh

เพื่อลองเพียงแค่พูด

zsh

เพื่อทำให้เป็นค่าเริ่มต้นสำหรับเทอร์มินัลใหม่:

chsh -s /bin/zsh 

1
zsh ไม่ทำงานเลยด้วย guake :(
theTuxRacer

โอ้ใช่ฉันจำได้ว่าเคยตีปัญหานั้นมาก่อน แต่อย่างน้อยข้อผิดพลาดบางอย่างที่เกี่ยวข้องกับมันตอนนี้ดูเหมือนจะได้รับการแก้ไขเช่น < guake.org/ticket/49 >
poolie
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.