-
Notifications
You must be signed in to change notification settings - Fork 0
Autostart
nShiftSpace는 상주 프로그램입니다. 로그인할 때 자동으로 떠 있어야 제 역할을 하는데, winget과 Chocolatey 둘 다 시작 프로그램에 자동 등록하지 않습니다. 아래 절차를 한 번만 하면 됩니다.
이 문서의 명령은 모두 Windows PowerShell 기준입니다.
탐색기로 winget 설치 폴더를 찾아 들어가면 이런 경로의 exe를 만나게 됩니다.
%LOCALAPPDATA%\Microsoft\WinGet\Packages\SosomLab.nShiftSpace_Microsoft.Winget.Source_8wekyb3d8bbwe\nShiftSpace-x64.exe
이 경로로 바로가기를 만들면 안 됩니다. winget upgrade 때 패키지 폴더가 다시 만들어지면서
바로가기가 끊어집니다. 대신 별칭 경로를 써야 합니다.
%LOCALAPPDATA%\Microsoft\WinGet\Links\nshiftspace.exe ← 이걸 가리키세요
| 채널 | 가리킬 경로 | 업그레이드 후 유지 |
|---|---|---|
| winget | %LOCALAPPDATA%\Microsoft\WinGet\Links\nshiftspace.exe |
✅ |
| Chocolatey | %ChocolateyInstall%\lib\nshiftspace\tools\nShiftSpace-x64.exe |
✅ (경로에 버전 없음) |
| zip 직접 | 압축 푼 위치의 exe | ✅ |
$exe = "$env:LOCALAPPDATA\Microsoft\WinGet\Links\nshiftspace.exe"
Test-Path $exe-
True→ 그대로 2단계로 넘어가세요. -
False→ 별칭이 만들어지지 않았습니다. 아래를 보세요.
별칭이 없을 때 (False가 나온 경우)
winget이 포터블 패키지의 별칭을 만들 때 심볼릭 링크를 생성하는데, Windows에서 개발자 모드가 꺼져 있으면 이 생성이 실패합니다.
(a) 개발자 모드를 켜고 재설치 — 권장
설정 → 개인 정보 및 보안 → 개발자용 → "개발자 모드" 켬
winget uninstall SosomLab.nShiftSpace
winget install SosomLab.nShiftSpace
Test-Path "$env:LOCALAPPDATA\Microsoft\WinGet\Links\nshiftspace.exe"(b) 개발자 모드를 켤 수 없다면 — 실제 exe 경로를 직접 찾기
$exe = (Get-ChildItem "$env:LOCALAPPDATA\Microsoft\WinGet\Packages\SosomLab.nShiftSpace_*" `
-Recurse -Filter "nShiftSpace-*.exe" |
Select-Object -First 1).FullName
$exe이 경우 업그레이드할 때마다 다시 등록해야 할 수 있습니다. 경로 고정이 중요하다면 zip 직접 다운로드나 Chocolatey 설치를 권합니다.
$exe = "$env:ChocolateyInstall\lib\nshiftspace\tools\nShiftSpace-x64.exe" # 32비트 OS면 -x86
Test-Path $exe$env:ChocolateyInstall이 비어 있으면 기본값은 C:\ProgramData\chocolatey 입니다.
$exe = "C:\Tools\nShiftSpace\nShiftSpace-x64.exe" # 압축 푼 실제 위치로
Test-Path $exe1단계에서 $exe를 설정한 같은 PowerShell 창에서 이어서 실행하세요.
$startup = [Environment]::GetFolderPath('Startup')
$lnk = Join-Path $startup 'nShiftSpace.lnk'
$ws = New-Object -ComObject WScript.Shell
$sc = $ws.CreateShortcut($lnk)
$sc.TargetPath = $exe
$sc.WorkingDirectory = Split-Path $exe
$sc.Description = 'nShiftSpace - Shift+Space 한/영 전환'
$sc.Save()
Test-Path $lnk # True 면 등록 완료GUI로 하고 싶다면: Win+R → shell:startup 입력 → 열린 폴더에
exe를 마우스 오른쪽 버튼으로 드래그해서 놓고 "여기에 바로 가기 만들기" 선택.
왼쪽 버튼으로 그냥 끌면 복사나 이동이 되어버립니다. 꼭 오른쪽 버튼 드래그로 하세요.
New-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' `
-Name 'nShiftSpace' -Value "`"$exe`"" -PropertyType String -Force경로에 공백이 들어갈 수 있으므로 큰따옴표로 감싸는 것이 중요합니다.
nShiftSpace에는 알려진 제약이 있습니다 — 관리자 권한으로 실행된 창이 포커스를 가지면 일반 권한 프로그램의 단축키는 동작하지 않습니다. (Windows의 보안 정책이라 우회 불가)
이걸 피하려면 nShiftSpace 자체를 높은 권한으로 띄워야 하는데, 시작 프로그램 폴더나 Run 키로는 불가능하고 작업 스케줄러만 가능합니다.
관리자 권한 PowerShell에서:
$exe = "$env:LOCALAPPDATA\Microsoft\WinGet\Links\nshiftspace.exe" # 1단계에서 확정한 경로
$action = New-ScheduledTaskAction -Execute $exe
$trigger = New-ScheduledTaskTrigger -AtLogOn -User $env:USERNAME
$principal = New-ScheduledTaskPrincipal -UserId $env:USERNAME `
-LogonType Interactive -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries `
-DontStopIfGoingOnBatteries -ExecutionTimeLimit 0
Register-ScheduledTask -TaskName 'nShiftSpace' -Action $action -Trigger $trigger `
-Principal $principal -Settings $settings -Force핵심 옵션 설명:
| 옵션 | 이유 |
|---|---|
-RunLevel Highest |
이게 핵심. 관리자 창 위에서도 Shift+Space가 동작하게 함 |
-ExecutionTimeLimit 0 |
시간 제한 없음. 상주 프로그램이라 필수 (기본값 3일이면 종료됨) |
-AllowStartIfOnBatteries |
노트북에서 배터리 사용 중에도 실행 |
-LogonType Interactive |
로그인 세션에서 실행 (트레이 아이콘이 보이려면 필요) |
- 승격 실행이지만 UAC 프롬프트는 뜨지 않습니다 — 로그인 때 조용히 실행됩니다.
- 관리자 계정이 아니거나 조직 정책으로 막힌 PC에서는 실패할 수 있습니다. 그럴 땐 방법 A를 쓰세요.
로그아웃 후 다시 로그인(또는 재부팅)해서 트레이에 '가·A' 아이콘이 보이는지 확인합니다.
재부팅 없이 지금 바로 확인하려면:
Start-Process $exe
Get-Process nShiftSpace-x64, nshiftspace -ErrorAction SilentlyContinue아무 곳에나 커서를 두고 Shift+Space를 눌러 한/영이 전환되면 정상입니다.
중복 실행은 프로그램 내부의 뮤텍스로 차단되므로, 두 번 실행돼서 충돌할 걱정은 없습니다.
등록할 때 쓴 방법과 같은 방법으로 지웁니다.
# 방법 A - 바로가기 삭제
Remove-Item (Join-Path ([Environment]::GetFolderPath('Startup')) 'nShiftSpace.lnk')
# 방법 B - Run 키 삭제
Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Run' -Name 'nShiftSpace'
# 방법 C - 예약 작업 삭제 (관리자 권한 PowerShell)
Unregister-ScheduledTask -TaskName 'nShiftSpace' -Confirm:$falseGUI로 확인·해제하려면 작업 관리자 → 시작 프로그램 탭 (방법 A·B), 작업 스케줄러 (방법 C)에서도 가능합니다.
자동 실행을 걸어 두면 nShiftSpace가 항상 떠 있으므로 업그레이드 시 파일 잠김이 생깁니다.
| 채널 | 해야 할 일 |
|---|---|
| Chocolatey | 없음 — 알아서 종료시켜 줍니다. 그대로 choco upgrade nshiftspace -y
|
| winget |
트레이 아이콘 우클릭 → 종료 후 winget upgrade SosomLab.nShiftSpace
|
업그레이드 후, 방법 A·B를 썼다면 1단계의 Test-Path로 경로가 아직 유효한지 한 번 확인하세요.
Links 별칭 경로를 썼다면 바뀌지 않습니다. 방법 C의 예약 작업도 그대로 유지됩니다.
| 상황 | 추천 |
|---|---|
| 그냥 자동으로 뜨기만 하면 됨 | 방법 A |
| 시작 프로그램 폴더를 깔끔히 두고 싶음 | 방법 B |
| 관리자 권한 창(작업 관리자, 승격된 터미널 등)에서도 한/영 전환이 필요 | 방법 C |
nexa-shortcut · MIT License · SosomLab · 제품 소개
이 Wiki는 저장소의
docs/wiki/에서 생성됩니다. 내용 수정은 저장소에 PR을 보내주세요 — Wiki에서 직접 편집하면 다음 발행 때 덮어써집니다.