คำสั่ง OS X Terminal เพื่อเปลี่ยนธีมสี


17

มีคำสั่งที่สามารถใช้เปลี่ยนโทนสีของ Mac OS X Terminal ได้หรือไม่? ฉันชอบความคิดที่จะสามารถเปลี่ยนสีได้ตามสคริปต์ที่ฉันเรียกใช้ จนถึงตอนนี้ฉันเพิ่งเปลี่ยนสีของ bash prompt ของฉันกับ PS1 ซึ่งก็โอเค แต่ก็ไม่ได้สังเกตได้อย่างที่ฉันต้องการ


สิ่งที่ฉันต้องการจะทำคือการเปลี่ยนสีพื้นหลังของเทอร์มินัลเหมือนที่มันจะเปลี่ยนไปในลักษณะเดียวกันTerminal -> Preferences -> Settingsยกเว้นฉันต้องการทำสิ่งนี้ด้วยคำสั่ง changeBackgroundTheme; ssh; changeBackgroundThemeผมต้องการสร้างสคริปต์ที่จะมีลักษณะเช่นนี้: นี่จะช่วยเตือนฉันว่ามีหน้าต่างใดsshบ้างในขณะนี้
sixtyfootersdude

คำตอบ:


18

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

ชุดนี้เป็นการตั้งค่าแท็บทั้งหมดที่ใช้ Python (ไม่มีเซิร์ฟเวอร์ SSH สำหรับการทดสอบในขณะนี้) เป็น Homebrew, อื่น ๆ เป็น Ocean:

tell application "Terminal"
    repeat with w from 1 to count windows
        repeat with t from 1 to count tabs of window w
            if processes of tab t of window w contains "Python" then
                set current settings of tab t of window w to (first settings set whose name is "Homebrew")
            else
                set current settings of tab t of window w to (first settings set whose name is "Ocean")
            end if
        end repeat
    end repeat
end tell

บันทึกเป็นสคริปต์และเรียกใช้เป็นosascript Name.scptทุกเวลาที่คุณต้องการเปลี่ยนสีเปลือกของคุณ (แน่นอนคุณสามารถล้อมสิ่งนี้เป็นสคริปต์เปลือกหรือบางสิ่งบางอย่าง)

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

if busy of tab t of window w is true then


หรือคุณสามารถกำหนดสไตล์ของแท็บเดียวโดยเลือกด้วยตนเอง:

on run argv
    tell application "Terminal" to set current settings of tab (item 1 of argv as number) of front window to first settings set whose name is (item 2 of argv)
end run

เรียกใช้เช่นนี้:

osascript StyleTerm.scpt 3 Homebrew

-> แท็บที่สามของหน้าต่างเทอร์มินัลด้านหน้ารับสไตล์ Homebrew!

หากคุณต้องการแก้ไขหน้าต่างพื้นหลังให้แทนที่ "หน้าต่างด้านหน้า" ด้วยนิพจน์ที่อยู่ในวงเล็บเช่นหลัง "แท็บ" หากคุณเคยต้องการที่จะปรับเปลี่ยนการเลือกแท็บ "ปัจจุบัน" ใช้แทนselected tabtab (item 1 of argv as number)


เพิ่มสิ่งต่อไปนี้ให้กับคุณ.bash_profileหากวิธีแก้ปัญหาแรกนั้นใช้แรงงานคนมากเกินไปสำหรับคุณ:

PROMPT_COMMAND='osascript "/path/to/Name.scpt"'

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


6

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

#!/bin/bash
tput setab 6
tput clear
tput setaf 14
echo Hello World

คุณสามารถดูข้อมูลเพิ่มเติมเกี่ยวกับสิ่งนี้ได้ในman 5 terminfoส่วนที่เรียกว่า "การจัดการสี"

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

#!/bin/bash
printf "\033[48;5;6m"  # or "\033[46m"
printf "\033[H\033[2J" # your system's clear command does something similar
printf "\033[38;5;14m" # or "\033[96m"
echo Hello World

มีข้อมูลเพิ่มเติมเกี่ยวกับลำดับการควบคุม xterm ที่นี่


ดูเหมือนว่าจะมีผลกระทบกับสี แต่ setaf ดูเหมือนจะไม่ทำอะไรเลยสำหรับฉัน สิ่งที่ฉันชอบจริงๆคือสิ่งที่เปลี่ยนธีมเทอร์มินัล Mac OS อย่างเช่น waiwai แนะนำ แต่โดยทางโปรแกรมและไม่ได้ใช้ GUI
satur9nine

มีวิธีในการเปลี่ยนชุดรูปแบบที่ใช้คล้ายกับTerminal -> Preferences -> Settingsหรือไม่
sixtyfootersdude

@sixtyfootersdude: อาจมีวิธีการทำเช่นนั้นosascriptแต่ฉันไม่คุ้นเคยกับมัน
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

1

คุณสามารถใช้ applescript เพื่อให้ธีมสุ่มทุกเทอร์มินัลใหม่

แก้ไขของคุณ.bash_profileและเพิ่มคำสั่งนี้

osascript -e "tell application \"Terminal\" to set current settings of front window to some settings set"

หากคุณได้รับเทอร์มินัลธีมแบบสุ่มคุณสามารถกด ⌘Iและตั้งค่าได้ด้วยตนเอง

สิ่งนี้มีประโยชน์มากขึ้นถ้าคุณได้รับธีมของเทอร์มินัลที่ดูแตกต่างกันมากมาย มีหลายเว็บไซต์ที่ถ้าคุณมองไปรอบ ๆ


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