aboutsummaryrefslogtreecommitdiff
path: root/content/post/make-powershell-fancier-with-windows-terminal.md
blob: bcfcfcaef5637532cc8e5697484aa7a7e9e5454c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
---
title: "Make Powershell Fancier With Windows Terminal"
date: 2020-03-22T11:33:38+05:30
lastmod: 2022-03-11T11:33:38+05:30
draft: false
keywords: [powershell, windows-terminal]
description: ""
tags: ["powershell", "windows terminal"]
categories: ["windows"]
author: ""

# You can also close(false) or open(true) something for this content.
# P.S. comment can only be closed
comment: false
toc: true
autoCollapseToc: true
postMetaInFooter: true
hiddenFromHomePage: false
# You can also define another contentCopyright. e.g. contentCopyright: "This is another copyright."
contentCopyright: false
reward: false
mathjax: false
mathjaxEnableSingleDollar: false
mathjaxEnableAutoNumber: false

# You unlisted posts you might want not want the header or footer to show
hideHeaderAndFooter: false

# You can enable or disable out-of-date content warning for individual post.
# Comment this out to use the global config.
#enableOutdatedInfoWarning: false

flowchartDiagrams:
  enable: false
  options: ""

sequenceDiagrams: 
  enable: false
  options: ""

---

<!--more-->
*because why not*

# Install PowerShell Core
Or you can continue using PowerShell 5.1 if you wish.

## From GitHub
Grab the installer from their [releases](https://github.com/PowerShell/PowerShell/releases) page. Once downloaded, double-click the installer and follow the instructions. 

## Using Scoop
Enter the line in PowerShell:

```
scoop install pwsh
```

Instructions to install Scoop can be found at [scoop.sh](https://scoop.sh/).

## Using Chocolatey
Enter the line in elevated PowerShell:

```
choco install pwsh
```

Instructions to install Chocolatey can be found at [chocolatey.org](https://chocolatey.org/install).

# Install Windows Terminal
Get it from [Store](https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701) or from [GitHub releases](https://github.com/Microsoft/Terminal/releases). I recommend getting it from Store as it can be updated automatically.

Or you can install via Chocolatey by entering
```
choco install microsoft-windows-terminal
```
Again, in elevated PowerShell.

If you are using Scoop then it would be
```
scoop install windows-terminal
```

# The interesting part begins.
Next, open Windows Terminal. Once there, use the drop down arrow to open PowerShell Core.

{{% center %}}
{{% figure src="/img/powershell/tab-menu.png" title="The shells listed depend on the shells installed on your computer." alt="A drop down list of shells, settings, feedback and about" %}}
{{% /center %}}

As per the instructions [here](https://github.com/JanDeDobbeleer/oh-my-posh), install `posh-git` and `oh-my-posh`. It is assumed that you have [git](https://git-scm.com/downloads) installed (you can use Chocolatey or Scoop if you wish).

```
Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
```

Next, get [PSReadline](https://docs.microsoft.com/en-us/powershell/module/psreadline/?view=powershell-7)

```
Install-Module -Name PSReadLine -AllowPrerelease -Scope CurrentUser -Force -SkipPublisherCheck
```

Now, add the folllowing lines to your `$PROFILE` by running `vim $PROFILE`. Please note that Notepad also works.

```powershell
Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt ys

# Show navigable manu of all options on hitting Tab
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete

# Autocompletion for arrow kets
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySeachForward
```

Line 3 sets theme. You can get a list of themes [here](https://github.com/JanDeDobbeleer/oh-my-posh).

# Time to get a better font
Those boxes don't look quite nice.

[Cascadia Code](https://github.com/microsoft/cascadia-code/releases) is my personal favourite. Download the fonts and change the font face to "Cascadia Code PL" in `settings.json` (it can be opened by pressing `Ctrl+,`, if you hadn't noticed already).
```json
"fontFace": "Cascadia Code PL";
```
Or you can install other fonts that support PowerLine Glyphs from [Nerd Fonts](https://nerdfonts.com/)

# Add a background
One of the fun things about Windows Terminal is that you can set backgrounds and opacity or apply acrylic blur, which will be covered in the next section.

Open `settings.json` and add the following lines

```json
"backgrounfImage": "path/to/image",
"backgroundOpacity": 0.5,
"backgroundImageStretchMode": "fill",
```

# Use acrylic
Remove the lines used to set the background and add the following lines

```json
"useAcryllic": true,
"acryllicOpacity": 0.8,
```

# Next Step
Enjoy.
{{% center %}}
{{% figure src="/img/powershell/final.png" title="Final result" alt="Screenshot of Windows Terminal after applying the previous steps" %}}
{{% /center %}}