From f0e448139a29100c96d00bcd1cd1bcc7b11edb5c Mon Sep 17 00:00:00 2001 From: Jerry Chae Date: Wed, 27 May 2026 16:04:12 +0900 Subject: [PATCH] =?UTF-8?q?psmux=20=EC=84=A4=EC=B9=98=EB=A1=9C=20=EC=9C=88?= =?UTF-8?q?=EB=8F=84=EC=9A=B0=20tmux=20=EB=8C=80=EC=B9=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 ++++++---- install-tmux.ps1 | 24 ++++++++++++++++-------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 4ddc396..4c26a58 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ ## πŸ“‚ μΉ΄ν…Œκ³ λ¦¬λ³„ 지원 도ꡬ λͺ©λ‘ ### πŸ“ 1. 터미널 관리 & 파일 μœ ν‹Έλ¦¬ν‹° -* **[tmux](https://github.com/tmux/tmux)** - κ°•λ ₯ν•œ 터미널 λ©€ν‹°ν”Œλ ‰μ„œ (μ„Έμ…˜ 관리 및 ν™”λ©΄ λΆ„ν• ) +* **[tmux](https://github.com/tmux/tmux)** - κ°•λ ₯ν•œ 터미널 λ©€ν‹°ν”Œλ ‰μ„œ (μ„Έμ…˜ 관리 및 ν™”λ©΄ λΆ„ν• , WindowsλŠ” psmux둜 μ„€μΉ˜) * **[superfile](https://github.com/yorukot/superfile)** - λͺ¨λ˜ν•˜κ³  μˆ˜λ €ν•œ 터미널 기반 파일 κ΄€λ¦¬μž (Vim 킀바인딩 지원) * **[dua](https://github.com/byron/dua-cli)** - 병렬 μŠ€μΊ”μ„ μ§€μ›ν•˜λŠ” μ΄ˆκ³ μ† λ””μŠ€ν¬ μ‚¬μš©λŸ‰ 뢄석 도ꡬ @@ -105,11 +105,12 @@ #### πŸ“ 1. 터미널 관리 & 파일 μœ ν‹Έλ¦¬ν‹° -* **tmux:** +* **tmux (WindowsλŠ” psmux μ„€μΉ˜):** ```powershell powershell -ExecutionPolicy Bypass -c "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; $t=\"$env:TEMP\install-tmux.ps1\"; iwr -useb 'https://gl.isitsoft.kr/publicproj/install-sh/-/raw/main/install-tmux.ps1' -OutFile $t; & $t" ``` - > πŸ’‘ **Windows OpenSSH Server μ°Έκ³ :** 슀크립트 가동 μ‹œ OpenSSH Server(sshd)κ°€ λ―Έμ„€μΉ˜λœ μƒνƒœλΌλ©΄ μžλ™μœΌλ‘œ 감지 및 λ°±κ·ΈλΌμš΄λ“œ μ„€μΉ˜ ν›„ κΈ°λ™ν•©λ‹ˆλ‹€. (κ΄€λ¦¬μž κΆŒν•œμ΄ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.) + > πŸ’‘ **Windows OpenSSH Server μ°Έκ³ :** 슀크립트 가동 μ‹œ OpenSSH Server(sshd)κ°€ λ―Έμ„€μΉ˜λœ μƒνƒœλΌλ©΄ μžλ™μœΌλ‘œ 감지 및 λ°±κ·ΈλΌμš΄λ“œ μ„€μΉ˜ ν›„ κΈ°λ™ν•©λ‹ˆλ‹€. (κ΄€λ¦¬μž κΆŒν•œμ΄ ν•„μš”ν•  수 μžˆμŠ΅λ‹ˆλ‹€.) + > πŸ’‘ **Windows tmux(psmux) μ°Έκ³ :** Windows ν™˜κ²½μ—μ„œλŠ” Rust 기반으둜 λΉŒλ“œλ˜μ–΄ μ„±λŠ₯이 λ›°μ–΄λ‚œ λ„€μ΄ν‹°λΈŒ Windows 터미널 λ©€ν‹°ν”Œλ ‰μ„œμΈ `psmux`κ°€ μ„€μΉ˜λ©λ‹ˆλ‹€. * **superfile:** ```powershell @@ -204,7 +205,8 @@ tmux ls # 가동 쀑인 μ„Έμ…˜ λͺ©λ‘ 보기 | `Prefix &` | ν˜„μž¬ ν™œμ„±ν™”λœ μ°½ μ™„μ „νžˆ λ‹«κΈ° | > πŸ’‘ `install-tmux` μŠ€ν¬λ¦½νŠΈλŠ” μ΅œμ ν™”λœ μ»€μŠ€ν…€ `.tmux.conf` νŒŒμΌμ„ μ‚¬μš©μž ν™ˆ 디렉토리에 λ°°ν¬ν•©λ‹ˆλ‹€. (κΈ°μ‘΄ μ„€μ • 파일이 μžˆλ‹€λ©΄ `.tmux.conf.bak.*`둜 μžλ™ λ°±μ—…λ©λ‹ˆλ‹€.) -> πŸ’‘ **Windows (PowerShell) μ°Έκ³ :** μœˆλ„μš° ν™˜κ²½μ—μ„œ μ‹€ν–‰ν•  경우, OpenSSH Server μ„œλΉ„μŠ€(`sshd`)κ°€ μž‘λ™ν•˜μ§€ μ•Šκ±°λ‚˜ 없을 μ‹œ Windows 선택적 κΈ°λŠ₯(Optional Capability)을 ν†΅ν•˜μ—¬ 무인 μ„€μΉ˜ 및 κ΅¬λ™κΉŒμ§€ μ™„μ „ μžλ™ μ§€μ›ν•©λ‹ˆλ‹€. +> πŸ’‘ **Windows (PowerShell) μ°Έκ³ :** μœˆλ„μš° ν™˜κ²½μ—μ„œ μ‹€ν–‰ν•  경우, OpenSSH Server μ„œλΉ„μŠ€(`sshd`)κ°€ μž‘λ™ν•˜μ§€ μ•Šκ±°λ‚˜ 없을 μ‹œ Windows 선택적 κΈ°λŠ₯(Optional Capability)을 ν†΅ν•˜μ—¬ 무인 μ„€μΉ˜ 및 κ΅¬λ™κΉŒμ§€ μ™„μ „ μžλ™ μ§€μ›ν•©λ‹ˆλ‹€. +> πŸ’‘ **Windows psmux 연동 μ°Έκ³ :** Windowsμ—μ„œλŠ” λ„€μ΄ν‹°λΈŒ 가상 터미널 ν™˜κ²½μ„ μ„ μ‚¬ν•˜λŠ” `psmux`κ°€ μ„€μΉ˜λ˜λ©°, κΈ°μ‘΄ `.tmux.conf` 파일과 높은 μˆ˜μ€€μœΌλ‘œ ν˜Έν™˜λ˜μ–΄ λ™μΌν•œ μ„€μ •κ³Ό vim 킀바인딩을 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. #### 1.2. superfile μˆ˜λ €ν•˜κ³  λ―Έλ €ν•œ λ””μžμΈμ„ μ„ μ‚¬ν•˜λŠ” κ³ κΈ°λŠ₯ 터미널 파일 κ΄€λ¦¬μžμž…λ‹ˆλ‹€. diff --git a/install-tmux.ps1 b/install-tmux.ps1 index 4fd8e2f..2684082 100644 --- a/install-tmux.ps1 +++ b/install-tmux.ps1 @@ -93,8 +93,8 @@ if ($tmuxCmd) { ErrExit "winget is required. Install it from the Microsoft Store or https://learn.microsoft.com/en-us/windows/package-manager/winget/" } - winget install --id arndawg.tmux-windows --accept-package-agreements --accept-source-agreements 2>&1 | Out-Null - Success "tmux installed via winget" + winget install psmux --accept-package-agreements --accept-source-agreements 2>&1 | Out-Null + Success "tmux (psmux) installed via winget" } # ──────────────────────────────────────────── @@ -117,25 +117,33 @@ if (-not $tmuxBin) { } } -# 3) Search common locations where winget installs tmux-windows +# 3) Search common locations where winget installs tmux / psmux if (-not $tmuxBin) { $searchDirs = @( (Join-Path $env:LOCALAPPDATA 'Microsoft\WinGet\Links'), + (Join-Path $env:LOCALAPPDATA 'Programs\psmux'), (Join-Path $env:LOCALAPPDATA 'Programs\tmux-windows'), + 'C:\Program Files\psmux', 'C:\Program Files\tmux-windows', + 'C:\Program Files (x86)\psmux', 'C:\Program Files (x86)\tmux-windows' ) foreach ($dir in $searchDirs) { if (Test-Path $dir) { - $candidate = Join-Path $dir 'tmux.exe' - if (Test-Path $candidate) { $tmuxBin = $candidate; break } + foreach ($exe in @('tmux.exe', 'psmux.exe')) { + $candidate = Join-Path $dir $exe + if (Test-Path $candidate) { $tmuxBin = $candidate; break } + } } + if ($tmuxBin) { break } } - # Recurse under WinGet/Packages for tmux + # Recurse under WinGet/Packages for tmux or psmux if (-not $tmuxBin -and (Test-Path (Join-Path $env:LOCALAPPDATA 'Microsoft\WinGet\Packages'))) { - $found = Get-ChildItem -Path (Join-Path $env:LOCALAPPDATA 'Microsoft\WinGet\Packages') -Recurse -Filter 'tmux.exe' -ErrorAction SilentlyContinue | Select-Object -First 1 - if ($found) { $tmuxBin = $found.FullName } + foreach ($filter in @('tmux.exe', 'psmux.exe')) { + $found = Get-ChildItem -Path (Join-Path $env:LOCALAPPDATA 'Microsoft\WinGet\Packages') -Recurse -Filter $filter -ErrorAction SilentlyContinue | Select-Object -First 1 + if ($found) { $tmuxBin = $found.FullName; break } + } } }