peektea, WSL์์ ๊ตฌ๋ ๐๐ต (ํ ์ค ์ค์น)
์ถ์ฒ: Dev.to
์๋ ํ์ธ์, ์ ๋ Maneshwar์ ๋๋ค. ๋งค ์ปค๋ฐ๋ง๋ค ์คํ๋๋ ๋ง์ดํฌ๋ก AI ์ฝ๋ ๋ฆฌ๋ทฐ์ด์ธ gitโlrc๋ฅผ ๋ง๋ค๊ณ ์์ต๋๋ค. ์ด ๋๊ตฌ๋ ๋ฌด๋ฃ์ด๋ฉฐ GitHub์์ ์์ค๊ฐ ๊ณต๊ฐ๋์ด ์์ต๋๋ค. ํ๋ก์ ํธ๋ฅผ ์๋ฆฌ๋ ค๋ฉด gitโlrc์ ๋ณํ๋ฅผ ๋๋ฌ ์ฃผ์ธ์. ์ง์ ์ฌ์ฉํด ๋ณด์๊ณ ํผ๋๋ฐฑ์ ๊ณต์ ํด ์ฃผ์ธ์.
๋ ๊ฐ์ง ๋ฏธ๋ค๋๋ ์ผ.
1๏ธโฃ ์ฒซ ๋ฒ์งธ: Windows ์ฌ์ฉ์๋ค์ด peektea๊ฐ WSL์์ ๋์ํ๋์ง ๋ฌผ์์ต๋๋ค. ์ด์ ๋์ํฉ๋๋ค.
2๏ธโฃ ๋ ๋ฒ์งธ: โ์์ค์์ brew ์ค์นโ๋ ์ต์ํ์ ๋๊ตฌ์ ์ด์ธ๋ฆฌ์ง ์๋ ๋ณต์กํ ์ค์น ๋ฐฉ์์ด์์ต๋๋ค. ์ด๊ฒ๋ ํด๊ฒฐํ์ต๋๋ค.
๋ฐ๋ชจ ๋ณด๊ธฐ (์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ ๋ณด์ด์ง ์์ ๊ฒฝ์ฐ)
WSL ์ง์
WSL์ Linux ํ๊ฒฝ์ด๋ฉฐ, peektea๋ Linux์์ ๋์ํฉ๋๋ค. ์ง๊ธ๊น์ง๋ ๋ฌธ์ ์์์ต๋๋ค.
๋ฌธ์ ๋ ํ์ผ์ ์ด ๋ ์ฌ์ฉํ๋ o ํค์์ต๋๋ค.
์ผ๋ฐ Linux์์๋ o๋ฅผ ๋๋ฌ ์ด๋ฏธ์ง ํ์ผ์ ์ด๋ฉด feh ํน์ eog๊ฐ ์คํ๋ฉ๋๋ค. ํ์ง๋ง WSL์๋ Linux GUI ์ฑ์ด ์์ผ๋ฏ๋ก ํธ์ถ์ด ์กฐ์ฉํ ์คํจํ๊ฑฐ๋ ์ค๋ฅ๊ฐ ์ถ๋ ฅ๋ฉ๋๋ค.
peektea๋ ์ด์ ์์ ์ WSL์ ๊ฐ์งํฉ๋๋ค:
func IsWSL() bool {
if os.Getenv("WSL_DISTRO_NAME") != "" {
return true
}
data, err := os.ReadFile("/proc/version")
return err == nil && strings.Contains(strings.ToLower(string(data)), "microsoft")
}
Enter fullscreen mode
Exit fullscreen mode
WSL์ด ๊ฐ์ง๋๋ฉด ํ์ผ ์ด๊ธฐ ๋ช
๋ น์ wslview( wslu ์์ ์ ๊ณต) ๋ก ์๋ํ๊ณ , ์ค์น๋์ด ์์ง ์๋ค๋ฉด explorer.exe ๋ก ๋์ฒดํฉ๋๋ค:
func WSLOpener() string {
if _, err := exec.LookPath("wslview"); err == nil {
return "wslview"
}
if _, err := exec.LookPath("explorer.exe"); err == nil {
return "explorer.exe"
}
if _, err := os.Stat("/mnt/c/Windows/explorer.exe"); err == nil {
return "/mnt/c/Windows/explorer.exe"
}
return ""
}
Enter fullscreen mode
Exit fullscreen mode
์ถ๊ฐ์ ์ธ ๋ฌธ์ : Windows ํ๋ก๊ทธ๋จ์ /home/taco/file.png ์ ๊ฐ์ Linux ๊ฒฝ๋ก๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ๋์ \\wsl.localhost\Ubuntu\home\taco\file.png ์ ๊ฐ์ UNC ๊ฒฝ๋ก๊ฐ ํ์ํฉ๋๋ค.
WSL์ ์ด๋ฅผ ์ํด wslpath ๋ฅผ ์ ๊ณตํฉ๋๋ค:
func WindowsPath(path string) string {
out, err := exec.Command("wslpath", "-w", path).Output()
if err != nil {
return path
}
return strings.TrimSpace(string(out))
}
Enter fullscreen mode
Exit fullscreen mode
๊ตฌ์ฑ๋ ์คํ๋๊ฐ .exe ๋ก ๋๋๋ ๊ฒฝ์ฐ, ๋ช
๋ น ์คํ ์ ์ ๊ฒฝ๋ก๊ฐ ๋ณํ๋ฉ๋๋ค. wslview ๋ ์์ฒด์ ์ผ๋ก ๋ณํ์ ์ฒ๋ฆฌํ๋ฏ๋ก ๋ณํ์ด ํ์ ์๊ณ , ์์ explorer.exe ๋ง ๋ณํ์ด ํ์ํฉ๋๋ค.
Bubble Tea(https://github.com/charmbracelet/bubbletea) ๋ก ๋ง๋ ์ต์ํ์ ํฐ๋ฏธ๋ ํ์ผ ๋ธ๋ผ์ฐ์ ์ ๋๋ค.
ํ์ดํ ํค(๋๋ vim ํค)๋ก ํ์ผ ์์คํ ์ ํ์ํ๊ณ , ์ ํํ ํ์ผ์ ๋ฏธ๋ฆฌ ์ค์ ํด ๋ ์ฑ์ผ๋ก ๋ฐ๋ก ์ด์ด๋ณผ ์ ์์ต๋๋ค.
๋ฐ๋ชจ
์์ํ๊ธฐ ์ ์ ํ ๋ฒ ์ดํด๋ณด์ธ์:
์ค์น
ํ ์ค ๋ช ๋ น:
curl -fsSL https://raw.githubusercontent.com/lovestaco/peektea/master/scripts/install.sh | sh
Enter fullscreen mode
Exit fullscreen mode
๋ฐ์ด๋๋ฆฌ ๋ค์ด๋ก๋ (Go ํ์ ์์) โ ์ต์ ๋ฆด๋ฆฌ์ฆ ํ์ด์ง์์ ํ์ฌ ํ๋ซํผ์ ๋ง๋ ํ์ผ์ ๋ฐ์ ์ฃผ์ธ์: releases page
| Platform | File |
|---|---|
| Linux x86โ64 | peektea_*linux_amd64.tar.gz* |
| Linux arm64 | peektea*linux_arm64.tar.gz* |
| macOS x86โ64 | peektea*darwin_amd64.tar.gz* |
| macOS Apple Silicon | peektea_darwin_arm64.tar.gz |
์์ถ์ ํ๊ณ peektea ์คํ ํ์ผ์ $PATH ์์ ์ด๋ ๋๋ ํฐ๋ฆฌ๋ ๋ฃ์ด ์ฃผ์ธ์.
Go ๋ก ์ค์น:
go install github.com/lovestaco/peektea@latest
Enter fullscreen mode
Exit fullscreen mode
์์ค์์ ์ง์ ๋น๋:
git clone https://github.com/lovestaco/peektea
cd peektea
make install
Enter fullscreen mode
Exit fullscreen mode
make install ์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ~/go/bin ์ ๋ณต์ฌํ๊ณ , $PATH ์ค์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
- ์ด๋ฏธ
$PATH์ ํฌํจ๋ผ ์์ผ๋ฉด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ โ ๋ณ๋ ์์ ํ์ ์์. ~/.local/bin์ด$PATH์ ์๋ค๋ฉด ๊ทธ๊ณณ์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๋ง๋ค๊ณ ํ์ฌ ์์์๋ ์ฆ์ ๋์ํฉ๋๋ค.- ๋ ๋ค ์๋๋ผ๋ฉด
~/go/bin์.bashrc์ ์ถ๊ฐํฉ๋๋คโฆ
peektea init on WSL
์ผ๋ฐ Linux ๋จธ์ ์์ peektea init ์ ํ
์คํธ ํธ์ง๊ธฐ, ํ์ผ ๋งค๋์ , ์ด๋ฏธ์ง ๋ทฐ์ด, PDF ๋ทฐ์ด ๋ฑ์ ์ค์น๋ ํ๋ก๊ทธ๋จ ์ค์์ ์ ํํ๋๋ก ํฉ๋๋ค.
ํ์ง๋ง WSL ํ๊ฒฝ์๋ GUI ์ฑ์ด ๊ฑฐ์ ์๊ธฐ ๋๋ฌธ์ ์ ํ์ง๊ฐ ์์ด์ ๋ถํธํฉ๋๋ค.
๊ทธ๋์ WSL์์๋ ํด๋น ์นดํ
๊ณ ๋ฆฌ๋ฅผ ๊ฑด๋๋ฐ๊ณ , xdg-open ๋์ Windows ์คํ๋๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํฉ๋๋ค.
ํ ์คํธ ํธ์ง๊ธฐ ์ค์ (vim, nvim, nano ๋ฑ)์ ๊ทธ๋๋ก ์ ์ง๋๋ฉฐ, ์๊ฐ์ ์ธ ๋ถ๋ถ์ Windows ์ชฝ์์ ์ฒ๋ฆฌํฉ๋๋ค.



](