รับเทอร์มินัลสีที่ต่างกันโดยอัตโนมัติทุกครั้งที่ฉันเปิดเทอร์มินัล


14

ฉันมักจะพบว่าตัวเองเปิดเทอร์มินัลสามเครื่องและฉันชอบรูปลักษณ์และความรู้สึกของการมีจานสีที่แตกต่างกัน

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

ความคิดใด ๆ

ขอบคุณ!


เพิ่งแก้ไขคำตอบของฉันด้วยสคริปต์ที่ทำในสิ่งที่คุณต้องการ มันควรจะเพิ่มไปยังไฟล์. / bashrc หวังว่ามันจะเหมาะกับความต้องการของคุณ!
IanC

คำตอบ:


10

เวอร์ชั่นฟังก์ชั่น

คำแนะนำ:

สคริปต์พิจารณาว่าคุณใช้gnome-terminalซึ่งเป็นเทอร์มินัลเริ่มต้นของ Ubuntu

ก่อนเรียกใช้สคริปต์ให้เปิดgnome-terminalและสร้างโปรไฟล์ (แก้ไข> การตั้งค่า> โปรไฟล์) ด้วยการตั้งค่าที่แตกต่างกันตามที่คุณต้องการ (สีพื้นหลัง, สีข้อความ, .. ) คุณสามารถตั้งชื่อพวกเขาได้ Profile1, Profile2, Profile3 เป็นต้น สร้างโปรไฟล์มากพอที่จะครอบคลุมปริมาณเทอร์มินัลที่จะเปิด แต่ถ้าเปิดเทอร์มินัลจำนวนมากขึ้นโปรไฟล์เริ่มต้นจะถูกใช้

สคริปต์สร้างไฟล์~ / .Bash_Color_Changerซึ่งขึ้นอยู่กับมันเพราะมันจะบอกสคริปต์ว่าเทอร์มินัลนั้นถูกเปิดเป็นประจำหรือหลังจากมีการเรียกใช้. bashrc

เพิ่มสคริปต์ที่ท้ายไฟล์ ~ / .bashrc ของคุณ

สคริปต์:

เพิ่มไปที่.bashrc:

#Change color according to the number of Bash shells opened
#Creates the .Bash_Color_Changer file if it's not present
if ! [ -f ~/.Bash_Color_Changer ]; then
    echo ORIGINAL > ~/.Bash_Color_Changer
fi

#Array holding the name of the profiles: Substitute it for the names you're using
Color_counter=(Profile1 Profile2 Profile3)
#Finds out the number of opened bashs counting the lines containing "bash"
#in the pstree function. (-c deactivates compact display to avoid it showing
#lines with "2*[bash]" instead of one for each bash)
Number_of_bashs=$(($(pstree -c | grep "bash" | wc -l)-1))

#Checks if the terminal being opened was opened by the user or by
#the script, and act according to it
if [ $(cat ~/.Bash_Color_Changer) = ORIGINAL ]; then 
    if ((Number_of_bashs < ${#Color_counter[*]})); then
        echo COPY > ~/.Bash_Color_Changer
        gnome-terminal --tab-with-profile-internal-id=${Color_counter[${Number_of_bashs}]} 
        exit
    fi
else 
    echo ORIGINAL > ~/.Bash_Color_Changer
fi

ผ่านการทดสอบแล้ว แต่ไม่ครอบคลุม สนุก!


ไอเดียสำหรับวันพรุ่งนี้คือการเพิ่มเงื่อนไขสำหรับการขึ้นอยู่กับไฟล์บางอย่างเช่นexit ~/bashcolor.txtอาจมีบรรทัดที่จะบอกว่าถ้าทุบตีที่เปิดอยู่เป็น "ต้นฉบับ" หรือ "คัดลอก" ดังนั้นหากcat ~/bashcolor.txtผลตอบแทน "ต้นฉบับที่" คำสั่งการเรียกใช้และexit echo COPY > ~/bashcolor.txtอื่นทางออกไม่ได้ทำงาน แต่ไฟล์กลับไปที่เดิม ( echo ORIGINAL > ~/bashcolor.txt) มันจะแก้ปัญหาขั้วที่กระพริบ
IanC

สคริปต์ที่สนุกที่จะทำอาจใช้ด้วยตนเอง :) ยินดีรับคำแนะนำการปรับปรุงใด ๆ !
IanC

งานนี้เชื่อถือได้ +1
boomt14

2
ฉันทำการเปลี่ยนแปลง 1 ครั้งในเวอร์ชันของฉัน ... วิธีนี้ทำให้ขี่จักรยานเมื่อคุณเปิดเทอร์มินัลมากกว่าที่คุณมีโปรไฟล์ Number_of_bashs=$(($(($(pstree -c | grep "bash" | wc -l)-1))%${#Color_counter[@]}))
kpie

ดี! ฉันไม่ได้ใช้โมดูลัสเพื่อรักษาวงจรการวนซ้ำ: p
IanC

9

ตัวเลือกหนึ่งอาจใช้งานxfce4-terminalได้ มันคล้ายกับเทอร์มินัลเริ่มต้นของ Ubuntu (ซึ่งก็คือgnome-terminal) และแพ็คเกจการพึ่งพาจำนวนมากใช้ส่วนประกอบ gtk ซึ่งทำให้เป็นทางเลือกที่เหมาะสม

ก่อนติดตั้งด้วย

sudo apt-get install xfce4-terminal

จากนั้นเปิดมันไปที่แก้ไข -> การตั้งค่าเลือกแท็บสีและตรวจสอบตัวเลือกที่ระบุว่าสีพื้นหลังแตกต่างกันสำหรับแต่ละแท็บและออกทันที

ทำให้เทอร์มินัลเริ่มต้นxfce4-terminalหรือเปลี่ยนทางลัดของCtrl-Alt-Tเพื่อเปิด

ตอนนี้ทุกครั้งที่คุณเปิดคุณจะพบกับจานสีที่แตกต่างกัน ขั้วสีที่แตกต่างกัน

ลิงค์ที่มีประโยชน์:


5

ฮ่าฮ่าน่าสนใจมาก ฉันอาจลองทำสิ่งนี้เช่นกัน ฉันมักเรียกใช้เทอร์มินัลหลายตัวและเบราว์เซอร์เท่านั้น

ดังนั้นผมจึงมองไปรอบ ๆ และพบนี้ - https://github.com/sos4nt/dynamic-colors โปรเจ็กต์เล็ก ๆ ที่ประณีตมากที่จะช่วยให้คุณบรรลุส่วนที่คุณต้องการ

ในไดเรกทอรีcolorschemes/ของโครงการนั้นคุณจะเห็นว่าในปัจจุบันมีโครงร่างสี 4 แบบ คุณสามารถเพิ่มได้มากเท่าที่คุณต้องการ / ต้องการ

ดังนั้นเพื่อให้ได้ทุกขั้วให้เลือกสีโทนที่แตกต่างกันฉันจะเพิ่มฟังก์ชั่นของฉัน.bash_profileหรือ.bashrcหรือที่ใดก็ตามเช่นว่าฟังก์ชั่นไม่สองสิ่ง:

  1. พิจารณาจำนวนเทอร์มินัลที่กำลังทำงานอยู่
  2. ออกdynamic-colors switch colorscheme-nameคำสั่งตาม (1)

หวังว่านี่จะช่วยได้!

ป.ล. ฉันจะเขียนบทให้คุณ แต่ฉันเกลียดการให้อาหารช้อนและฉันขี้เกียจ :)


สิ่งที่ดี ... การสร้าง wrapper / alias ไปยังคำสั่ง terminal จะประสบความสำเร็จ
Vishnu Kumar

@VishnuKumar ใช่นี่คือสิ่งแรกที่มาถึงใจแม้ว่ามันอาจจะไม่ใช่ทางออกที่ดีที่สุด ดีใจที่คุณชอบมัน
theabhinavdas

+1 สำหรับคำตอบที่ตกลงฉันไม่ต้องการต่อสู้กับ "งาน" แต่คำตอบนี้ต้องการให้ฉันใช้คำจำกัดความสไตล์ที่เป็นกรรมสิทธิ์ใช้โครงการไดนามิก - สีของฉันนอกจากนี้ (และนี่คือสิ่งที่ทำให้ฉันได้จริง) มันไม่ได้ สนับสนุนความทึบ: (ฉันรู้สึกว่าคำตอบควรเกี่ยวข้องกับการรวมกันของgnome-terminal --load-config=FILE
kpie

@kpie ฮ่าฮ่า ไม่มีความยุติธรรมความทึบไม่ได้ถูกกล่าวถึงในคำถาม นอกจากนี้ยังเป็นการยากที่จะตั้งค่าความทึบจากบรรทัดคำสั่งและขึ้นอยู่กับสิ่งต่างๆมากมาย นอกจากนี้คำถามนี้อาจตอบได้หลายวิธี แต่ฉันคิดว่าคำตอบของฉันค่อนข้างสะดวก (ถ้าสำหรับฉันฮ่าฮ่า) :)
theabhinavdas

ฉันหวังว่าฉันสามารถชดเชยการเก็บแบบถักได้โดยการให้สคริปต์ที่ต้องการ ... github.com/Krewn/stylingTerminalOnOpenและฉันควรระบุว่าไม่รองรับความทึบของตัวแปรชุดสีจะรักษาความทึบของโปรไฟล์เริ่มต้นของคุณ
kpie

1

Konsole รองรับฟังก์ชั่นนี้จริง ๆ Konsole นั้นทรงพลังและสามารถปรับแต่งได้อย่างแท้จริง

หากคุณไม่มี Konsole แล้วก็ง่ายๆ sudo apt install konsole

  1. ไปที่การตั้งค่า
  2. การตั้งค่า Konsole
  3. เลือกแท็บลักษณะที่ปรากฏ
  4. เลือกชุดรูปแบบสีของคุณ
  5. เลือก "แก้ไข" ทางด้านขวา
  6. มีกล่องสำหรับตั้งค่า "เปลี่ยนสีพื้นหลังสำหรับแต่ละแท็บ"

ยิ่งไปกว่านั้นหากคุณกำลังทำงานกับเซิร์ฟเวอร์สามเครื่องในเวลาเดียวกันคุณสามารถรวมนามแฝงที่ดีได้ที่นี่


+1 สำหรับคำตอบที่ใช้ได้ แต่ฉันไม่มี konsole @ <MemoryAddress> คำตอบของรองรับเทอร์มินัลอินเทอร์เฟซเพิ่มเติม (ใด ๆ ที่สนับสนุนลำดับหนี OSC) แต่คุณใช้ง่ายกว่า ฉันจะให้รางวัลกับใครก็ตามที่มีคะแนนมากที่สุดในสองสามวัน ขอบคุณสำหรับคำตอบ!
kpie

คุณจะประหลาดใจที่มีคนจำนวนมากที่แสดงความคิดเห็นที่นี่จริง ๆ บอกฉันฉันต้องบอกวิธีติดตั้ง -_-
Matt O.

คุณอ่านความคิดเห็นในคำตอบอื่น ๆ หรือไม่?
kpie

ฉันทำ. บางทีฉันอาจขาดอะไรบางอย่าง แต่คุณกำลังมองหาความทึบตัวแปรและสิ่งที่ไม่ต้องการนามแฝง Konsole ประสบความสำเร็จทั้งสองอย่างนี้ แต่ฉันไม่แน่ใจเกี่ยวกับลำดับการหลบหนี
Matt O.

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