peektea, WSL์—์„œ ๊ตฌ๋™ ๐Ÿ‘€๐Ÿต (ํ•œ ์ค„ ์„ค์น˜)

๋ฐœํ–‰: (2026๋…„ 6์›” 7์ผ AM 02:47 GMT+9)
6 ๋ถ„ ์†Œ์š”
์›๋ฌธ: Dev.to

์ถœ์ฒ˜: Dev.to

์•ˆ๋…•ํ•˜์„ธ์š”, ์ €๋Š” Maneshwar์ž…๋‹ˆ๋‹ค. ๋งค ์ปค๋ฐ‹๋งˆ๋‹ค ์‹คํ–‰๋˜๋Š” ๋งˆ์ดํฌ๋กœ AI ์ฝ”๋“œ ๋ฆฌ๋ทฐ์–ด์ธ gitโ€‘lrc๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ๋ฌด๋ฃŒ์ด๋ฉฐ GitHub์—์„œ ์†Œ์Šค๊ฐ€ ๊ณต๊ฐœ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ์•Œ๋ฆฌ๋ ค๋ฉด gitโ€‘lrc์— ๋ณ„ํ‘œ๋ฅผ ๋ˆŒ๋Ÿฌ ์ฃผ์„ธ์š”. ์ง์ ‘ ์‚ฌ์šฉํ•ด ๋ณด์‹œ๊ณ  ํ”ผ๋“œ๋ฐฑ์„ ๊ณต์œ ํ•ด ์ฃผ์„ธ์š”.

๋‘ ๊ฐ€์ง€ ๋ฏธ๋ค„๋‘๋˜ ์ผ.

1๏ธโƒฃ ์ฒซ ๋ฒˆ์งธ: Windows ์‚ฌ์šฉ์ž๋“ค์ด peektea๊ฐ€ WSL์—์„œ ๋™์ž‘ํ•˜๋Š”์ง€ ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
2๏ธโƒฃ ๋‘ ๋ฒˆ์งธ: โ€œ์†Œ์Šค์—์„œ brew ์„ค์น˜โ€๋Š” ์ตœ์†Œํ•œ์˜ ๋„๊ตฌ์— ์–ด์šธ๋ฆฌ์ง€ ์•Š๋Š” ๋ณต์žกํ•œ ์„ค์น˜ ๋ฐฉ์‹์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋„ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

WSL ๋จธ์‹ ์—์„œ ์‹คํ–‰๋˜๋Š” peektea ๋ฐ๋ชจ

๋ฐ๋ชจ ๋ณด๊ธฐ (์œ„ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๊ฐ€ ๋ณด์ด์ง€ ์•Š์„ ๊ฒฝ์šฐ)


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 ํ‚ค)๋กœ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํƒ์ƒ‰ํ•˜๊ณ , ์„ ํƒํ•œ ํŒŒ์ผ์„ ๋ฏธ๋ฆฌ ์„ค์ •ํ•ด ๋‘” ์•ฑ์œผ๋กœ ๋ฐ”๋กœ ์—ด์–ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ๋ชจ

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด์„ธ์š”:

๋ฐ๋ชจ GIF

์„ค์น˜

ํ•œ ์ค„ ๋ช…๋ น:

curl -fsSL https://raw.githubusercontent.com/lovestaco/peektea/master/scripts/install.sh | sh

Enter fullscreen mode
Exit fullscreen mode

๋ฐ”์ด๋„ˆ๋ฆฌ ๋‹ค์šด๋กœ๋“œ (Go ํ•„์š” ์—†์Œ) โ€” ์ตœ์‹  ๋ฆด๋ฆฌ์ฆˆ ํŽ˜์ด์ง€์—์„œ ํ˜„์žฌ ํ”Œ๋žซํผ์— ๋งž๋Š” ํŒŒ์ผ์„ ๋ฐ›์•„ ์ฃผ์„ธ์š”: releases page

PlatformFile
Linux x86โ€‘64peektea_*linux_amd64.tar.gz*
Linux arm64peektea*linux_arm64.tar.gz*
macOS x86โ€‘64peektea*darwin_amd64.tar.gz*
macOS Apple Siliconpeektea_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 ์ชฝ์—์„œ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

[WSL์—์„œ peektea init ํ™”๋ฉด](https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%

0 ์กฐํšŒ
Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป