Đây là một chủ đề lạ. Giả sử bạn có nhiều thiết bị chạy Firefox, không có đăng nhập hoặc đồng bộ (sync) nào được bật. Bạn cũng có nhiều hồ sơ (profile). Nhưng bạn là bạn, bạn vẫn có gu, và bạn đang dùng một số personas (chủ đề nhẹ), hoặc lightweight themes, nếu bạn muốn, trong trình duyệt. Một số trong số này không còn tải xuống được, nhưng bạn muốn di chuyển chúng giữa các hồ sơ khác nhau.
Bạn thử sao chép phần nội dung hồ sơ, như tiện ích mở rộng và những thứ, nhưng không thành công. Clone toàn bộ hồ sơ sẽ làm được, nhưng đó không phải thứ bạn muốn. Bạn chỉ muốn một theme cụ thể. Nhìn đầu tiên, dường như không có cách nào để làm điều này. Làm sao bây giờ?

Chi tiết vấn đề
Vài tuần trước, tôi đã dành thời gian dùng Firefox ở chế độ Australis, với Firefox 54 thay vì Firefox ESR (trước khi phát hành Firefox 57), cố gắng tìm ra xem fiasco (thảm họa) WebExtensions sắp tới, gây nhầm lẫn lớn, đáng sợ lớn, có bị foobary (hỏng hóc) như dự đoán không. Bây giờ, đó không phải là vấn đề. Chỉ là intro.
Trong khi test, tôi cũng thử vài theme mới – bao gồm Compact Light và Compact Dark của chính Mozilla, một cú gật đầu về mô hình sử dụng cổ điển – với nhược điểm đáng kể vẫn còn, bao gồm vị trí Bookmarks Toolbar (Thanh công cụ dấu trang) dưới điều khiển tab và quá gần khu vực xem chính, gây rối mắt. Sau đó, tôi cũng thử theme gọi là Space Fantasy (Không gian huyền ảo), trông khá neat (gọn gàng).

Trên thiết bị khác, theme Space Fantasy không làm việc, nên tôi gỡ nó. Lần lượt, điều này làm nó biến mất từ danh sách ngắn theme có sẵn trong Firefox, và cũng, tôi không thể tìm thấy nó trên trang add-ons của Mozilla! Hình như nó nên ở đó, nhưng không có. Vậy câu hỏi về chuyển từ hồ sơ khác trên hệ thống khác nảy sinh.

Cách di chuyển personas giữa các hồ sơ
Nhấn mạnh của thủ thuật này là cách lấy personas – NẾU chúng không có sẵn ở nơi khác. Thực sự, đây là yêu cầu đơn giản. Nếu bạn cài theme, bạn muốn có thể tìm thấy nó trong hồ sơ Firefox. Tôi sẽ chỉ cho bạn cách làm, nên trước tiên hãy phân biệt giữa full theme (theme đầy đủ) và light theme (theme nhẹ), còn gọi là Personas, chủ đề tôi đã thảo luận từ xưa.
Full theme có sẵn bên trong thư mục con extensions của thư mục hồ sơ. Vị trí hồ sơ phụ thuộc vào hệ điều hành. Trong Windows, bạn tìm thấy nó ở:
C:\Users\<user>\AppData\Roaming\Mozilla\Firefox\Profiles\<profile>
Trong Linux, ở:
/home/<user>/.mozilla/firefox/<profile>
Giả sử mặc định, là vậy.

Bây giờ, Personas có sẵn dưới dạng khai báo bên trong file prefs.js, một lần nữa, bên trong thư mục hồ sơ của bạn, như được hiển thị trong ảnh chụp màn hình trên. Hãy nhìn một phần cụ thể của file này, được không:

...
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\",
\"headerURL\":\"resource:///chrome/browser/content/
browser/defaultthemes/4.header.png\",
\"footerURL\":\"resource:///chrome/browser/content/
browser/defaultthemes/4.footer.png\",
\"textcolor\":\"#000000\",\"accentcolor\":\"#000000\",
\"iconURL\":\"resource:///chrome/browser/content/
browser/defaultthemes/4.icon.png\",
\"previewURL\":\"resource:///chrome/browser/content/
browser/defaultthemes/4.preview.png\",
\"author\":\"darrinhenein\",\"description\":\"Pastel Gradient is (C) darrinhenein. Available under CC-BY. No warranty.\",
\"homepageURL\":\"https://addons.mozilla.org/firefox/
addon/pastel-gradient/\",
\"version\":\"1.0\",\"updateDate\":1499641520955,
\"installDate\":1499641520955}]");
...
Trông phức tạp và xấu – lưu ý tôi đã ngắt dòng để rõ ràng! Nhưng hãy hiểu chúng ta có gì ở đây. Chúng ta có một vài user preferences (user_pref). Cái đầu, có nhãn lightweightThemes.selectedThemeID định nghĩa cái nào đang active. Cho đến đây đơn giản.
Cái thứ hai lightweightThemes.usedThemes là danh sách phân tách bằng dấu phẩy của các theme bạn hiện có trong hệ thống – bạn có thể kiểm tra qua Tools > Addons > Appearance (Công cụ > Tiện ích mở rộng > Giao diện), cũng được. Danh sách theo định dạng JSON-like xấu xí nhưng không nên lo lắng.

Nếu bạn muốn di chuyển personas từ hồ sơ này sang hồ sơ khác, bạn chỉ cần sao chép một phần của khai báo này và dán vào hồ sơ mục tiêu liên quan. Cụ thể, chúng ta muốn sao chép persona Space Fantasy. Mỗi theme được định nghĩa bởi ngoặc nhọn, và tách biệt từ cái khác bằng dấu phẩy. Đây là phần được làm sạch hơn một chút:
{\"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. Người dùng Desktop: ký tự -> là của tôi, và chúng chỉ thị chỉ thị cụ thể trôi qua sang dòng tiếp theo. FYI, đó chỉ là danh sách cặp key:value (khóa:giá trị), phân tách bằng dấu phẩy, và ký tự đặc biệt được khai báo rõ ràng (dấu ngoặc kép " thành \"). Xấu và nerdy.
Vậy bây giờ, bạn mở hồ sơ Firefox nguồn, mở file prefs.js, đến phần lightweightThemes.usedThemes, tìm theme bạn muốn chuyển sang hồ sơ khác và lưu phần cụ thể vào file text ở đâu đó. Phần cần thiết sẽ bắt đầu bằng ngoặc nhọn, kết thúc bằng một, và sẽ chứa các trường khác nhau như trên, trong một dòng mượt mà, trôi chảy. Khác với ví dụ của tôi, bị chia nhiều dòng cho ngắn gọn, nó sẽ là một dòng rất dài. Chú ý đến điều đó.
Trong hồ sơ mục tiêu, mở file prefs.js, đến phần lightweightThemes.usedThemes, và chèn đoạn text ở đầu hoặc cuối dòng, đảm bảo bạn giữ đúng cú pháp. Chú ý vị trí và sự hiện diện của ngoặc vuông mở/đóng và ngoặc nhọn, và dấu phẩy.
Khởi động Firefox, và bạn giờ nên có personas thiếu hụt trong hồ sơ mục tiêu, và bạn có thể áp dụng chúng như bạn thấy phù hợp. Đây là thủ thuật hữu ích khi lightweight themes bỗng biến mất, hoặc bạn không tìm thấy chúng trực tuyến.
Kết luận
Đây là bài viết nerdy. Thực tế, prefs.js là nguồn niềm vui, nỗi đau và kỳ quan khi nói đến Firefox, và nếu bạn có chút kiến thức HTML và CSS, rất giống theme desktop trong Linux, bạn có thể bắt đầu hack trình duyệt để trông và hành xử như bạn thấy phù hợp. Nghe điên rồ, nhưng đó là thế giới hiện đại ngay đó. JSON là ngục tối (purgatory) hiện đại của bạn.
Vẫn vậy, triết học suy nghĩ sang một bên, tôi hy vọng bạn thấy bài viết này hữu ích. Đôi khi, personas có thể đến và đi hoặc biến mất, và nó có thể làm bạn điên không thể dùng chúng lại, đặc biệt vì Firefox không cung cấp cách tầm thường để di chuyển và nhập theme giữa các hồ sơ khác nhau. Hy vọng, hướng dẫn đây cung cấp giải pháp thay thế cần thiết. Nó không phải dễ nhất hay đẹp nhất, nhưng nó làm việc xong. Hẹn gặp lại.
Cheers.