Supakarin Niansupornpun
Thinc.
Published in
4 min readMay 5, 2022

--

มาแต่ง Terminal ด้วย oh-my-posh กันเถอะ (powershell และ zsh)

สำหรับบทความนี้ก็เป็นบทความแรกของผมนะครับผมซึ่งก็เขียนช่วงใกล้สอบด้วยเพราะอ่านหนังสือเบื่อๆ เลยหาอะไรทำ😅

oh-my-posh

เกริ่มก่อนนะครับ (ตรงนี้ขก.อ่านข้ามเลยนะครับ) ก่อนหน้านี้ผมพยายามหาวิธีในการแต่งตัว terminal ของผมเองทั้งใน Windows แล้วก็ Mac ด้วยซึ่งด้วยความที่ macOS เป็น UNIX ก็จะพอมี shell ทางเลือกอื่นๆให้ใช้บ้างเช่น bash, zsh หรือ fish ซึ่งตอนแรกผมก็ไปเลือกใช้ fish เพราะ มีธีมสวนแถมยังมี auto complete อีกต่างหาก แต่ก็ต้องมาเจอปัญหาว่ามันไม่รองรับ POSIX เอาจริงๆปกติก็ไม่ค่อยได้ใช้หรอก แต่พอถึงคราวที่ต้องใช้ก็ต้องมาปวดหัวเปิดเน็ตหาวิธีอื่นๆมาใช้แทนอีก ไม่ต้องพูดถึงตัว Windows ที่ตัว terminal ก็มีให้ใช้หลักๆแค่ powershell ซึ่งก็ไม่ค่อยมีอะไรซัพพอร์ตด้วย

สุดท้ายผมก็มาเจอ oh-my-posh นี่แหละ ตอนนี้ก็ติดงอมแงมเลยเพราะมีความยืดหยุ่น ลูกเล่นเยอะ แถมยังเป็น open source เราก็สามารถเขียน segment หรือ ธีมเพิ่มเติมเองได้ด้วย

ปล.​สำหรับตัว macOS ในบทความนี้ผมจะใช้ itermนะครับเพราะ config ฟอนต์ใน terminal ธรรมดาไม่ไหวจริง ๆ

ติดตั้ง oh-my-posh

ก่อนอื่นเรามาลง oh-my-posh กันก่อนเลยซึ่งจริงๆมีวิธีลงหลายวิธีนะ ใครอยากลองวิธีอื่นก็เปิดจากใน docs ได้เลย

Windows

ก่อนอื่นเปิด powershell หรือ Windows Terminal (แนะนำ) ขึ้นมาก่อน จากนั้นก็ install oh-my-posh ด้วยคำสั่ง

winget install JanDeDobbeleer.OhMyPosh -s winget

ทดสอบด้วย

(Get-Command oh-my-posh).Source

จะต้องได้ path ของโปรแกรมออกมา

สำหรับเวลา upgrade ให้ใช้ คำสั่ง

winget upgrade JanDeDobbeleer.OhMyPosh -s winget

macOS

สำหรับ mac อันนี้จะลงผ่าน Homebrew นะครับใครยังไม่ก็ลง ก่อนตามนี้เลย ใครมีแล้วข้ามไปลง oh-my-posh ได้เลยครับ

brew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

ทดสอบด้วย

brew -v
ตัวอย่าง brew -v

ถ้ามี version ออกมาแปลว่าใช้ได้

จากนั้นลง oh-my-posh

brew install jandedobbeleer/oh-my-posh/oh-my-posh

สำหรับเวลา upgrade ให้ใช้ คำสั่ง

brew update && brew upgrade oh-my-posh

Init oh-my-posh

เราจะมา เริ่มใช้งานกัน

สำหรับ windows รัน

oh-my-posh init pwsh | Invoke-Expression

ส่วน macOS (zsh)

eval "$(oh-my-posh init zsh)"
ตัวหนังสืออ่านไม่ออกยังไม่เป็นไร

เราก็จะเห็น terminal สวยๆกันแล้ววว!!!

แต่ว่าจะสังเกตุว่ายังใช้งานไม่ได้เพราะเวลาเรา ปิดเปิด terminal ใหม่มันก็จะกลับไปเป็นเหมือนเดิม งั้นสิ่งที่ต้องทำคือ เราต้องรัน script นี้ทุกครั้งที่จะใช้หรอ? คำตอบคือไม่ต้องครับ ปกติแล้วจะมีไฟล์ที่ ตัว shell จะเข้าไปรันก่อนทำงานทุกครั้งเราแค่ เข้าไปเพิ่ม script ในไฟล์นั้นก็เรียบร้อย

สำหรับ windows

notepad $PROFILE

ถ้าเปิดครั้งแรกมันจะขอสร้างไฟล์ เราก็ตอบตกลงไป ในที่นี้ใครมี text editor ตัวอื่นก็ใช้ได้นะ vim, nvim, lvim, หรือ vscode แต่ notepad น่าจะมีทุกเครื่อง จากนั้นแทรก script เข้าไปสักบรรทัด

oh-my-posh init pwsh | Invoke-Expression

จากนั้น save file กลับมาหน้า terminal รันคำสั่ง

. $PROFILE

ก็ใช้งานได้เรียบร้อย

สำหรับ macOS

nano ~/.zshrc

อันนี้ก็เหมือนกัน ถ้าใครใช้ text editor ตัวอื่นก็ได้เลย จากนั้นแทรก script เข้าไป

eval "$(oh-my-posh init zsh)"
ไว้บรรทัดล่างสุดก็ได้

กด control + x แล้วกด y เพื่อเซฟ

จากนั้น save file กลับมาหน้า terminal รันคำสั่ง

exec zsh

ก็ใช้งานได้เรียบร้อย

ถึงตรงนี้ทุกคนน่าจะเห็นแถบสีๆมีตัวหนังสือกันแล้ว แต่น่าจะติดปัญหาว่ามันเป็นตัวหนังสือประหลาดๆ นั้นเพราะว่าเรายังไม่ได้ลง ฟอนต์ นั้นเอง โดยฟอนต์ที่เราจะใช้เป็นพวกตะกูล Nerd fonts ซึ่งคือฟอนต์ที่มีพวกไอคอน หรือบางตัวก็จะมี ligatures อยู่ด้วย

เลือกโหลดอันนี้ชอบตรงนี้เลย กดตรงนี้

อันนี้กดโหลดแล้วลงเหมือนฟอนต์ปกติเลย

จากนั้นเราก็มาเปิดใช้ฟอนต์ใน terminal

Windows ( Windows Terminal )

กดตรงเครื่องหมาย ลูกศรลงไปที่ Settings หรือ กด Ctrl + ,

กดไปที่ Windows PowerShell >> Appearance

เปลี่ยนเป็น Nerd Font

ผลลัพธ์ที่ได้

macOS ( iTerm )

ปล.อีกรอบนะครับเพื่อใครไม่ได้อ่านข้างบนว่า terminal ใน mac ผมใช้ iterm นะ!!!

เข้าไปที่ preferences หรือ กด command + ,

เลือก Profile >> Text >> Font จากนัดเลือก Nerd Font ที่เราโหลดมา ปรับขนาดอะไรตามใจชอบเลย

สุดท้ายจะได้ประมาณนี้

เป็นอันเรียบร้อยแค่นี้ก็ใช้งานได้แล้ว แต่สำหรับคนที่ไม่ชอบธีม default เราก็มาเลือกธีมกันต่อเลย

ได้เวลามาเลือกธีมกัน

หลังจากที่เราติดตั้ง init oh-my-posh เรียบร้อยแล้วเราก็มาเลือกธีมกัน ซึ่งกดเลือกธีม ตรงนี้เลย

theme example
ตัวอย่างธีม

สำหรับ Windows เราสามารถรันคำสั่ง

Get-PoshThemes

เพื่อดูพรีวิวของแต่ละธีมใน terminal ของเราได้

ตัวอย่าง Get-PoshThemes

ตรงนี้ก็ลองเลื่อนหาดูว่าอยากได้อันไหนก็กดเข้าไปเลย พอเรากดไปมันก็จะเด้งไปที่หน้า repo github ของธีมนั้นๆ แบบนี้ (อันนี้เราเลือก M365Princess)

กดตรง Raw

จากนั้นคัดลอก url ด้านบนมา

กลับไปเปิดไฟล์ script init เพิ่ม flag --config แบบนี้

--config 'https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/M365Princess.omp.json'

จะได้คำสั่งที่เป็น

Windows

oh-my-posh init pwsh --config 'https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/M365Princess.omp.json' | Invoke-Expression

macOS

eval "$(oh-my-posh init zsh --config 'https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/M365Princess.omp.json')"

เท่านี้ก็ได้เรียบร้อย

windows
macOS

สำหรับอันบทความนี้ก็จบเท่านี้แล้วนะคร้าบ จริงตัว oh-my-posh เราสามารถ customize เป็น theme ของตัวเองได้หรือเขียนโค้ดเพิ่มลูกเล่นแปลกเองได้ด้วยโดยจะใช้เป็นภาษา Go แล้วก็จะมีกฎในการ PR ต่างๆอันนี้ใครสนใจอ่านเพิ่มเติมจาก docs ได้เลยนะครับ

แถมให้นะครับสำหรับคนที่ใช้ zsh อยู่แล้วต้องการพวก auto complete ก็จะมี fig.io ก็เป็นอีกหนึ่งของเล่นที่ทรงพลังมากเลยครับยิ่งมารวมกับ oh-my-posh แล้วคือสวยมากเลย

ตัวอย่าง fig

ยังไงก็บทความนี้เป็นบทความแรกที่ผมเขียนนะครับ ถ้าเกิดว่ามีข้อผิดพลาดยังไงก็ขออภัยด้วยนะครับ ไว้เจอกันบทความหน้าครับ Bye ~~~

References

--

--

Supakarin Niansupornpun
Thinc.
Writer for

Just the ordinary guys who want to be extraordinary.