본문으로 건너뛰기

Swift와 SwiftUI, WebKit으로 네이티브 macOS 브라우저 만들기

I built a native macOS browser in Swift + SwiftUI (WebKit). Here’s what I learned

scadavide55.github.io

핵심 요약

  1. Lumen은 Safari와 같은 WebKit을 엔진으로 사용하며, 콘텐츠 차단기와 탭 휴면 기능 등 브라우저 기능을 한데 제공한다.
  2. 주소, 검색, 열린 탭, 책갈피, 방문 기록과 명령을 ⌘L로 여는 하나의 명령 막대에서 처리한다.
  3. 분할 보기, 읽기 모드, 탭 그룹, 사이트별 앱 설치와 Touch ID를 이용한 암호 관리 기능을 갖췄다.

도입

Lumen은 Swift와 SwiftUI, WebKit을 사용해 만든 macOS 브라우저다. 소개된 기능은 광고·추적기 차단, 단일 명령 막대, 비활성 탭 휴면, 분할 보기와 읽기 모드 등이다. 개인정보 보호 기능으로 링크의 추적 요소 제거, HTTPS 자동 적용, Global Privacy Control, 비공개 창을 제공한다. 다만 제공된 내용은 기능을 나열하며 구현 과정이나 개발 중 배운 점은 설명하지 않는다.

상세 요약

브라우저 구성과 탐색

Lumen은 Swift와 SwiftUI로 만든 네이티브 macOS 브라우저이며, 웹 페이지 표시에는 WebKit을 사용한다. 주소 입력과 검색, 열린 탭, 책갈피, 방문 기록, 브라우저 명령은 하나의 명령 막대에 모인다. ⌘L을 눌러 이 막대를 연다.

페이지를 나란히 배치하는 분할 보기와 복잡한 기사를 읽기 쉬운 형태로 바꾸는 읽기 모드도 제공한다. 탭 그룹은 탭을 다른 탭 위로 끌어다 놓아 만들 수 있다. 같은 사이트의 탭을 하나의 그룹으로 정리하는 기능도 있다.

광고 차단과 개인정보 보호

광고와 추적기는 WebKit의 콘텐츠 차단기를 사용해 페이지에 로드되기 전에 차단한다. 별도 확장 프로그램을 사용하지 않는다고 설명한다. 사이트가 제대로 동작하지 않으면 해당 사이트에서만 차단기를 끌 수 있다. ⇧⌘B 단축키로 전체 차단을 끄는 방법도 제공한다.

개인정보 보호 항목에는 링크에서 추적 요소 제거, HTTPS 자동 적용, Global Privacy Control, 비공개 창이 포함된다. 비공개 창은 사용한 정보를 남기지 않는 방식으로 설명된다.

메모리와 암호 관리

한동안 사용하지 않은 탭은 휴면 상태로 전환된다. 다시 열면 방문 기록을 포함해 이전 상태로 돌아간다. 메모리 사용을 줄이기 위한 탭 관리 기능으로 소개된다.

암호는 Mac의 Keychain에 저장한다. 저장된 암호는 Touch ID 인증 후 입력할 수 있고, 새 암호를 만들 때 강한 암호를 제안한다.

별도 창과 앱으로 사이트 사용

두 페이지를 분할 보기로 나란히 열 수 있고, 사이트를 개별 앱으로 설치할 수도 있다. 설치된 사이트 앱에는 별도 창과 Dock 아이콘이 생기며, 브라우징 중인 창과 분리된다.

제공된 설명은 Lumen의 사용자 기능과 조작 방법을 중심으로 한다. WebKit 콘텐츠 차단기, 탭 휴면, Keychain 연동처럼 기능의 기반이 언급된 경우도 있지만, 구체적인 코드나 구조, 성능 측정 결과는 포함하지 않는다.

결론

Lumen의 기능은 탐색과 개인정보 보호, 탭 관리, 암호 사용을 한 브라우저 안에서 처리하는 데 초점을 둔다. 광고 차단은 WebKit의 콘텐츠 차단기를 사용하며 사이트별 또는 전체 설정으로 끌 수 있다. 암호는 Mac의 Keychain에 저장하고 Touch ID로 자동 입력한다. 사이트를 독립 창과 Dock 아이콘을 가진 앱으로 설치할 수도 있다. 제공된 내용만으로는 성능 측정치나 내부 구현 방식을 확인할 수 없다.