Powershell 美化作戰 —— 字型、執行原則和 oh-my-posh
最近在兩天內經歷了記憶體死去、系統毀損、機殼碎裂等等,終於電腦重灌。一堆設定都要重弄,正好也是個機會,這篇順手記一下常用好幫手 Powershell 的美化步驟。
先放一張施工後的圖鎮樓:
可以在開始圖示上用右鍵打開選單,之後點選 Powershell;或是 Win + X 打開選單,然後按 I 或 A (後者會以系統管理員身分開啟)就能開啟了。
如果選單打開還是 CMD 而不是 Powershell 的,可以先去切換成 Powershell,真的是比較好用啦(Windows Terminal 笑而不語)
剛打開的畫面是這樣的:
抱歉,光細明體我就不太行了。所以接下來就從字型這些內建設定開始!
基本設定
在上方的標題列按下右鍵,選擇內容
首先就讓我們修改字型,我這邊還是採用習慣的 更紗黑體。
另外還有一些推薦的字體,可以參閱前陣子整理的 Visual studio 環境設定 —— 字型、套件、快捷鍵。
補充:還有擴充了 Nerd Fonts 的等距更紗黑體:Sarasa-Gothic-Nerd-Fonts 可以選擇,Nerd Fonts 能提供許多精美的 icon 讓我們後續改主題的時候大大加分!
除了字型以外,我個人還推薦可以修改一個設定,保證質感 UPUP,那就是透明度
我個人習慣採用 80~85% 左右的透明度,搭配黑色背景。在桌面使用的時候看起來就像這樣:
可以拉回去和一開始的預設狀況做比較,透明感=質感。
另外,背景透明還有意想不到的好處,那就是——
打指令偷看可以不用切換視窗!
基於以上兩點,推薦可以調整透明度,找個適合自己的區間。但要注意,如果太透明的話會讓字跟背景糊在一起,很容易眼花,自己斟酌一下。
以上就做完了基本設定,沒意外要做兩次(一般身分和系統管理員)
安裝 posh-git
然而我們並不打算在此停止!因緣際會之下,我拜讀了這篇 使用 oh-my-posh 美化 PowerShell 樣式,頓時驚為天人,跟預設的(請自己再拉回去比對第一張圖)實在是相當有差距,於是當時就直接安裝下來了。
畢竟這是第二次安裝了,接下來的區段就記錄一下安裝 oh-my-posh 主題的流程。oh-my-posh 是受到 Linux 上 oh-my-zsh 的啟發誕生的,總之就是個挺讚讚的主題載入工具。
而且安裝相當方便,只需要從 Microsoft Store 或直接打 Install-Module
指令,就能從 PowerShell Gallery 把模組安裝下來囉!
在安裝 oh-my-posh 之前,由於顯示的內容包含 Git ,因此我們還要先下載另一個套件 posh-git
。讓我們用系統管理員身份開啟 Powershell,並輸入以下指令來進行安裝:
Install-Module posh-git
到這一步,會有幾種狀況:
- 提示安裝 NuGet:安裝就行了
- 提示不安全儲存庫:安啦,選是就對了
- 跳出錯誤,顯示「因為這個系統上已停用指令碼執行」云云,則接著看下一段落
- 什麼事都沒發生,很順利地裝好了,請跳過下一段落
執行原則
如果跳出「因為這個系統上已停用指令碼執行…」的情況,代表遇到執行原則的部份。因為安全性考量,預設是不能執行 Powershell 腳本的,連帶也不能使用 Install-Module 這類方法。
關於執行原則,可以參閱這篇 Windows PowerShell 基本操作 - 執行 Windows PowerShell 腳本 的說明。該系列也挺實用的,值得一看,這邊我們就節錄一段來說明執行原則的種類:
- Restricted :關閉腳本檔的執行功能,這是預設的設定值。
- AllSigned :只允許執行受信任發行者簽署過的腳本檔。
- RemoteSigned :在本機電腦所撰寫的腳本檔,不需要簽署就可執行;但是從網際網路(例如:email、MSN Messenger)下載的腳本檔就必須經過受信任發行者的簽署才能執行。
- Unrestricted :任何腳本檔皆可被執行,但是於執行網際網路下載的腳本檔時,會先出現警告的提示視窗。
如果要確認目前的執行原則,可以使用 Get-ExecutionPolicy
這個分類也是為了保護使用者,不要亂執行一些來路不行了奇怪腳本,整個電腦打包起來送人。不過我們身為 白目 工程師,難免會有要裝套件和自己寫腳本的時候,這邊就直接調整為 Unrestricted 全面開啟吧!
調整執行原則的語法如下(必須在系統管理員身分時才有效果呦)
Set-ExecutionPolicy Unrestricted
調整完就可以繼續下載囉!
像我重灌的狀況,提示會如下圖,如果已經安裝過 Nuget 提供者,提示應該會更少。
安裝 oh-my-posh
接著讓我們安裝 oh-my-posh:
Install-Module oh-my-posh
安裝完畢後就可以來試試看囉!
更新:Oh-my-posh 也可以從 Microsoft 搜尋並安裝囉!
設定主題
更新:由於 Oh-my-posh 設定主題的語法已經改變,因此移除 2020 時的內容,改為 2023 重灌電腦時找到的指令。
因為 Oh-my-posh 還蠻頻繁更新的,建議後續的操作可以開著 Oh My Posh 的官方文檔來排查一下
要更改主題的話,我們會需要使用 oh-my-posh init pwsh
這個指令,並且將該主題的 Json 檔案傳遞給 --config
,例如:
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/powerlevel10k_rainbow.omp.json" | Invoke-Expression
我們丟了一個 powerlevel10k_rainbow 這個主題的 Json 檔案路徑給 oh-my-posh,然後呼叫 Invoke-Expression
執行它,這時候主題就會變啦~
補充:這邊用到一組環境變數
$env:POSH_THEMES_PATH
實際上是一個資料夾路徑,Oh-my-posh 安裝的主題都會放在這個資料夾裡:如果你有自己下載的主題,可以也丟到
POSH_THEMES_PATH
的位置,或是直接更改--config
的路徑就可以了。
每個主題的樣式都不大一樣,可以翻一下 Oh-my-posh 的 Themes 頁面挑個喜歡的。
撰寫腳本
聰明的你一定發現了,每次重開都要重輸入一次 init
實在是很麻煩。因此我們接著要設定讓它能一打開就載入主題。
當 Powershell 開啟時,預設會去讀取使用者的設定檔(Profile),我們就是要把這些指定加到設定檔裡,讓 Powershell 一打開就能美美的。
在 Powershell 裡輸入 $PROFILE
就能取得當前的設定檔位置,通常來說會在 我的文件\WindowsPowerShell
底下。
補充:Powershell 啟動時會依序檢查四個位置來載入設定檔,分別為
- 所有使用者及所有 Shell:
$PSHOME\profile.ps1
- 所有使用者的 Powershell:
$PSHOME\Microsoft.PowerShell_profile.ps1
- 目前登入者的所有 Shell:
$Home\My Documents\WindowsPowerShell\profile.ps1
- 目前使用者的 Powershell:
$Home\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
其中的變數
$PSHOME
是指 Powershell 的安裝目錄,通常在 system32 的 WindowsPowerShell 底下$Home
則是使用者的主目錄,也就是大家熟悉的 users/{你的名稱}- 而前面提到的
$PROFILE
就是指「目前使用者的 Powershell」這組對設定檔有興趣的朋友可以參照保哥的文章及官方文檔:
接著我們就前往此處去修改 Powershell 的腳本,如果發現並沒有這個檔案,那還請自己建立一個,檔名和路徑請和 $PROFILE
一致,像我就取 Microsoft.PowerShell_profile.ps1
之後開啟檔案,貼上我們引入套件和設定主題的指令:
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/powerlevel10k_rainbow.omp.json" | Invoke-Expression
再次補充:oh-my-posh 改版之後一些語法有改變,如果有在
Set-Theme
這步的時候遇到「無法辨識…」問題的朋友,可以嘗試改成用Set-PoshPrompt -Theme Paradox
試試看。
接著讓我們重開 Powershell
可以看見它已經順利載入主題囉!
因為我覺得切主題前跑那些 Powershell 提示之類的有點醜,所以我會回去 Profile 補一行 Clear:
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/powerlevel10k_rainbow.omp.json" | Invoke-Expression
clear
也可以在這裡寫一些 function 來使用,像我個人之前做 我要訂便當 因為懶得每次都 cd 到腳本所在的位置還要 Pyhton 執行,所以就直接包成
Get-Bandon
的方法直接叫,真的舒服,推薦嘗試
如果有想要自己試試新增主題,或是想像我一樣做小修改的,可以到 $env:POSH_THEMES_PATH
這個路徑的資料夾,找到 .omp.json
檔案來動手
例如說把 powerlevel10k_rainbow.omp.json
開啟後,就可以看見組出那一串資訊的過程,也就可以隨意更改囉。我就特愛把一些 icon 都改成 °д°
,感覺活潑多了(?)
補充:該路徑會根據安裝
oh-my-posh
的位置而變動,基本上開 Powershell 直接從環境變數的路徑下去找比較快。真的找不到的話也可以下載別人的主題改一改,再修改 `–config`` 的路徑指到自己改好的 json 就好囉
順便提一下,載入使用者設定對用到 Powershell 的地方都有效喲!
例如 Visual Studio Code 的 Powershell
或是 Visual Studio 的開發人員用 Powershell
都是會吃到個人使用者的設定的。
那麼今天就到這裡,最後再把完成品跟預設狀況比對一次吧~
2023 回來更新文章,順便附個現況:
同場加映:
跟朋友志得意滿地說明了 Powershell 美化作戰後,對方只說了淡淡的一句
「哦,我都直接 Cmder」
那又是另一個故事了……
參考資料
其他文章
哈囉,如果你也有 LikeCoin,也覺得我的文章有幫上忙的話,還請不吝給我拍拍手呦,謝謝~ ;)