หน้าจอ gnu ไม่เปลี่ยนชื่อหน้าต่างของฉัน


10

ฉันตั้งชื่อที่มีความหมายเป็น windows ใหม่ที่ฉันสร้างในหน้าจอ gnu แต่เมื่อฉัน 'cd' หรือ vim open ชื่อนั้นเปลี่ยนเป็น 'pwd' เช่น มีวิธีป้องกันหน้าจอจากการเปลี่ยนชื่อหรือไม่? ฉันรู้ว่ามีการตั้งค่าเช่นนั้นใน tmux แต่ด้วยเหตุผลบางอย่าง vim scrolls ช้ามากใน tmux ด้วยการแบ่งแนวตั้งหลายแนวดังนั้นฉันต้องละทิ้งมัน (tmux) ความคิดชื่นชม!

คำตอบ:


3

ดูเหมือนว่าหน้าจอ gnu จะไม่มีวิธีปิดคุณลักษณะนี้ (และคุณจะเลือกใช้คุณลักษณะนี้ในทุกกรณี) วิธีการแก้ไขมันคือการปรับเปลี่ยน shell- และ vim-behavior:


2

บรรทัดใน / etc / screenrc ที่เป็นปัญหาสำหรับฉันคือ

สตริง hardstatus "[หน้าจอ% n%?:% t%?]% h"

เมื่อระบุแล้วฉันไม่ต้องแก้ไขไฟล์ระบบ ฉันสามารถหลีกเลี่ยงการเปลี่ยนชื่อหน้าจอด้วย

CTRL-A: hardstatus จะถูกแทนที่เสมอ

สำหรับหน้าต่างปัจจุบันหรือโดยเพิ่มต่อไปนี้ใน ~ / .screenrc ของฉันสำหรับ windows อนาคต:

hardstatus เสมอยิ่งขึ้น

(ฉันตั้งค่าแท็บและชื่อหน้าต่างหน้าต่างเทอร์มินัลจาก bash prompt เพื่อรวมข้อมูลที่เป็นประโยชน์และหน้าจอไม่ได้ช่วยฉัน)


alwaysignoreเป็นเส้นทางสู่สติ
Ricky Beam

อีกครั้งสิ่งนี้ไม่ทำงาน (บนเดเบียนฉันไม่พบวิธีแก้ไขไม่มี / etc / sysconfig / bash-prompt-screen) กดปุ่ม Enter ที่พรอมต์บนกล่อง Centos ฉันจะรีเซ็ตชื่อหน้าต่างให้ฉันทันที ฉันสามารถยกเลิกการตั้งค่า PROMPT_COMMAND ในระบบที่เป็นปัญหา แต่ฉันต้องทำอย่างนั้นในทุกระบบ preemptively ฉันแบ่งปันการเข้าสู่ระบบ (เป็น root ... ถอนหายใจ) กับคนอื่น ๆ จะต้องมีวิธีที่จะป้องกันหน้าจอตัวเองจากการปรับเปลี่ยนจากหน้าต่างลูกค้า (ถ้าไม่ฉันรู้สึกถึงปัญหาความปลอดภัย)
คณิตศาสตร์

2

ใน Centos นี้ได้รับการแก้ไขโดยการสร้าง / etc / sysconfig / bash-prompt-screen ซึ่งดำเนินการโดยค่าเริ่มต้น / etc / bashrc ถ้าคุณ

touch /etc/sysconfig/bash-prompt-screen
chmod +x /etc/sysconfig/bash-prompt-screen
exec bash

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

hardstatus alwaysignore ไม่ได้ผลสำหรับฉัน


ด้วย 4.06.02 (เวอร์ชันที่ฉันใช้อยู่) จะทำให้หน้าจอกินลำดับ esc เสมอแม้ว่าคุณจะสั่งพรอมต์ / อะไรก็ตามที่ส่ง
Ricky Beam

1

คุณกำลังพูดถึง "windows" อะไร

คัดกรองและบางทีเชลล์และกลุ่มส่งโค้ดแบบหลีกหนีภัยไปยังเทอร์มินัลสำหรับสิ่งเหล่านี้ เทอร์มินัลอีมูเลเตอร์บางคนไม่ค่อยเก่งในการจับพวกมันทั้งหมดและจะไป fubar เป็นหลัก แต่มันก็นานมาแล้วที่ฉันได้เห็นสิ่งนั้นเกิดขึ้น

ด้วยหน้าจอคุณสามารถตั้งค่าหัวเรื่องของหน้าต่างด้วยtitle <title>และตั้งค่าแบบเป็นโปรแกรม (โดยผูกกับคีย์หรือลำดับ ESC พิเศษ) ตามที่คุณต้องการ ในที่สุดโปรแกรมเหล่านี้ปล่อยลำดับไปยังสถานีของคุณ คุณสามารถใช้PROMPT_COMMANDตัวแปรสภาพแวดล้อมเพื่อเปลี่ยนแปลงสิ่งนี้แบบไดนามิกขึ้นอยู่กับตัวอย่างเช่น cwd ของคุณ นี่คือของฉันซึ่งเห็นได้ชัดว่าถูกกำหนดโดยระบบ / etc / bashrc ของฉัน

printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

ในการทำให้ชื่อหายไปอย่างสมบูรณ์คุณต้องทำสามอย่าง (อย่างน้อย):

  1. ปิดทั้งหมดยกเว้น 1 หน้าจอและยกเลิกการตั้งค่า PROMPT_COMMAND ที่พร้อมท์คำสั่งและ~/.profileหลังจาก/etc/bashrcโหลดเสร็จแล้ว
  2. ใช้titleคำสั่งของหน้าจอ ตีCtrl-Aแล้วนั้น: title ""<CR>คุณสามารถตั้งค่านี้ได้.screenrcเช่นกัน
  3. ส่งลำดับ null จากเปลือก:

    printf "\033]0;\033\\"
    

หากมีสิ่งอื่น (เช่นvim) กำลังตั้งค่าเราจะต้องทำการวิจัยเพิ่มเติม

ในหน้าหลักของหน้าจอมีส่วนหนึ่งของ TITLES ที่พวกเขาพูดถึงเรื่องนี้ในความยาว


1

ที่เกี่ยวข้องฉันพบว่าหลังจากตั้งค่าชื่อหน้าต่างของฉัน (และตรวจสอบให้แน่ใจว่า PROMPT_COMMAND ไม่มีการตั้งค่าและไม่มีสิ่งใดที่ไม่ดีอยู่ใน PS1 ของฉัน) การเปิดหน้าจอในบางระบบจะทำให้ชื่อหน้าต่างของฉันเปลี่ยนไป หลังจากการทดลองและความยุ่งยากมากมายในที่สุดฉันก็พบว่าโดยการคว้าไฟล์ / etc / screenrc ที่ติดตั้งมาจากแพคเกจหน้าจอจากระบบที่ไม่มีปัญหานี้และใช้มันเพื่อแทนที่ไฟล์เดียวกันบนระบบที่มีปัญหา ปัญหา. หน้าจอตอนนี้ไม่เปลี่ยนชื่อหน้าต่างของฉันอีกต่อไป ตอนนี้สิ่งที่บรรทัดหรือบรรทัดใน / etc / screenrc กำลังทำอยู่ที่ฉันไม่รู้ ความแตกต่างระหว่างสอง screenrc นั้นมีขนาดใหญ่มากและดังนั้นฉันจึงไม่ต้องแม้แต่จะพยายามฆ่ามัน

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