Search

Mac에서 Windows PC로

요약
Linux를 품은 Windows가 편해서
게시일
2022/09/04
태그
Windows
1 more property
목차
회사에서 업무용으로 쓰라고 준 2019년형 15인치 맥북 프로가 있지만 대신에 씽크패드를 쓰고 있다. Mac에서 가장 흔하게 하는 것이라면 (스피커가 좋아서) 음악 감상을 하는 것 정도… 2009년 즈음부터 개인적으로 Mac을 사용해왔지만 최근에 PC로 넘어와서 Windows 11을 사용하고 있다.

애플 실리콘이라면…

아마 애플 실리콘 맥북을 쓰고 있다면 PC를 사용하고 있지 않았을 것이다. 나는 인텔 맥북의 시끄러운 팬 소리와 발열이 너무너무너무 싫다. 버터플라이 키보드의 얇디 얇은 키감도 싫다.
Windows PC를 사용하자니 또 조잡한 글꼴 렌더링과 디스플레이가 싫었다. 그런데, 그건 순전히 저가 디스플레이 패널 때문이다. 4K 패널을 장착한 Windows PC에서라면 또 다르다. Win32 구닥다리 애플리케이션을 쓰지 않는 한 어지간한 애플리케이션들은 글꼴도 잘 표현해준다. Mac이 더 미려한 글꼴을 보여주지만 그 격차가 많이 줄었다. 씽크패드의 키감은 말할 나위 없이 좋다.
Mac에서 Microsoft Word를 쓰면서 docx 파일을 pdf 파일로 변환하면 목차가 자동으로 생성되지 않는 것도 싫었다(이건 마이크로소프트가 일부러 Mac을 디스하는 것이라 본다).
Windows도 하드웨어에 좀 투자하면 Mac같은 터치패드와 디스플레이를 맛볼 수 있고 컴퓨팅이 쾌적해진다.

내가 편한 운영체제가 최고

macOS가 사용하기 편하고, 안전하고, Windows보다 더 우월하다거나, macOS나 Windows는 소스가 공개되어 있지 않고 소비자의 돈을 빼앗아가는 사악한 존재라며 Linux를 내세운다거나 하는 편협한 생각에 갇혀 있을 필요는 없다. macOS, Windows, Linux 모두 훌륭한 운영체제다. 무엇이 더 특출하다고 할 것 없이 저마다 일장일단이 있는 시스템일 뿐이고, 내가 하는 작업에 가장 잘 들어맞는 시스템이 제일 좋은 것이다.
나에겐 Linux를 잘 활용할 수 있고, 마이크로소프트 오피스를 편하게 사용할 수 있고, Paint.NET을 쓸 수 있는 Windows가 내 작업에 딱 들어맞는다. 아이폰과 연동되고, 애플 워치로 로그인 가능한 Mac이 사용하기 편한 건 사실이지만, 완벽한 통합 때문에 난 오히려 번잡했다.

Windows는 취약하다?

나의 경험에 비추어보면 Mac이 Windows보다 사용율이 떨어지니 해커들이 노리지 않을 뿐, 특별히 더 좋다고 할 수 없다. Windows PC가 보안에 취약한 이유는 먼저 높은 사용률 때문이다. 해킹도 엄연한 하나의 (불법)산업인지라 경제의 논리가 통하는 곳이다. 사용자 폭이 넓고 많이 쓰이는 운영체제가 Windows라서 불행히도 첫번째 공략 대상이 된 것일 뿐. 두 번째의 위험 요소는 무조건 “예”만 누르도록 길들여진 사용자의 잘못된 사용 습관 때문이다. Mac에서 시스템에 영향을 주는 설정 변경과 설치는 관리자의 패스워드가 필요하지 않느냐고 하는데, Windows에서도 UAU 팝업이 뜨면서 코드사인 인증서 오류나 시스템 수준의 변경을 경고한다. 불행히도 대부분의 사용자들이 그냥 “예”를 누르는 경우가 많다. 이게 위험한 거지…

Windows 11에서 눈에 띄게 변경된 점

WSL2 + Windows Terminal + VS Code

Windows에서 오픈소스 생태계를 제대로 이용할 수 없어서 힘들다는 것도 옛말이다. WSL이 나오면서 Linux 환경과 큰 차이가 없어졌다. 게다가 Windows에도 쓸만한 터미널이 생겼다.
난 기본 제공되는 Ubuntu보다 Debian을 선호한다. 그보다 더 사용하고 싶은 환경은 레드햇 계열 배포본이지만, 서비스 자동 시작을 WSL에서 지원해주는 게 데비안 계열이라서 아직 아쉽긴 하다.
macOS가 POSIX 표준을 지키는 유닉스 시스템이라고 해도 리눅스와 미묘한 차이가 있어서 명령어 옵션이 다르고, 커널이 아예 다른지라, 리눅스를 만지는 느낌이 들지 않는다. 그래서 VMware Fusion으로 가상 머신을 많이 사용했지만, 팬소리와 발열이 너어어어무 싫었다. 라이젠 CPU를 사용하는 씽크패드에서는 팬소리도 더 적고 발열도 더 적다. 게다가 리눅스를 그대로 쓸 수 있으니 WSL은 거부하기 힘든 유혹이었다.
WSL에서 VS Code를 실행하면 Linux 환경을 Windows에서 그대로 사용할 수 있다. 가상머신과 물리머신의 경계가 무너진 것같다. Windows도, Linux도 모두 하이퍼바이저 위에서 실행되는 시스템이다. WSL로 사용하는 리눅스는 베어메탈과 거의 대등한 성능을 보여준다.
구슬도 꿰어야 보배라고, VirtualPC에서 시작해 Hyper-V로 발전한 기술이 있었음에도 Linux is cancer라며 발악하던 스티브 발머가 물러난 후 마이크로소프트는 자신이 가진 기술 자산들을 잘 꿰어내었다. 그렇게 생겨난 WSL, Windows Terminal, VS Code는 매력있는 개발환경이다.
Windows 10부터 SSH 클라이언트가 Windows에 포함되어 있지만 아직도 모르는 분들이 있다. 마이크로소프트가 오픈소스를 레버리지 삼아 자신들의 영역을 확장하려고 부단히 애쓰고 있다.

WSL의 모자란 부분은 Hyper-V로

WSL은 아직 systemd와 브릿지 네트워크를 쓰지 못하므로 완벽한 대안은 아니다.
아쉬우면 아쉬운대로 Hyper-V를 설치해서 WSL의 모자란 점을 채울 수 있다. Hyper-V의 메모리 관리 기능이 뛰어나서 필요한 메모리만 할당해주고 남는 메모리는 알아서 잘 회수해준다([Hyper-V] RHEL/CentOS 동적 메모리 구성). 내가 사용하는 ThinkPad T14는 Ryzen PRO 8코어(논리 코어가 16개)에 32GB 메모리를 달았다. Hyper-V를 실행한다고 해서 리소스가 모자랄 일이 없으니 딱히 Mac보다 최적화가 덜 되었다는 느낌도 없다.
마이크로소프트는 공식적으로 인정하지 않지만 Windows 10 홈 에디션에도 Hyper-V를 설치해서 쓸 수 있다: Windows 10/11 Home 에디션에 Hyper-V 설치하기
또 재미있는 건 Hyper-V 환경에서 마이크로소프트가 mshome.net 도메인을 지원해서 mdns처럼 호스트 이름으로 서비스 연결이 가능하다. VM에 웹 서버를 설치해두었다면 호스트 이름 뒤에 mshome.net을 붙여서 접근할 수 있다. 그럼에도, mdns를 사용하는 게 더 익숙하다: IP 주소말고 이름을 쓰자 - mDNS .

쉬워진 스크린 캡처

Shift+Win+S를 누르면 스크린 캡처를 편하게 할 수 있다. 특정 영역을 선택하거나, 창, 전체 화면 등을 골라서 캡처할 수 있다. 캡처한 화면은 클립보드에도 저장되므로 클립보드와 함께 아주 쏠쏠하게 잘 쓰고 있다. 이 글을 쓰면서 가장 많이 사용하는 기능이기도 하다.

클립보드

Windows 이모티콘/클립보드 매니저
Windows 10부터 Win+V를 누르면 클립보드를, Win+.(마침표)를 누르면 이모티콘, 특수문자를 모두 선택하고 입력할 수 있게 해줬다. 난 Windows 11을 이용하는데 11이라고 크게 다르지 않다. 클립보드 매니저 없다고 구박을 받던 Windows가 아니다. 특수문자나 이모지, 심지어 GIF 클립도 입력할 수 있게 되었다.
클립보드는 20개까지 기억한다. 문자든, 이미지든. 자주 쓰는 건 고정해놓고 쓸 수 있다. 부팅해도 고정해둔 건 날아가지 않는다.

PowerToys

Windows 95 시절에 핫했던 파워토이도 다시 등장했다. 여러 유틸리티 중에서 가장 즐겨 쓰는 건 PowerToys Run, FancyZone다.
PowerToys
microsoft

PowerToys Run

PowerToys Run은 macOS의 Spotlight, Alfred와 유사하다. 모자란 부분도 있지만 일상적인 작업에서 딱히 아쉬움이 없다. 처음 보는 사람은 이게 뭔지 감이 잘 오지 않을 수 있다.
PowerToys Run을 실행한 모습
Windows를 오래 써본 사람이라면 대부분 탐색기를 열어 파일을 찾고, 시작을 누르고 프로그램 아이콘을 눌러서 실행하는 경우가 많다. macOS에서는 그렇게 파일을 찾거나 애플리케이션을 실행하지 않는다. 그저 Spotlight(스팟라이트)를 실행해서 파일 이름이나 애플리케이션 이름을 입력하고 엔터를 누르면 바로 파일이 열리고, 애플리케이션을 실행할 수 있다.
PowerToys Run은 macOS의 스팟라이트를 Windows로 가져왔다고 생각하면 된다. 아쉽다면, 스팟라이트는 인터넷 검색을 지원하지 않는다. 북마크나 웹 브라우징 히스토리를 보여주지만 인터넷 검색까지는 해주지 않는다. 반면에 PowerToys Run에서 바로 인터넷 검색이 가능하다는 장점이 있다(Alfred야 워낙 걸출한 런처라 이미 지원하던 기능이다). Mac에서 스팟라이트를 안 써본 사람은 모를 것이다. 이게 얼마나 편한지.
URL을 입력하면 웹 브라우저로 열어주고,
URL로 웹 브라우저 열기
애플리케이션도 실행할 수 있고,
애플리케이션 실행
:으로 입력을 시작하면 레지스트리 키도 접근할 수 있고,
레지스트리 키 접근
~을 입력하면 알아서 홈 디렉터리로 인식하고,
디렉터리 네비게이션
$으로 입력을 시작하면 시스템 설정을 검색해준다.
Windows 설정 탐색
그 외에도 다양한 기능을 제공하고, 플러그인 형태로 되어 있어 PowerToys 개발팀이 이거 좋겠다 싶은 유틸리티를 발견하면 플러그인 형태로 제공해준다.
PowerToys Run의 기본 플러그인들. 플러그인 단위로 on/off할 수 있다.

FancyZones (+ 가상 데스크톱)

알고 지내던 데브옵스 엔지니어는 랩탑에 리눅스를 설치해서 쓰고 있었다. 데스크탑 환경은 i3였는데, 타일링 윈도우 매니저라 디스플레이 공간을 낭비하지않고 분할해서 쓰고 있었다. 혹하고 당기는 환경이지만 너무 다루기 어렵고 리눅스 데스크탑 환경이 아직은 매력있게 다가오지 않았다. macOS에서는 Magnet이나 Amethyst같은 타일링 윈도우 매니저를 쓸 수 있다. Pop!_OS는 아예 운영체제에서 타일링 윈도우 기능을 제공한다(이게 제일 사용하기 편했다).
Windows 11에 스냅이라는 이름으로 타일링 기능이 있지만 기초적인 수준이다. 이걸로도 편하게 쓸 수는 있지만, FancyZones를 쓰는 순간 또 다른 세계다.
Win+Shift+`를 눌러 FancyZones Editor를 연 모습
또 하나의 좋은 점은, Windows 11의 라운드 처리된 창 모서리를 보지 않아도 된다는 것이다. FancyZones의 옵션 중에 레이아웃에 맞춰 창을 배열할 때 모서리를 각지게 보이도록 하는 것이 있다. 내 취향엔 Windows의 각진 모서리가 더 보기 좋다. 마이크로소프트가 둥근 창 모서리를 렌더링하는 게 영 이쁘지 않다. macOS에서는 그리 어색하지 않았지만 Windows에서는 이상하게 보기 싫은 것이다…
Windows 바탕화면에 난잡하게 흩어져 있는 창들 사이를 헤매면서 창을 찾는게 나이가 들면서 점점 힘들어진다. 바로 눈에 들어오지 않는다. Win+Tab, 혹은 Alt+Tab으로 앱을 찾는 것도 눈에 들어오지 않는다. 그냥 내가 작업하며 사용하는 앱들이 바탕화면에 가지런히 정리되어 있는게 더 낫다. 더불어 Windows 10/11의 가상 데스크탑 환경을 이용하는 게 좋다. 나는 보통 첫번째 바탕화면은 업무용, 두 번째 바탕화면은 개인적인 용도로 사용한다. 꼭 그런 식이 아니더라도 바탕화면마다 용도를 정해서 해당 용도에 맞게 애플리케이션 창을 배치해 놓고 쓰는 게 생산성을 더 좋게 해준다.
유용한 단축 키
Win+Shift+`: FancyZones 에디터 실행
Win+<, Win+>: 사용 중인 창을 Zone 순서대로 이동
Win+PgUp, Win+PgDn: 하나의 Zone에 스택처럼 쌓여 있는 창 사이에서 전환하기

winget 패키지 매니저

데비안 계열에서 apt-get, apt, macOS에서 brew를 이용해 커맨드라인에서 소프트웨어를 관리해본 사람이라면 Windows에 이에 대응하는 기능이 없는 게 무척 불편했을 거다. 그런 아쉬움을 달래고자 마이크로소프트가 내놓은 패키지 매니저 유틸리티. Windows Terminal에서 파워셸이든 명령 프롬프트든 열고 사용할 수 있다.
Windows를 재설치할 때 이걸 먼저 설치하고 검색해서 설치하면 다른 앱 설치가 매우 간편해진다. 덕분에, Windows에 앱을 설치하거나 업데이트하는 작업을 자동화할 수 있다.
PS C:\Users\0x6a6f73687561> winget list Name Id Version Source ----------------------------------------------------------------------------------------------- Monitorian 10186emoacht.Monitorian_0q7myvhtp… 3.13.0.0 1Password AgileBits.1Password 8.8.0 winget Beyond Compare 4.4.3 ScooterSoftware.BeyondCompare4 4.4.3.26655 winget Git Git.Git 2.37.3 winget GlassWire 2.3 (remove only) GlassWire.GlassWire 2.3.444 winget GNU Privacy Guard GnuPG.GnuPG 2.3.7 winget Gpg4win (4.0.3) GnuPG.Gpg4win 4.0.3 winget Logitech Options Logitech.Options 9.70.68 winget Microsoft Defender Microsoft.6365217CE6EB4_8wekyb3d8… 102.2208.23002.0 App Installer Microsoft.DesktopAppInstaller_8we… 1.18.2091.0 Microsoft.PowerToys.ImageResizer… Microsoft.PowerToys.ImageResizerC… 1.0.0.0 Microsoft Remote Desktop Microsoft.RemoteDesktop_8wekyb3d8… 10.2.3000.0 Mozilla Firefox (x64 ko) Mozilla Firefox 104.0.1 (x64 ko) 104.0.1 NextDNS NextDNS.NextDNS 3.0.0 winget Npcap NpcapInst 1.60 PowerRenameContextMenu PowerRenameContextMenu_8wekyb3d8b… 1.0.0.0 Sublime Text SublimeHQ.SublimeText.4 Unknown winget Debian Debian.Debian 1.12.2.0 winget Wireshark 3.6.7 64-bit WiresharkFoundation.Wireshark 3.6.7 winget Zoom ZoomUMX 5.11.10 (8200) paint.net dotPDNLLC.paint.net_h55e3w7q8jbva 4.312.8267.0 Notion 2.0.29 Notion.Notion 2.0.29 winget Akiflow 2.27.14 fcfd5b65-85a1-59d9-8eb7-a98bf4457… 2.27.14 YouTube Music music.youtube.com-9F558962_vezhnr… 1.0.0.1 Pandoc 2.19.2 JohnMacFarlane.Pandoc 2.19.2 winget Typora 1.3 Typora.Typora 1.3.8 winget PowerShell 7-x64 Microsoft.PowerShell 7.2.6.0 winget GlobalProtect {61198C02-9541-4A78-A917-8C4CAC61… 6.0.3 PowerToys (Preview) x64 XP89DCGQ3K6VLD 0.61.1 mssto… Google Drive Google.Drive 62.0.2.0 winget Microsoft Visual Studio Code (Us… XP9KHM4BK9FZ7Q 1.71.0 mssto… Windows Subsystem for Linux WSLg… {E04B0005-A349-4BCC-9662-CA013200… 1.0.26 QuickLook QL-Win.QuickLook 3.7.1.0 winget Windows Subsystem for Linux Upda… {F8474A47-8B5D-4466-ACE3-78EAB3BF… 5.10.102.1
PowerShell
복사
winget list로 조회해본 나의 애플리케이션들(주요 애플리케이션만 보이게 목록을 수정했다)
winget install --id ID 와 같은 형식으로 Id 열에 있는 식별자로 ID를 갈음해서 실행하면 해당 프로그램을 설치할 수 있다. 그러니 스크립트 형태로 보관해두면 Windows를 재설치할 때 유용하다. 앱 업데이트가 필요하면 winget upgrade --all 이 한 줄로 끝.

Windows Hello x 1Password

macOS의 Touch ID, iOS의 Face ID와 같은 기능으로 Windows Hello가 있다. 맥북을 쓸 때는 애플 워치를 이용해 로그인했지만, 애플 워치는 주로 운동할 때 사용하고, 컴퓨터 앞에 앉아 있을 때에는 불편해서 Windows Hello가 더 편하다.
Windows에 로그인할 때, 1Password 잠금을 풀 때 얼굴로, 지문으로 간편하게 작업할 수 있다. 이건 Windows의 고급 기능으로, 저가 Windows 랩탑에서는 쓸 수 없다. LG Gram도 IR 카메라가 없기 때문에 안면 인식 방식으로 로그인하지는 못한다.
WSL에서 sudo 명령을 쓸일이 많다. sudoer 옵션을 조정해서 패스워드를 입력하지 않고 sudo 명령을 쓰는 방법도 있지만, 한 겹 더 안전 장치를 두는 것이 낫지 않은가? 이것도 Windows Hello와 연결해 사용할 수 있다: Windows Hello로 sudo 명령 사용하기.
이런 식으로 말이다.
1Password에 SSH 키를 담아놓고 Windows Hello를 이용해 패스워드를 입력하지 않고 로그인할 수 있다. 더 확장하면, WSL에서도 Windows에서 실행하는 1Password에서 SSH 키를 가져와 사용할 수 있다(터미널에서 한번 1Password로 인증을 거치고 나면 터미널을 닫을 때까지 유효하다). VS Code에서 GitHub로 코드를 푸시할 때에도 SSH 키를 이용하므로 같은 방식으로 사용하고 있다.
SSH 키를 사용할 때 비밀번호를 사용하지 않고1Password로 인증 과정을 거칠 수 있다.
어떻게 설정하는지 궁금한 분들은 다음 글을 참고하시면 된다.
2023.4.17. 업데이트 위에 있는 북마크에서 .bash_profile, 또는 .profile, 혹은 .bashrc에 집어넣을 스크립트는 다음과 같이 간략히 사용하는 것이 좋다(참고: WSL Integration with 1Password SSH). setsid socat 명령에 넘길 인자를 큰 따옴표로 감싸 넘겨야 한다. WSL에서 어떤 변화가 있었는지, (아니면 다른 원인일지도 모르겠지만) 큰 따옴표로 UNIX-LISTENEXEC를 각각 감싸줘야 정상적으로 동작한다.
export SSH_AUTH_SOCK="$HOME/.ssh/agent.sock" ( set -eu piperelay=(setsid socat "UNIX-LISTEN:$SSH_AUTH_SOCK,fork" "EXEC:npiperelay.exe -ei -s //./pipe/openssh-ssh-agent,nofork") if ! pgrep "-fxU$UID" "${piperelay[*]}" >/dev/null; then rm -f "$SSH_AUTH_SOCK" ("${piperelay[@]}" &) >/dev/null fi )
Bash
복사

불편한 점이 있다면

macOS든, Windows든 내 손에 익어서 잘 다룰 수 있으면 그만이다. Linux도 잘 다룰 수 있으면 그만이지만, Microsoft Office만큼 만족할만한 대안을 아직 찾지 못해서 넘어갈 수 없다. macOS에서 하던 일들을 대부분 Windows에서 할 수 있으니 굳이 시끄럽고 발열이 있는 인텔 맥북을 쓰지 않아도 되서 좋다.
애플 실리콘 맥북을 사용하면, 앞에서도 말했듯 또 다시 돌아갈지 모르겠다. 그러나 당분간은 Windows에서 편하게 작업할 수 있어서 굳이 갈아타지 않아도 될 것같다. Windows PC와 파일을 교환할 때 한글이 깨지는 문제도 없을테고.
그러나 여전히 아쉽고 불편한 점이 있는데,
1.
Windows 전체적으로 UI의 통일성이 없고 일관된 디자인이 적용되어 있지 않아서 촌스럽다는 정서적 불만이 있다. Windows는 잘만든 운영체제지만 켜켜이 쌓인 지층같이 오래된 흔적이 남아있고, 그걸 다 걷어내는 게 가능한지 모르겠다.
2.
아직 파일 검색이 완벽하지 않다. Alfred가 이건 짱이다.
3.
(업데이트 @1/24/2023) Windows 11에서 이 문제가 많이 개선되었다. OneDrive의 완성도가 iCloud 드라이브에 비해 떨어진다. 특히 사진들을 다룰 때 많이 느리다. 그래도 네이버 드라이브처럼 파일이 없어진다거나 하지는 않으니 그럭저럭…

마무리

Windows 정말 많이 좋아졌다. 모자란 부분이 있어도 Linux를 쓰는데 매우 좋은 환경이다. macOS와 Linux는 엄연히 이기종 운영체제라 VMware Fusion같은 타입 2 하이퍼바이저가 필요했다. 하지만 Windows에서는 타입 1 하이퍼바이저 위에 Windows와 WSL이 동시에 실행되는 구조라 이기종 운영체제이면서도 하드웨어 리소스를 그대로 활용할 수 있는 점이 아주 마음에 든다.
Hyper-V를 설치하는 순간 Windows도 Hyper-V위에서 돌아가는 게스트 OS, WSL도 게스트 OS다. macOS도 하이퍼바이저 프레임워크가 있지만 아직 VMware나 Oracle VirtualBox가 이것을 이용하고 있지 않다. 성능 면에서 Hyper-V가 더 좋을 수 있는 이유다. WSL환경을 Windows에서 접근해 이용할 수 있고, Windows 입장에서 불필요한 서비스 데몬들을 다 비활성화해놓은 경량 리눅스 커널을 사용하고 있으니 더 가볍고 성능이 좋은 듯 싶다.
ThinkPad T14 AMD Gen2를 선택한 이유도 3세대 Ryzen PRO 7 기반이라 인텔에 비해 발열도 적고, 팬소리도 별로 크지 않기 때문이었다. 애플 실리콘이라면 또 다른 이야기이겠지만, 지금 내가 작업하는 것에는 최상의 환경이라 매우 만족한다. WSL이 아쉬우면 Hyper-V를 쓰면 되고, VMware Fusion보다 훨씬 리소스 관리 차원에서 효율적이다.
PS. 기본 언어를 영어로, 문자 입력기를 한글 IME로 해서 쓰고 있다. 사용하다가 문제를 해결해야할 때, 영어로 검색하는 게 더 낫기 때문에…