윈도우에서 파워쉘을 꾸며보자

Jul 7, 2023 | 0 comments

개요

윈도우에서 개발 관련 작업이 많다 보니 단순 명령 프롬프트가 아니라 윈도우 터미널을 별도 설치해서 사용하고 있습니다.
터미널의 파워쉘 프로필의 경우 일부 명령어를 색상으로 구분해 주기도 하고 그 외 추가 기능이 필요해 사용합니다.
최근에 구글링을 하던 중 개발 관련 답변의 스크린샷으로 터미널이 뭔가 독특한걸 알게 되었고
뭔가 더 멋져 보인다고 해야 하나? 아무튼 비주얼에 혹해서 관련 구글링을 해보니 이미 예전부터 많은 사람들이 사용하고 있는 방법이 있었습니다.
지금부터 그 과정에 대해 설명하겠습니다. 구글링해서 찾은 방법 중에 현재 시점에 일부 변경된 부분도 있어 기록으로 남기고자 합니다.
다음 그림을 보시면 적용 전 과 후를 비교하실 수 있습니다. 어떤 테마를 적용하는지에 따라 많이 다를 수 도 있습니다.

사전 설치

윈도우 터미널

아래 Github 에서 윈도우 터미널을 설치하시면 됩니다.
제 경우는 Preview 버전을 사용하고 있지만 아직 특별한 이슈는 없었습니다.

파워쉘

아래 Github 에서 파워쉘을 설치합니다.
저의 경우 64비트 윈도우 버전을 설치하였습니다.

Oh My Posh 설치

파워쉘 렌더링을 커스터 마이징 합니다.
테마와 비슷한 개념이라 생각하시면 됩니다.
파워쉘에서 다음과 같이 입력해서 설치합니다.

winget install JanDeDobbeleer.OhMyPosh -s winget

다음과 같이 설치 성공 메세지를 확인합니다.

C:\Repo\CloudWatch [master ≡]> winget install JanDeDobbeleer.OhMyPosh -s winget
찾음 Oh My Posh [JanDeDobbeleer.OhMyPosh] 버전 17.6.0
이 응용 프로그램의 라이선스는 그 소유자가 사용자에게 부여했습니다.
Microsoft는 타사 패키지에 대한 책임을 지지 않고 라이선스를 부여하지도 않습니다.
다운로드 중 https://github.com/JanDeDobbeleer/oh-my-posh/releases/download/v17.6.0/install-amd64.exe
  ██████████████████████████████  6.16 MB / 6.16 MB
설치 관리자 해시를 확인했습니다.
패키지 설치를 시작하는 중...
설치 성공

파워쉘에서 필요한 모듈을 추가 설치합니다.

터미널 미리 보기 실행

시작 버튼을 클릭해서 터미널 미리 보기를 찾은 다음 실행합니다.
(반드시 관리자 권한으로 실행하셔야 합니다. 모듈 설치 시 관리자 권한을 필요로 합니다.)

정식 버전과 Preview 버전의 차이는 아이콘으로 구분이 가능합니다.

posh-git 모듈 설치

Git 관련 정보를 터미널에서 보여주기 위한 모듈입니다.
파워쉘에서 다음과 같이 입력해서 설치합니다.

Install-Module -Name posh-git

모듈 설치 전에 NuGet 도 설치가 되는 것을 확인하실 수 있습니다.
모두 Y 를 입력해서 설치하시면 됩니다.

PS C:\Repo\CloudWatch> Install-Module -Name posh-git                                                                                                                                                                                            계속하려면 NuGet 공급자가 필요합니다.
NuGet 기반 리포지토리를 조작하려면 PowerShellGet에 NuGet 공급자 버전 '2.8.5.201' 이상이 필요합니다. 'C:\Program
Files\PackageManagement\ProviderAssemblies' 또는
'C:\Users\kkomz\AppData\Local\PackageManagement\ProviderAssemblies'에서 NuGet 공급자를 사용할 수 있어야 합니다. 또한
'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'를 실행하여 NuGet 공급자를 설치할 수 있습니다.
지금 PowerShellGet에서 NuGet 공급자를 설치하고 가져오시겠습니까?
[Y] 예(Y)  [N] 아니요(N)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "Y"):

신뢰할 수 없는 리포지토리
신뢰할 수 없는 리포지토리에서 모듈을 설치하는 중입니다. 이 리포지토리를 신뢰하는 경우 Set-PSRepository cmdlet을
실행하여 InstallationPolicy 값을 변경하십시오. 'PSGallery'에서 모듈을 설치하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): Y
PS C:\Repo\CloudWatch>

Terminal-Icons 모듈 설치

폴더 및 알려진 파일 형식에 따라 아이콘으로 표시해 주는 역활을 합니다
파워쉘에서 다음과 같이 입력해서 설치합니다.

Install-Module -Name Terminal-Icons

Y 를 입력해서 설치하시면 됩니다.

PS C:\Repo\CloudWatch> Install-Module -Name Terminal-Icons

신뢰할 수 없는 리포지토리
신뢰할 수 없는 리포지토리에서 모듈을 설치하는 중입니다. 이 리포지토리를 신뢰하는 경우 Set-PSRepository cmdlet을
실행하여 InstallationPolicy 값을 변경하십시오. 'PSGallery'에서 모듈을 설치하시겠습니까?
[Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): Y
PS C:\Repo\CloudWatch>

Nerd Font 설치

파워쉘에서 아이콘을 표시하기 위해 특정 심볼을 포함하는 폰트를 추가로 설치해야 합니다.

다음 링크(Nerd Fonts – Iconic font aggregator, glyphs/icons collection, & fonts patcher) 에서 첫번째로 보이는
3270 Nerd Font 를 다운로드 한 다음 압축을 해제해서 3270NerdFont-Regular.ttf 폰트만 설치합니다.

파워쉘 프로필에 폰트 적용

터미널 설정으로 들어간 다음 파워쉘 프로필로 이동합니다.

스크롤을 좀 더 내려 보면 하단에 추가 설정 중에 모양을 선택합니다.

글꼴을 선택해서 좀 전에 설치한 3210 Nerd Font 로 지정한 다음 저장 버튼을 클릭해서 저장합니다.

Oh My Posh 테마 파일 다운로드

다음 링크(Themes | Oh My Posh)에 보시면 많은 분들이 공유한 설정 파일이 있습니다.
기능 적인 부분이나 디자인이 조금이 상이하니 맘에 드는 파일을 선택해서 다운로드 합니다.
이 후에 테마를 실시간으로 변경하면서 확인하는 방법이 있으니 맘에 드는 것으로 여러 개를 다운로드 합니다.
참고로 테마 이름에 minimal 이 포함된 경우는 Nerd Font 가 필요하지 않은 테마라고 합니다.

파워쉘 실행시 초기 스크립트 지정

파워쉘이 매번 실행될 때마다 지정된 모듈을 불러오는 등의 초기 스크립트를 지정해야 합니다.
그래서 프로필 경로를 다음과 같이 확인해서 스크립트 파일을 생성하겠습니다.

파워쉘에서 다음과 같이 입력하면 프로필 경로를 확인할 수 있습니다.

$PROFILE | Format-List -Force

CurrentUserCurrentHost 경로를 확인합니다.

PS C:\Repo\CloudWatch> $PROFILE | Format-List -Force


AllUsersAllHosts       : C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1
AllUsersCurrentHost    : C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts    : C:\Users\kkomz\Documents\WindowsPowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\kkomz\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Length                 : 75

파워쉘에서 다음과 같이 입력하면 CurrentUserCurrentHost 경로에 새 파일이 생성됩니다.

New-Item -Path $PROFILE -Type File -Force

다음과 같이 빈 파일이 생성됩니다.

PS C:\Repo\CloudWatch> New-Item -Path $PROFILE -Type File -Force


    디렉터리: C:\Users\kkomz\Documents\WindowsPowerShell


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----      2023-07-07   오후 6:20              0 Microsoft.PowerShell_profile.ps1


PS C:\Repo\CloudWatch>

해당 경로에 가서 파일의 내용을 수정합니다.
Set oh-my-posh profile 영역은 테마에 따라 주석을 설정 또는 해제하시면 됩니다.
일단 다음과 같이 파일을 작성한 다음 저장합니다.
테마 파일의 저장 경로는 본인에 맞게 수정하시면 됩니다.
그리고 저의 경우 dotnet run 명령을 자주 사용하는 관계로 단축키도 지정해 주었습니다.

# Import module
Import-Module posh-git
Import-Module -Name Terminal-Icons

# Set oh-my-posh profile
# oh-my-posh init pwsh --config "D:\Program Files\PowerShellTheme\cobalt2.omp.json" | Invoke-Expression
# oh-my-posh init pwsh --config "D:\Program Files\PowerShellTheme\dominikjeske.json" | Invoke-Expression
# oh-my-posh init pwsh --config "D:\Program Files\PowerShellTheme\dracula.omp.json" | Invoke-Expression
# oh-my-posh init pwsh --config "D:\Program Files\PowerShellTheme\emodipt-extend.omp.json" | Invoke-Expression
# oh-my-posh init pwsh --config "D:\Program Files\PowerShellTheme\fish.omp.json" | Invoke-Expression
oh-my-posh init pwsh --config "D:\Program Files\PowerShellTheme\gmay.omp.json" | Invoke-Expression
# oh-my-posh init pwsh --config "D:\Program Files\PowerShellTheme\hotstick.minimal.omp.json" | Invoke-Expression

# PowerShell parameter completion shim for the dotnet CLI
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock {
    param($commandName, $wordToComplete, $cursorPosition)
        dotnet complete --position $cursorPosition "$wordToComplete" | ForEach-Object {
           [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
        }
}

# Shorcuts for our commands
Set-PSReadLineKeyHandler -Key Ctrl+Shift+r `
                         -BriefDescription RunCurrentDirectory `
                         -LongDescription "dotnet Run the current directory" `
                         -ScriptBlock {
    [Microsoft.PowerShell.PSConsoleReadLine]::RevertLine()
    [Microsoft.PowerShell.PSConsoleReadLine]::Insert("dotnet run")
    [Microsoft.PowerShell.PSConsoleReadLine]::AcceptLine()
}

그리고, 열린 터미널을 모두 종료하고 새로 터미널을 실행합니다.
다음과 같이 변경된 것을 확인하실 수 있습니다.

테마 선택

작성된 스크립트 중에 다른 테마로 변경하고자 하는 경우 다음과 같이 다른 테마 파일을 적용하는 스크립트를 입력합니다.

oh-my-posh init pwsh --config "D:\Program Files\PowerShellTheme\cobalt2.omp.json" | Invoke-Expression

그러면 다음과 같이 즉시 반영되는 것을 확인하실 수 있습니다.
에러가 나는 부분은 아직 확인해 보지 않아서 여기 서는 그냥 넘어가겠습니다.

맘에 드는 테마를 선택한 다음 초기 스크립트를 수정해 주시면 됩니다.

관련 사이트

특히 Oh My Posh 사이트를 자세히 확인해야 했습니다.
다른 블로거가 쓴 글을 참고하면 이전 버전 기준으로 작성된 것이 많아 잘 확인해서 진행해야 합니다.

Learn more on this topic

Related Blog Posts

VS Code Powershell PSSecurityException

VS Code Powershell PSSecurityException

관리자가 아닌 ms 계정으로 로그인한 윈도우10 에서 Visual Studio Code 에서 Vue 개발 환경을 설정하던 중 보안 오류가 발생했습니다. 해당 링크를 확인해 보면 자세하게 설명되어 있습니다. PS C:\Users\kkomz\Documents\Nas Git\medialogvue> vue create mlogvue vue : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\kkomz\AppData\Roaming\npm\vue.ps1 파일을 로드할 수...

read more

DISKPART Usage Sample

커널 설치나 기타 용도로 하나의 디스크가 여러 개의 파티션으로 나누어진 USB 의 경우 해당 USB를 초기화 하기 위해 디스크에 할당된 파티션 목록을 조회해서 초기화 하기 위한 과정입니다. Microsoft Windows [Version 10.0.18362.356] (c) 2019 Microsoft Corporation. All rights reserved. C:\Users\Administrator>diskpart Microsoft DiskPart 버전 10.0.18362.1...

read more

MS OFFICE WORD Add in Send To BlueTooth

언제부터인지 MS WORD 파일을 편집할려고 하면 무조건 죽어버린다. 어떤 경우는 아예 파일을 로드할 때 에러나면서 죽어버린다. 쉽게 해결이 되지 않아서 걍 새 파일 만들고 기존 파일 안전모드로 열어서 복사한 뒤에 잠깐 수정한 다음 저장해서 사용했다. ( 그리 쓸일이 많지는 않았으므로... ) 한번 저장하고 닫은 다음 다시 수정할려고 열면 또, 에러가 난다... 일단 수정해서 바로 인쇄하거나 다시 편집이 불가하므로 파일 그대로 사용을 한다(메일 첨부 등등) 근데 동일한 파일을...

read more

Join in the conversation

Leave a Comment

0 Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

무료 온라인 전광판

전광판

텍스트를 입력하고 텍스트 효과 및 배경효과 를 변경해서 전체화면으로 표시할 수 있는 전광판 용도로 사용하실 수 있습니다. 각종 스포츠 및 공연 관람시 응원 용도로 사용이 가능합니다.

Carousel

여러개의 슬라이드를 추가하여 프레젠테이션 및 이미지 슬라이드 용도로 사용하실 수 있습니다. 브라우저가 포함된 IT 기기로 큰 모니터에 연결하여 매장 내 공지사항 및 메뉴소개를 이미지로 표시할 수 있습니다.

Pin It on Pinterest

Shares
Share This

Share This

Share this post with your friends!

Shares