Computer >> 컴퓨터 >  >> 네트워킹 >> 인터넷

Firefox에서 퍼소나(경량 테마)를 추출해 다른 프로필로 옮기는 방법

이번 글은 다소 생소한 주제입니다. 여러 대의 기기에서 Firefox를 사용하지만 로그인이나 동기화 기능은 꺼져 있고, 프로필도 여러 개라고 가정해 봅시다. 그럼에도 나름의 취향이 있어 브라우저에 '퍼소나(persona)', 즉 경량 테마(lightweight theme)를 몇 가지 적용해 사용 중이라면 어떨까요? 그중 일부는 더 이상 다운로드할 수 없는데, 서로 다른 프로필 간에 옮기고 싶은 상황입니다.

프로필 폴더의 확장 기능 등 일부 파일을 복사해 봤지만 소용이 없었습니다. 프로필 전체를 통째로 복제하면 해결되겠지만, 그건 원하는 바가 아닙니다. 특정 테마 하나만 필요한 상황입니다. 언뜻 보기에는 방법이 없어 보이는데, 과연 어떻게 해야 할까요?

Firefox에서 퍼소나(경량 테마)를 추출해 다른 프로필로 옮기는 방법

문제를 좀 더 자세히 살펴보기

몇 주 전 저는 Firefox 57 출시 전, ESR 버전이 아닌 Firefox 54의 Australis 모드에서 시간을 보내며 다가오는 WebExtensions 대전환이 예상대로 혼란스러울지 직접 확인해 보았습니다. 물론 이것이 핵심은 아니고, 그저 배경 설명일 뿐입니다.

테스트 과정에서 Mozilla 자체의 Compact Light와 Compact Dark를 포함한 여러 새 테마도 시험해 봤습니다. 클래식 사용 방식을 염두에 둔 테마였지만, 북마크 도구 모음이 탭 컨트롤 바로 아래, 본문 영역에 너무 가깝게 배치되어 시각적으로 어수선하다는 단점이 있었습니다. 그리고 Space Fantasy라는 테마도 적용해 봤는데, 꽤 멋진 느낌이었습니다.

Firefox에서 퍼소나(경량 테마)를 추출해 다른 프로필로 옮기는 방법

Firefox에서 퍼소나(경량 테마)를 추출해 다른 프로필로 옮기는 방법

Firefox에서 퍼소나(경량 테마)를 추출해 다른 프로필로 옮기는 방법

Firefox에서 퍼소나(경량 테마)를 추출해 다른 프로필로 옮기는 방법

그런데 다른 기기에서는 Space Fantasy 테마가 마음에 들지 않아 제거해 버렸습니다. 그 결과 Firefox의 사용 가능한 테마 목록에서 사라졌고, Mozilla 애드온 사이트에서도 찾을 수 없었습니다! 원래 있다고 해야 하는데 없는 상황입니다. 결국 다른 시스템의 다른 프로필에서 이 테마를 가져오는 방법이 문제로 떠올랐습니다.

Firefox에서 퍼소나(경량 테마)를 추출해 다른 프로필로 옮기는 방법

프로필 간에 퍼소나를 옮기는 방법

이 팁의 핵심은 퍼소나를 다른 곳에서 구할 수 없을 때 어떻게 확보하느냐입니다. 사실 아주 단순한 요구입니다. 테마를 설치했다면 Firefox 프로필 안에서 찾을 수 있어야 하니까요. 그 방법을 알려 드리겠습니다. 먼저 완전 테마(full theme)와 경량 테마(lightweight theme), 즉 퍼소나(Persona)의 차이부터 짚고 넘어갑니다.

완전 테마는 프로필 폴더의 extensions 하위 디렉터리에 저장됩니다. 프로필 위치는 운영체제에 따라 다릅니다. Windows에서는 다음 경로에 있습니다.

C:\Users\<user>\AppData\Roaming\Mozilla\Firefox\Profiles\<profile>

Linux에서는 다음과 같습니다.

/home/<user>/.mozilla/firefox/<profile>

물론 기본 설정을 사용한다는 가정입니다.

Firefox에서 퍼소나(경량 테마)를 추출해 다른 프로필로 옮기는 방법

반면 퍼소나는 위 스크린샷처럼 프로필 폴더 안의 prefs.js 파일에 선언 형태로 저장됩니다. 이 파일의 특정 부분을 살펴보겠습니다.

Firefox에서 퍼소나(경량 테마)를 추출해 다른 프로필로 옮기는 방법

...
user_pref("lightweightThemes.selectedThemeID", "recommended-2");
user_pref("lightweightThemes.usedThemes", "[{\"id\":\"recommended-2\",\"name\":\"Space Fantasy\",
\"headerURL\":\"resource:///chrome/browser/content/
browser/defaultthemes/2.header.jpg\",
\"footerURL\":\"resource:///chrome/browser/content/
browser/defaultthemes/2.footer.jpg\",
\"textcolor\":\"#ffffff\",\"accentcolor\":\"#d9d9d9\",
\"iconURL\":\"resource:///chrome/browser/content/
browser/defaultthemes/2.icon.jpg\",
\"previewURL\":\"resource:///chrome/browser/content/
browser/defaultthemes/2.preview.jpg\",
\"author\":\"fx5800p\",\"description\":\"Space Fantasy is (C) fx5800p. Available under CC-BY-SA. No warranty.\",
\"homepageURL\":\"https://addons.mozilla.org/
firefox/addon/space-fantasy/\",
\"version\":\"1.0\"},
{\"id\":\"recommended-4\",\"name\":\"Pastel Gradient\", ... }]");
...

복잡하고 지저분해 보입니다. 참고로 가독성을 위해 의도적으로 줄을 나눈 것입니다! 하지만 천천히 뜯어보겠습니다. 여기에는 여러 사용자 설정(user_pref)이 담겨 있습니다. 첫 번째 lightweightThemes.selectedThemeID는 현재 활성화된 테마가 무엇인지 정의합니다. 여기까지는 간단합니다.

두 번째 lightweightThemes.usedThemes는 현재 시스템에 설치된 테마들의 목록으로, 콤마로 구분되어 있습니다. 도구 > 부가 기능 > 디자인 메뉴에서도 같은 내용을 확인할 수 있습니다. 다소 지저분한 JSON 비슷한 형식을 따르지만 걱정할 필요는 없습니다.

Firefox에서 퍼소나(경량 테마)를 추출해 다른 프로필로 옮기는 방법

퍼소나를 한 프로필에서 다른 프로필로 옮기려면, 이 선언의 일부를 복사해서 대상 프로필의 해당 위치에 붙여넣기만 하면 됩니다. 구체적으로 Space Fantasy 퍼소나를 복사한다고 가정해 봅시다. 각 테마는 중괄호 { }로 정의되며, 테마 사이는 콤마로 구분됩니다. 정리하면 다음과 같은 형태입니다.

{\"id\":\"recommended-2\",
\"name\":\"Space Fantasy\",
\"headerURL\":\"resource:///chrome/browser/content/browser/->
-> defaultthemes/2.header.jpg\",
\"footerURL\":\"resource:///chrome/browser/content/browser/->
-> defaultthemes/2.footer.jpg\",
\"textcolor\":\"#ffffff\",
\"accentcolor\":\"#d9d9d9\",
\"iconURL\":\"resource:///chrome/browser/content/browser/->
-> defaultthemes/2.icon.jpg\",
\"previewURL\":\"resource:///chrome/browser/content/browser/->
-> defaultthemes/2.preview.jpg\",
\"author\":\"fx5800p\",
\"description\":\"Space Fantasy is (C) fx5800p. Available ->
-> under CC-BY-SA. No warranty.\",
\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/->
-> space-fantasy/\",
\"version\":\"1.0\"}

P.S. 데스크톱 사용자를 위해 덧붙이자면, -> 기호는 필자가 넣은 것으로 해당 항목이 다음 줄로 이어진다는 뜻입니다. 참고로 이 데이터는 콤마로 구분된 key:value 쌍의 나열이며, 특수 문자는 명시적으로 이스케이프 처리됩니다(따옴표 "는 \"로 표기). 지저분하고 괴짜스럽긴 하죠.

실제 이동 절차

이제 원본(source) Firefox 프로필에서 prefs.js 파일을 열고 lightweightThemes.usedThemes 섹션으로 이동합니다. 다른 프로필로 옮기고 싶은 테마를 찾아 해당 부분을 텍스트 파일로 저장해 둡니다. 필요한 구간은 중괄호로 시작해서 중괄호로 끝나며, 위에서 본 여러 필드를 포함합니다. 필자의 예시처럼 여러 줄로 나뉜 것이 아니라 실제로는 아주 긴 한 줄로 되어 있으니 이 점에 유의하세요.

이어서 대상(target) 프로필에서 prefs.js 파일을 열고 lightweightThemes.usedThemes 섹션으로 이동한 뒤, 복사해 둔 텍스트 조각을 해당 값의 맨 앞이나 맨 끝에 삽입합니다. 이때 문법이 올바른지 반드시 확인하세요. 대괄호와 중괄호의 위치, 콤마의 유무가 매우 중요합니다.

Firefox를 실행하면 대상 프로필에서 누락됐던 퍼소나를 다시 만날 수 있고, 원하는 대로 적용할 수 있습니다. 경량 테마가 갑자기 사라졌거나 온라인에서 찾을 수 없을 때 유용하게 쓸 수 있는 팁입니다.

결론

상당히 괴짜스러운 글이었습니다. 사실 prefs.js는 Firefox를 다룰 때 기쁨과 고통, 신비를 동시에 안겨 주는 파일입니다. HTML과 CSS를 조금만 다룰 줄 알아도, Linux의 데스크톱 테마를 수정하듯 브라우저의 외형과 동작을 마음껏 커스터마이징할 수 있습니다. 미친 소리처럼 들리지만, 바로 그것이 요즘 세상입니다. JSON은 현대의 연예(煉獄)라고나 할까요.

그럼에도 이런 철학적 논의는 잠시 접어 두고, 이 글이 실질적인 도움이 되기를 바랍니다. 퍼소나는 어느 날 등장했다가 어느 순간 사라지기도 하는데, Firefox는 서로 다른 프로필 간에 테마를 이동하거나 가져오는 간편한 방법을 제공하지 않기 때문에 다시 사용할 수 없으면 정말 답답할 수 있습니다. 이 가이드가 그 대안이 되어 주기를 바랍니다. 가장 쉽거나 우아한 방법은 아니지만, 일단 일은 해결됩니다. 그럼 다음에 또 만나요.

감사합니다.