터꾸 - PowerShell7 + winfetch + oh-my-posh

제로켄·2025년 3월 11일
0

꾸미기

목록 보기
2/4
post-thumbnail

터미널을 꾸며봤으니, 이제 그 위에서 실행되는 CLI도 꾸며봅시다. 우선 아래 그림을 보시죠

CLI 꾸미기에 사용할 프로그램은 PowerShell7, winfetch, oh-my-posh입니다.

1. PowerShell7

기본적으로 윈도우에는 cmd와 함께 아래의 Windows PowerShell이 설치되어 있습니다. 이후 설명할 oh-my-posh는 cmd와 함께 사용할 수 없으므로, 앞으로는 PowerShell을 주 CLI로 사용해야 할 것입니다.

하지만 저는 거기서 더 나아가서 PowerShell의 업데이트 버전인 PowerShell7을 설치하고 꾸미도록 하겠습니다. 앞서가는 것을 두려워하지 않는 것이 이 시대가 요구하는 미덕?이니까요.

... 사실은 이후에 설명할 oh-my-posh의 출력 중 일부가 기본으로 설치된 PowerShell에서 정상적으로 표시되지 않기 때문에 업데이트를 해줘야 합니다.

1.1. 설치

기존 PowerShell을 실행하고, 아래의 명령어를 입력하면 바로 PowerShell7을 설치할 수 있습니다.

winget install --id Microsoft.PowerShell --source winget

새로 설치된 파워쉘은 이렇게 생겼습니다.

아이콘이 깊고 어두운 것이 벌써부터 개발자의 가슴을 간지럽히는군요.

1.2. 기본 CLI로 설정

터미널을 실행하고 [설정]으로 갑니다. 그럼 [기본 프로필] 설정에 검은 아이콘의 PowerShell 옵션이 추가되어 있을겁니다.

이걸 선택한 다음, 잊지 말고 [저장]을 누릅시다.

2. winfetch

winfetch는 CLI에서 컴퓨터 정보를 예쁘게 출력해주는 프로그램입니다. 자세한 내용은 리포지토리를 참고하세요.

기본적으로 winfetch를 설치하면, 터미널에서 winfetch를 입력해 직접 실행할 때에만 동작합니다.

그래서 저희는 winfetch를 설치한 다음에, PowerShell이 실행될 때마다 자동으로 winfetch가 실행되도록 설정하여 터미널 맨 위에 컴퓨터 정보를 출력하도록 할 것입니다.

2.1. 설치

이제 터미널을 다시 실행하거나 실행 중인 터미널에서 새 탭을 열면 새로 설치한 깔끼한 PowerShell7이 여러분을 반겨줍니다(사실 외관상의 차이는 아직 없습니다). PS ...>와 같이 프롬프트 라인이 표시되고 있다면, 다음 명령어를 입력하여 winfetch를 설치할 수 있습니다.

Install-Script winfetch

2.2. 실행

설치가 완료되었나 확인하려면 우선 PowerShell을 한 번 재시작하고 winfetch 명령어를 입력해봅시다. 아래와 같이 출력되면 성공입니다!

2.3. 세부적인 설정

winfetch가 처음 설치되었을 때에는 모든 설정이 기본값으로 지정되어 있습니다. 설정을 직접 수정하고 싶어졌다면, PowerShell에서 winfetch -genconf 명령어를 입력해서 커스터마이징 가능한 설정 파일을 생성할 수 있습니다. 이미 설정 파일을 만든 뒤에는 start $env:USERPROFILE/.config/winfetch/config.ps1 명령어로 이전에 만든 설정 파일을 열 수 있습니다.

설정 파일을 열면 이것저것 많아서 설정할 방법이 많은데, 페이지에 여백이 너무 부족해서 여기에는 적지 않겠습니다.

저는 이런 설정을 해줬습니다.

  • 직접 찍은 도트 이미지를 출력하도록 설정
  • 몇몇 정보를 추가하거나 제외, 순서 변경
  • CPU, RAM, DISK 사용량을 bartext 유형으로 출력하도록 설정
  • 출력되는 정보 사이사이에 줄바꿈 추가

설정이 끝난 뒤에는 이렇게 생겼습니다.

3. oh-my-posh

oh-my-posh는 PowerShell의 프롬프트 줄을 예쁘게 꾸며주는 프로그램입니다. 자세한 내용은 공식 홈페이지를 참고하세요.

oh-my-shell도 winfetch와 마찬가지로, 직접 가동시켜주지 않으면 동작하지 않습니다. 한 번 가동하면 이후 해당 CLI 탭에서는 계속 꾸민 프롬프트가 나오게 되므로, PowerShell이 시작될 때 한 번만 가동시켜주면 됩니다.

3.1. 설치

PowerShell에서 아래의 명령어를 입력하면 oh-my-posh를 설치할 수 있습니다.

winget install JanDeDobbeleer.OhMyPosh -s winget

3.2. 실행

oh-my-posh가 설치된 뒤에 PowerShell을 재시작하고, 아래 명령어를 입력하면 이후 모든 프롬프트 줄의 모양이 바뀝니다.

oh-my-posh init pwsh | Invoke-Expression

물론 다른 탭에서는 이 효과가 적용되지 않습니다. 따라서 PowerShell을 재시작하거나 새 PowerShell 탭을 열 때마다 이 명령어를 실행해줘야 합니다.

3.3. 테마 변경

PowerShell에서 아래 명령어를 입력하면 사용 가능한 oh-my-posh 테마를 모두 미리보기할 수 있습니다.

Get-PoshThemes

이후 마음에 드는 테마 이름을 확인하고, 아래의 명령어를 입력해서 oh-my-posh의 테마를 변경해줍니다.

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\<theme-name>.omp.json" | Invoke-Expression

ℹ️ Note
예를 들어, jandedobbeleer 테마를 사용하고 싶다면 테마의 json 파일 경로는 "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json"이므로, 아래의 명령어를 입력하여 테마를 선택할 수 있습니다.

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\jandedobbeleer.omp.json" | Invoke-Expression

여러 테마를 살펴보면서 마음에 드는 것을 사용합시다. 만약 마음에 드는 것이 없다면 공식 홈페이지를 참고하여 새로운 테마를 작성할 수도 있습니다.

⚠️ Warn
만약 몇몇 글자가 와 같이 깨져서 보인다면, 해당 글자를 표시할 수 있는 폰트를 사용하도록 터미널의 설정을 변경해야 합니다. oh-my-posh에서 사용하는 글자를 정상적으로 표시하려면 Nerd Font로 패치된 다른 폰트를 사용해야 합니다.

3.4. 자동 실행 (+winfetch)

oh-my-posh가 PowerShell 실행시에 함께 실행되도록 설정해봅시다. 여기서 winfetch도 같이 실행되도록 설정하겠습니다.

$PROFILE이라는 파일에 PowerShell 스크립트를 작성하면, PowerShell 시작과 함께 그 스크립트가 자동으로 실행됩니다. 이 파일에 winfetch 실행 명령어와 oh-my-posh 가동 명령어를 적어두면, 앞으로 PowerShell을 실행할 때마다 자동으로 두 프로그램이 실행된다는 것이죠.

우선 다음의 명령어를 입력해서, 이미 $PROFILE 파일이 존재하는지 확인하고, 존재한다면 그 파일을 열어줍시다.

notepad $PROFILE

ℹ️ Note
만약 여기에서 파일이 존재하지 않아 오류가 발생한다면, 다음의 명령어를 먼저 입력해서 파일을 만들어주고 다시 위의 명령어를 입력해보세요.

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

열린 파일의 맨 아래에 다음과 같은 스크립트를 추가해줍시다. 각각 oh-my-posh 실행, oh-my-posh 테마 변경, winfetch 실행에 해당하는 명령어입니다.

oh-my-posh init pwsh | Invoke-Expression
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\paradox.omp.json" | Invoke-Expression

winfetch

위의 코드에서는 oh-my-posh 테마를 paradox로 설정하고 있습니다. 마음에 드는 테마가 있다면 이 부분을 수정하여 원하는 테마로 설정하세요. 저는 제가 직접 커스텀한 n0rd 테마를 깃허브 리포지토리에서 가져와서 사용하도록 설정했습니다.

oh-my-posh init pwsh | Invoke-Expression
oh-my-posh init pwsh --config "https://raw.githubusercontent.com/zer0ken/environments/refs/heads/main/oh-my-posh/n0rd.omp.json" | Invoke-Expression

winfetch

4. 해치웠나?

이제 PowerShell을 다시 실행해보면...

좋았쓰!

0개의 댓글