This commit is contained in:
mr. m
2025-09-13 19:55:07 +02:00
62 changed files with 693 additions and 144 deletions

View File

@@ -223,7 +223,7 @@ zen-key-exit-full-screen = Ukončit režim celé obrazovky
zen-ai-chatbot-sidebar-shortcut = Přepnout postranní panel AI chatbota
zen-key-inspector-mac = Přepnout inspektor (Mac)
zen-toggle-sidebar-shortcut = Přepnout postranní panel Firefoxu
zen-toggle-pin-tab-shortcut = Toggle Pin Tab
zen-toggle-pin-tab-shortcut = Přepnout připnutí záložky
zen-reader-mode-toggle-shortcut-other = Přepnout čtecí režim
zen-picture-in-picture-toggle-shortcut = Přepnout obraz v obraze
zen-nav-reload-shortcut-2 = Znovu načíst stránku
@@ -257,7 +257,7 @@ zen-close-tab-shortcut = Zavřít kartu
zen-compact-mode-shortcut-show-sidebar = Přepnout plovoucí postranní panel
zen-compact-mode-shortcut-show-toolbar = Přepnout plovoucí panel nástrojů
zen-compact-mode-shortcut-toggle = Přepnout kompaktní režim
zen-glance-expand = Expand Glance
zen-glance-expand = Rozšířit Glance
zen-workspace-shortcut-switch-1 = Přepnout do pracovního prostoru 1
zen-workspace-shortcut-switch-2 = Přepnout do pracovního prostoru 2
zen-workspace-shortcut-switch-3 = Přepnout do pracovního prostoru 3

View File

@@ -10,14 +10,14 @@ zen-layout-collapsed-toolbar = Barre doutils réduite
sync-currently-syncing-workspaces = Espaces de travail
sync-engine-workspaces =
.label = Espaces de travail
.tooltiptext = Synchroniser vos Espaces de travail sur plusieurs appareils
.tooltiptext = Synchronisez vos espaces de travail sur plusieurs appareils
.accesskey = W
zen-glance-title = Aperçu
zen-glance-header = Paramètres généraux dAperçu
zen-glance-title = Glance
zen-glance-header = Paramètres généraux de Glance
zen-glance-description = Obtenez un aperçu rapide de vos liens, sans les ouvrir dans un nouvel onglet
zen-glance-trigger-label = Méthode de déclenchement
zen-glance-enabled =
.label = Activer Aperçu
.label = Activer Glance
zen-glance-trigger-ctrl-click =
.label = Ctrl + clic
zen-glance-trigger-alt-click =
@@ -54,7 +54,7 @@ zen-pinned-tab-manager-description = Gérer le comportement supplémentaire des
zen-pinned-tab-manager-restore-pinned-tabs-to-pinned-url =
.label = Au démarrage, restaurer les onglets épinglés à leur URL dorigine
zen-pinned-tab-manager-container-specific-essentials-enabled =
.label = Activer les Essentiels spécifiques aux conteneurs
.label = Activer les Essentials spécifiques aux conteneurs
zen-pinned-tab-manager-close-shortcut-behavior-label = Comportement du raccourci pour fermer l'onglet
zen-pinned-tab-manager-reset-unload-switch-close-shortcut-option =
.label = Réinitialiser lURL, décharger et passer à longlet suivant
@@ -69,10 +69,10 @@ zen-pinned-tab-manager-reset-close-shortcut-option =
zen-pinned-tab-manager-close-close-shortcut-option =
.label = Fermer longlet
pane-zen-workspaces-header = Espaces de travail
zen-settings-workspaces-header = Paramètres généraux des Espaces de travail
zen-settings-workspaces-description = Avec les Espaces de travail, vous pouvez avoir plusieurs sessions de navigation à la fois!
zen-settings-workspaces-header = Paramètres généraux des espaces de travail
zen-settings-workspaces-description = Avec les espaces de travail, vous pouvez avoir plusieurs sessions de navigation à la fois!
zen-settings-workspaces-enabled =
.label = Activer les Espaces de travail
.label = Activer les espaces de travail
zen-settings-workspaces-hide-default-container-indicator =
.label = Dans la barre donglets, masquer lindicateur de conteneur par défaut
zen-key-unsaved = Raccourci non sauvegardé! Pour lenregistrer, veuillez le resaisir et en appuyer sur Échap.
@@ -128,7 +128,7 @@ pane-zen-marketplace-title = Mods Zen
zen-themes-auto-update =
.label = Mettre à jour automatiquement les mods installés lors du démarrage
zen-settings-workspaces-force-container-tabs-to-workspace =
.label = À l'ouverture des onglets du conteneur, basculer vers lEspace de travail où le conteneur est défini par défaut
.label = À l'ouverture des onglets du conteneur, basculer vers lespace de travail où le conteneur est défini par défaut
zen-theme-marketplace-link = Visiter le magasin
zen-dark-theme-styles-header = Styles de thème sombre
zen-dark-theme-styles-description = Personnalisez le thème sombre selon vos préférences
@@ -223,7 +223,7 @@ zen-key-exit-full-screen = Quitter le mode plein écran
zen-ai-chatbot-sidebar-shortcut = Activer/désactiver la barre latérale de discussion IA
zen-key-inspector-mac = Activer/désactiver linspecteur (macOS)
zen-toggle-sidebar-shortcut = Activer/désactiver la barre latérale de Firefox
zen-toggle-pin-tab-shortcut = Activer Epingler l'onglet
zen-toggle-pin-tab-shortcut = Activer/désactiver Épingler l'onglet
zen-reader-mode-toggle-shortcut-other = Activer/désactiver le mode lecture
zen-picture-in-picture-toggle-shortcut = Activer/désactiver le mode inscrutation
zen-nav-reload-shortcut-2 = Recharger la page

View File

@@ -9,9 +9,9 @@ zen-folders-new-subfolder =
zen-folders-panel-delete-folder =
.label = Supprimer le dossier
zen-folders-panel-convert-folder-to-space =
.label = Convertir le dossier en Espace
.label = Convertir le dossier en espace
zen-folders-panel-change-folder-space =
.label = Changer d'Espace...
.label = Changer d'espace...
zen-folders-panel-change-icon-folder =
.label = Changer d'icône
zen-folders-unload-all-tooltip =

View File

@@ -4,10 +4,10 @@ tab-context-zen-reset-pinned-tab =
.label = Réinitialiser longlet épinglé
.accesskey = R
tab-context-zen-add-essential =
.label = Ajouter aux Essentiels ({ $num } / 12 emplacements remplis)
.label = Ajouter aux Essentials ({ $num } / 12 emplacements remplis)
.accesskey = E
tab-context-zen-remove-essential =
.label = Retirer des Essentiels
.label = Retirer des Essentials
.accesskey = R
tab-context-zen-replace-pinned-url-with-current =
.label = Remplacer lURL épinglée par lactuelle

View File

@@ -3,7 +3,7 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
zen-welcome-title-line1 = Bienvenue dans
zen-welcome-title-line2 = un internet plus calme
zen-welcome-title-line2 = un Internet plus calme
zen-welcome-import-title = Un nouveau départ, les mêmes favoris
zen-welcome-import-description-1 = Vos favoris, votre historique, et vos mots de passe sont comme des miettes sur internet. Ne les laissez pas trainer derrière vous!
zen-welcome-import-description-2 = Importez-les facilement depuis un autre navigateur et reprenez là où vous vous êtes arrêté.
@@ -12,8 +12,8 @@ zen-welcome-set-default-browser = Définir { -brand-short-name } comme votre nav
zen-welcome-dont-set-default-browser = NE PAS définir { -brand-short-name } comme votre navigateur par défaut
zen-welcome-initial-essentials-title = Vos onglets principaux, toujours à portée de main
zen-welcome-initial-essentials-description-1 = Gardez vos onglets les plus importants facilement accessibles et toujours à portée de main, peu importe combien vous en ouvrez.
zen-welcome-initial-essentials-description-2 = Les onglets Essentiels sont toujours visibles, peu importe lespace de travail où vous êtes.
zen-welcome-workspace-colors-title = Vos Espaces de travail, vos couleurs
zen-welcome-initial-essentials-description-2 = Les onglets Essentials sont toujours visibles, peu importe lespace de travail où vous êtes.
zen-welcome-workspace-colors-title = Vos espaces de travail, vos couleurs
zen-welcome-workspace-colors-description = Personnalisez votre navigateur en donnant à chaque espace de travail sa propre identité de couleur.
zen-welcome-start-browsing-title =
Tout est prêt?<br/>

View File

@@ -1,10 +1,10 @@
zen-panel-ui-workspaces-text = Espaces
zen-panel-ui-workspaces-create =
.label = Créer un Espace
.label = Créer un espace
zen-panel-ui-folder-create =
.label = Créer un dossier
zen-workspaces-panel-context-delete =
.label = Supprimer lEspace
.label = Supprimer lespace
.accesskey = D
zen-workspaces-panel-change-name =
.label = Modifier le nom
@@ -12,18 +12,18 @@ zen-workspaces-panel-change-icon =
.label = Changer d'icône
zen-workspaces-panel-context-default-profile =
.label = Définir le profil
zen-workspaces-how-to-reorder-title = Comment réordonner les Espaces
zen-workspaces-how-to-reorder-title = Comment réordonner les espaces
zen-workspaces-how-to-reorder-desc = Faites glisser les icônes d'espace en bas de la barre latérale pour les réorganiser
zen-workspaces-change-theme =
.label = Modifier le thème
zen-workspaces-panel-context-open =
.label = Ouvrir un Espace de travail
.label = Ouvrir un espace de travail
.accesskey = O
zen-workspaces-panel-context-edit =
.label = Éditer lEspace
.label = Éditer lespace
.accesskey = E
context-zen-change-workspace-tab =
.label = Déplacer vers lEspace de travail
.label = Déplacer vers lespace de travail
.accesskey = C
zen-bookmark-edit-panel-workspace-selector =
.value = Espaces de travail
@@ -40,12 +40,12 @@ zen-panel-ui-gradient-generator-algo-floating =
.label = Flottant
zen-panel-ui-gradient-click-to-add = Cliquez pour ajouter une couleur
zen-workspace-creation-name =
.placeholder = Nom de l'Espace
.placeholder = Nom de l'espace
zen-workspaces-panel-context-reorder =
.label = Réorganiser les Espaces
.label = Réorganiser les espaces
zen-workspace-creation-profile = Profil
.tooltiptext = Les profils sont utilisés pour séparer les cookies et les données des sites entre les Espaces.
zen-workspace-creation-header = Créer un Espace
zen-workspace-creation-label = Les Espaces sont utilisés pour organiser vos onglets et sessions.
zen-workspaces-delete-workspace-title = Supprimer lEspace ?
zen-workspace-creation-header = Créer un espace
zen-workspace-creation-label = Les espaces sont utilisés pour organiser vos onglets et sessions.
zen-workspaces-delete-workspace-title = Supprimer lespace ?
zen-workspaces-delete-workspace-body = Êtes-vous sûr de vouloir supprimer { $name } ? Cette action ne peut pas être annulée.

View File

@@ -223,7 +223,7 @@ zen-key-exit-full-screen = Scoir Lánscáileáin
zen-ai-chatbot-sidebar-shortcut = Barra Taobh Comhrá AI a Athrú
zen-key-inspector-mac = Scoránaigh Cigire (Mac)
zen-toggle-sidebar-shortcut = Scoránaigh an Taobhbharra Firefox
zen-toggle-pin-tab-shortcut = Toggle Pin Tab
zen-toggle-pin-tab-shortcut = Cluaisín bioráin a scoránaigh
zen-reader-mode-toggle-shortcut-other = Scoránaigh Mód Léitheoir
zen-picture-in-picture-toggle-shortcut = Scoránaigh Pictiúr-i-Pictiúr
zen-nav-reload-shortcut-2 = Athlódáil an Leathanach
@@ -257,7 +257,7 @@ zen-close-tab-shortcut = Dún an Cluaisín
zen-compact-mode-shortcut-show-sidebar = Scoránaigh Barra Taoibh Snámh
zen-compact-mode-shortcut-show-toolbar = Scoránaigh Barra Uirlisí Snámh
zen-compact-mode-shortcut-toggle = Scoránaigh Mód Dlúth
zen-glance-expand = Expand Glance
zen-glance-expand = Leathnaigh an Súil
zen-workspace-shortcut-switch-1 = Athraigh go Spás Oibre 1
zen-workspace-shortcut-switch-2 = Athraigh go Spás Oibre 2
zen-workspace-shortcut-switch-3 = Athraigh go Spás Oibre 3

View File

@@ -223,7 +223,7 @@ zen-key-exit-full-screen = Keluar Dari Layar Penuh
zen-ai-chatbot-sidebar-shortcut = Beralih ke AI Chatbot Sidebar
zen-key-inspector-mac = Beralih ke Inspector (Mac)
zen-toggle-sidebar-shortcut = Beralih ke Firefox Sidebar
zen-toggle-pin-tab-shortcut = Toggle Pin Tab
zen-toggle-pin-tab-shortcut = Alihkan Sematan Tab
zen-reader-mode-toggle-shortcut-other = Aktif/nonaktifkan Mode Membaca
zen-picture-in-picture-toggle-shortcut = Aktif/nonaktifkan Picture-in-Picture
zen-nav-reload-shortcut-2 = Muat Ulang Halaman
@@ -257,7 +257,7 @@ zen-close-tab-shortcut = Tutup Tab
zen-compact-mode-shortcut-show-sidebar = Beralih ke Bilah sisi mengambang
zen-compact-mode-shortcut-show-toolbar = Nyala/Matikan Toolbar Mengambang
zen-compact-mode-shortcut-toggle = Aktifkan/Sembunyikan Mode Ringkas
zen-glance-expand = Expand Glance
zen-glance-expand = Perluas Glance
zen-workspace-shortcut-switch-1 = Beralih ke Ruang Kerja 1
zen-workspace-shortcut-switch-2 = Beralih ke Ruang Kerja 2
zen-workspace-shortcut-switch-3 = Beralih ke Ruang Kerja 3

View File

@@ -15,7 +15,7 @@ zen-folders-panel-change-folder-space =
zen-folders-panel-change-icon-folder =
.label = Ubah Ikon
zen-folders-unload-all-tooltip =
.tooltiptext = Unload active in this folder
.tooltiptext = Lepaskan tab yang aktif di folder ini
zen-folders-unload-folder =
.label = Lepaskan Semua Tab
zen-folders-search-no-results = Tidak ada tab yang cocok 🤔

View File

@@ -15,7 +15,7 @@ sync-engine-workspaces =
zen-glance-title = Glance
zen-glance-header = Glance 一般設定
zen-glance-description = 無需打開新分頁,即可快速預覽
zen-glance-trigger-label = 觸發方
zen-glance-trigger-label = 觸發方
zen-glance-enabled =
.label = 啟用 Glance
zen-glance-trigger-ctrl-click =
@@ -27,7 +27,7 @@ zen-glance-trigger-shift-click =
zen-glance-trigger-meta-click =
.label = Meta (Command) + 左鍵
zen-glance-trigger-mantain-click =
.label = Mantain Click
.label = 長按(即將上線!)
zen-look-and-feel-compact-view-header = 在緊湊模式下顯示
zen-look-and-feel-compact-view-description = 只顯示你需要用的工具欄!
zen-look-and-feel-compact-view-enabled =
@@ -45,7 +45,7 @@ zen-tabs-unloader-enabled =
zen-look-and-feel-compact-toolbar-themed =
.label = 將主題顏色套用至折疊工具欄
zen-look-and-feel-compact-sidebar-themed =
.label = 將主題顏色套用至疊側邊欄
.label = 將主題顏色套用至疊側邊欄
zen-workspace-continue-where-left-off =
.label = Continue where you left off
pane-zen-pinned-tab-manager-title = 釘選分頁
@@ -70,12 +70,12 @@ zen-pinned-tab-manager-close-close-shortcut-option =
.label = 關閉分頁
pane-zen-workspaces-header = 工作區
zen-settings-workspaces-header = 工作區的一般設定
zen-settings-workspaces-description = 有了工作區,你就可以同時瀏覽多個頁面
zen-settings-workspaces-description = 透過工作區,您能同時擁有多個獨立的瀏覽環境
zen-settings-workspaces-enabled =
.label = 啟用工作區 (實驗性的)
.label = 啟用工作區
zen-settings-workspaces-hide-default-container-indicator =
.label = 隱藏分頁欄中的容器指標
zen-key-unsaved = 快捷鍵未儲存!請重新輸入並按下 "Escape" 鍵來儲存快捷鍵
zen-key-unsaved = 快捷鍵未儲存!請重新輸入並按下 "Escape" 鍵來儲存快捷鍵
zen-key-conflict = 與其它快捷鍵發生衝突
pane-zen-theme-title = 主題設定
zen-vertical-tabs-title = 側邊欄與分頁排版
@@ -92,7 +92,7 @@ zen-vertical-tabs-dont-expand-tabs-by-default = 預設不展開分頁
zen-vertical-tabs-expand-tabs-on-hover = 懸停時擴展分頁 (無法在緊湊模式下使用)
zen-vertical-tabs-expand-tabs-header = 如何擴展分頁
zen-vertical-tabs-expand-tabs-description = 選擇要如何擴展側邊欄中的分頁
zen-theme-marketplace-header = Zen模式
zen-theme-marketplace-header = Zen 模組
zen-theme-disable-all-enabled =
.title = 啟用所有主題
zen-theme-disable-all-disabled =
@@ -103,15 +103,15 @@ zen-theme-marketplace-remove-button =
zen-theme-marketplace-check-for-updates-button =
.label = 檢查更新
zen-theme-marketplace-import-button =
.label = Import mods
.label = 匯入模組
zen-theme-marketplace-export-button =
.label = Export Mods
zen-theme-marketplace-import-success = Mods imported successfully
zen-theme-marketplace-import-failure = There was an error importing the mods
zen-theme-marketplace-export-success = Mods exported successfully
zen-theme-marketplace-export-failure = There was an error exporting the mods
.label = 匯出模組
zen-theme-marketplace-import-success = 模組匯入成功
zen-theme-marketplace-import-failure = 匯入模組時發生錯誤
zen-theme-marketplace-export-success = 模組匯出成功
zen-theme-marketplace-export-failure = 匯出模組時發生錯誤
zen-theme-marketplace-updates-success = 主題更新成功
zen-theme-marketplace-updates-failure = Couldn't find any updates!
zen-theme-marketplace-updates-failure = 找不到任何更新!
zen-theme-marketplace-toggle-enabled-button =
.title = 關閉佈景主題
zen-theme-marketplace-toggle-disabled-button =
@@ -126,7 +126,7 @@ zen-theme-marketplace-input-default-placeholder =
.placeholder = 請輸入
pane-zen-marketplace-title = Zen 模式
zen-themes-auto-update =
.label = Automatically update installed mods on startup
.label = 啟動時自動更新已安裝模組
zen-settings-workspaces-force-container-tabs-to-workspace =
.label = 開啟容器分頁時,切換到容器設定為預設值的工作區
zen-theme-marketplace-link = 造訪商店
@@ -175,17 +175,17 @@ zenCKSOption-group-devTools = 開發人員工具
zen-key-quick-restart = 快速重啟
zen-window-new-shortcut = 開新視窗
zen-tab-new-shortcut = 開新分頁
zen-key-redo = 取消「復原」
zen-key-redo = 重做
zen-restore-last-closed-tab-shortcut = 復原上次關閉的分頁
zen-location-open-shortcut = 選取網址列
zen-location-open-shortcut-alt = 選取網址列 (備用)
zen-location-open-shortcut-alt = 選取網址列備用
zen-key-undo-close-window = 還原已關閉視窗
zen-text-action-undo-shortcut = 復原
zen-text-action-redo-shortcut = 取消「復原」
zen-text-action-cut-shortcut = 剪下
zen-text-action-copy-shortcut = 複製
zen-text-action-copy-url-shortcut = 複製目前網址
zen-text-action-copy-url-markdown-shortcut = 目前網址複製Markdown
zen-text-action-copy-url-markdown-shortcut = 目前網址複製Markdown
zen-text-action-paste-shortcut = 貼上
zen-text-action-select-all-shortcut = 全選
zen-text-action-delete-shortcut = 刪除
@@ -240,9 +240,9 @@ zen-key-stop = 停止載入
zen-full-zoom-reduce-shortcut = 縮小
zen-full-zoom-enlarge-shortcut = 放大
zen-full-zoom-reset-shortcut = 縮放重設
zen-full-zoom-reset-shortcut-alt = Reset Zoom (Alt)
zen-full-zoom-enlarge-shortcut-alt = Zoom In (Alt)
zen-full-zoom-enlarge-shortcut-alt2 = Zoom In (Alt 2)
zen-full-zoom-reset-shortcut-alt = 重置縮放(Alt
zen-full-zoom-enlarge-shortcut-alt = 放大(Alt
zen-full-zoom-enlarge-shortcut-alt2 = 放大(Alt 2
zen-bidi-switch-direction-shortcut = 切換文字方向
zen-private-browsing-shortcut = 隱私瀏覽
zen-screenshot-shortcut = 截圖

View File

@@ -18,4 +18,4 @@ zen-folders-unload-all-tooltip =
.tooltiptext = Unload active in this folder
zen-folders-unload-folder =
.label = Unload All Tabs
zen-folders-search-no-results = No tabs matching that search 🤔
zen-folders-search-no-results = 沒有找到搜尋的分頁 🤔

View File

@@ -12,7 +12,7 @@ tab-context-zen-remove-essential =
tab-context-zen-replace-pinned-url-with-current =
.label = 將釘選的網址換成目前的網址
.accesskey = C
zen-themes-corrupted = 你的 { -brand-short-name } 模組文件已損壞,它們已重置為預設佈景主題
zen-themes-corrupted = 你的 { -brand-short-name } 模組文件已損壞,它們已重置為預設佈景主題
zen-shortcuts-corrupted = 你的 { -brand-short-name } 快捷文件已損壞。它們已被重設為預設值。
# note: Do not translate the "<br/>" tags in the following string
zen-new-urlbar-notification = 新的 URL 欄已啟用,你不再需要新增新分頁。<br/><br/>馬上打開新分頁來看看新的 URL 欄!
@@ -24,25 +24,25 @@ zen-panel-ui-gradient-generator-custom-color = 自訂顏色
zen-panel-ui-gradient-generator-saved-message = 漸層儲存成功!
zen-copy-current-url-confirmation = 網址已複製到剪貼簿。
zen-general-cancel-label =
.label = Cancel
.label = 取消
zen-general-confirm =
.label = Confirm
.label = 確認
zen-pinned-tab-replaced = 釘選分頁網址已替換為當前當前網址。
zen-tabs-renamed = 分頁重新命名成功!
zen-background-tab-opened-toast = New background tab opened!
zen-workspace-renamed-toast = Workspace has been successfully renamed!
zen-library-sidebar-workspaces =
.label = Spaces
.label = 工作區
zen-library-sidebar-mods =
.label = Mods
.label = 模組
# note: Do not translate the "<br/>" tags in the following string
zen-learn-more-text = 瞭解更多
zen-close-label = 關閉
zen-singletoolbar-urlbar-placeholder-with-name =
.placeholder = Search...
.placeholder = 搜尋...
zen-icons-picker-emoji =
.label = Emojis
.label = 表情符號
zen-icons-picker-svg =
.label = Icons

View File

@@ -11,6 +11,6 @@ zen-split-link =
zen-split-view-modifier-header = 分割畫面
zen-split-view-modifier-activate-reallocation =
.label = 啟用重新分配
zen-split-view-modifier-enabled-toast = 分割畫面重新排列已開啟
zen-split-view-modifier-enabled-toast = 分割畫面重新排列已開啟
zen-split-view-modifier-enabled-toast-description = 拖曳畫面以重新排列。按 Esc 鍵退出
zen-split-view-modifier-disabled-toast = 分割畫面重新排列已關閉

View File

@@ -33,4 +33,4 @@ tabbrowser-reset-pin-button =
[one] Reset and pin tab
*[other] Reset and pin { $tabCount } tabs
}
tab-reset-pin-label = Back to pinned url
tab-reset-pin-label = 返回釘選網址

View File

@@ -6,7 +6,7 @@ zen-welcome-title-line1 = Welcome to
zen-welcome-title-line2 = a calmer internet
zen-welcome-import-title = A Fresh Start, Same Bookmarks
zen-welcome-import-description-1 = Your bookmarks, history, and passwords are like a trail of breadcrumbs through the internet—dont leave them behind!
zen-welcome-import-description-2 = Easily bring them over from another browser and pick up right where you left off..
zen-welcome-import-description-2 = 輕鬆匯入其他瀏覽器的資料,無縫接續瀏覽體驗。
zen-welcome-import-button = Import now
zen-welcome-set-default-browser = Set { -brand-short-name } as your default browser
zen-welcome-dont-set-default-browser = DONT set { -brand-short-name } as your default browser

View File

@@ -1,21 +1,21 @@
zen-panel-ui-workspaces-text = 其他工作區
zen-panel-ui-workspaces-text = 工作區
zen-panel-ui-workspaces-create =
.label = Create Space
.label = 創建工作區
zen-panel-ui-folder-create =
.label = Create Folder
zen-workspaces-panel-context-delete =
.label = 刪除工作區
.accesskey = D
zen-workspaces-panel-change-name =
.label = Change Name
.label = 重新命名
zen-workspaces-panel-change-icon =
.label = Change Icon
.label = 變更圖示
zen-workspaces-panel-context-default-profile =
.label = Set Profile
zen-workspaces-how-to-reorder-title = How to reorder spaces
zen-workspaces-how-to-reorder-desc = Drag the space icons at the bottom of the sidebar to reorder them
zen-workspaces-how-to-reorder-title = 如何排序工作區
zen-workspaces-how-to-reorder-desc = 拖曳側邊欄底部工作區圖示以重新排序
zen-workspaces-change-theme =
.label = Edit Theme
.label = 編輯主題
zen-workspaces-panel-context-open =
.label = 打開工作區
.accesskey = O
@@ -23,7 +23,7 @@ zen-workspaces-panel-context-edit =
.label = 編輯工作區
.accesskey = E
context-zen-change-workspace-tab =
.label = 將分頁(含多個)移至工作區
.label = 將分頁含多個移至工作區
.accesskey = C
zen-bookmark-edit-panel-workspace-selector =
.value = 選擇工作區
@@ -40,12 +40,12 @@ zen-panel-ui-gradient-generator-algo-floating =
.label = 懸浮
zen-panel-ui-gradient-click-to-add = 點擊新增顏色
zen-workspace-creation-name =
.placeholder = Space Name
.placeholder = 工作區名稱
zen-workspaces-panel-context-reorder =
.label = Reorder Spaces
.label = 排序工作區
zen-workspace-creation-profile = Profile
.tooltiptext = Profiles are used to separate cookies and site data between spaces.
zen-workspace-creation-header = Create a Space
zen-workspace-creation-header = 創建工作區
zen-workspace-creation-label = Spaces are used to organize your tabs and sessions.
zen-workspaces-delete-workspace-title = Delete Workspace?
zen-workspaces-delete-workspace-body = Are you sure you want to delete { $name }? This action cannot be undone.
zen-workspaces-delete-workspace-title = 刪除工作區?
zen-workspaces-delete-workspace-body = 你確定要刪除 { $name } 嗎?該動作無法物復原。

View File

@@ -22,3 +22,8 @@
- name: zen.urlbar.enable-overrides
value: false
# Mark: Zen suggestions controls
- name: zen.urlbar.suggestions.quick-actions
value: true

View File

@@ -8,7 +8,6 @@
content/browser/zen-sets.js (../../zen/common/zen-sets.js)
content/browser/ZenUIManager.mjs (../../zen/common/ZenUIManager.mjs)
content/browser/zen-components/ZenActorsManager.mjs (../../zen/common/ZenActorsManager.mjs)
content/browser/zen-components/ZenUIMigration.mjs (../../zen/common/ZenUIMigration.mjs)
content/browser/zen-components/ZenCommonUtils.mjs (../../zen/common/ZenCommonUtils.mjs)
content/browser/zen-components/ZenSessionStore.mjs (../../zen/common/ZenSessionStore.mjs)
content/browser/zen-components/ZenEmojisData.min.mjs (../../zen/common/emojis/ZenEmojisData.min.mjs)

View File

@@ -1,12 +1,12 @@
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
index eae3ed9518ad9ce2103bb912963465c1b10ac050..51859cd542bc69f524d891a67e725c30d4cf14bb 100644
index eae3ed9518ad9ce2103bb912963465c1b10ac050..ccbb04cd36fd8fd63fd8c9ebd0b51f0a5966829c 100644
--- a/browser/components/BrowserGlue.sys.mjs
+++ b/browser/components/BrowserGlue.sys.mjs
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
const lazy = {};
ChromeUtils.defineESModuleGetters(lazy, {
+ gZenUIMigration: "chrome://browser/content/zen-components/ZenUIMigration.mjs",
+ gZenUIMigration: "resource:///modules/ZenUIMigration.sys.mjs",
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs",

View File

@@ -1,13 +0,0 @@
diff --git a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
index 555273f6ea1efd77aa3062b9910bbfe28568775d..c8aae86e1233d256e538970d58fd0febed745893 100644
--- a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
+++ b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
@@ -138,7 +138,7 @@ class ProvidersManager {
// To improve dataflow and reduce UI work, when a result is added we may notify
// it to the controller after a delay, so that we can chunk results in that
// timeframe into a single call. See _notifyResultsFromProvider for details.
- this.CHUNK_RESULTS_DELAY_MS = 16;
+ this.CHUNK_RESULTS_DELAY_MS = 20;
}
/**

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
index fdbab8806fd320f4aacec46a42c8ef953580d00c..a1be83735cd2b69d335cd36d3287cd3b3e3f2a5b 100644
index fdbab8806fd320f4aacec46a42c8ef953580d00c..40568280c3ba2f0a36f4443a5116430d3c502ec1 100644
--- a/browser/components/urlbar/UrlbarView.sys.mjs
+++ b/browser/components/urlbar/UrlbarView.sys.mjs
@@ -613,7 +613,7 @@ export class UrlbarView {
@@ -11,7 +11,27 @@ index fdbab8806fd320f4aacec46a42c8ef953580d00c..a1be83735cd2b69d335cd36d3287cd3b
// Try to reuse the cached top-sites context. If it's not cached, then
// there will be a gap of time between when the input is focused and
// when the view opens that can be perceived as flicker.
@@ -1341,7 +1341,7 @@ export class UrlbarView {
@@ -823,6 +823,19 @@ export class UrlbarView {
// them, resembling tab-to-search. In that case, the input value is
// still associated with the first result.
this.input.setResultForCurrentValue(firstResult);
+ } else if (firstResult.payload.zenAction) {
+ this.#selectElement(this.getFirstSelectableElement(), {
+ updateInput: false,
+ setAccessibleFocus:
+ this.controller._userSelectionBehavior == "arrow",
+ });
+ this.window.setTimeout(() => {
+ this.#selectElement(this.getFirstSelectableElement(), {
+ updateInput: false,
+ setAccessibleFocus:
+ this.controller._userSelectionBehavior == "arrow",
+ });
+ }, 150);
}
}
@@ -1341,7 +1354,7 @@ export class UrlbarView {
includeHiddenExposures: true,
});
let canBeVisible =
@@ -20,7 +40,7 @@ index fdbab8806fd320f4aacec46a42c8ef953580d00c..a1be83735cd2b69d335cd36d3287cd3b
if (result.isHiddenExposure) {
if (canBeVisible) {
this.controller.engagementEvent.addExposure(
@@ -3189,7 +3189,7 @@ export class UrlbarView {
@@ -3189,7 +3202,7 @@ export class UrlbarView {
}
#enableOrDisableRowWrap() {

View File

@@ -1,3 +1,6 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from source XPCOM .idl files.

View File

@@ -1,3 +1,6 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from source .webidl files.

View File

@@ -1,3 +1,6 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from glean .yaml files.

View File

@@ -1,3 +1,6 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from source XPCOM .idl files.

View File

@@ -1,3 +1,6 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated by running "mach ts paths".

View File

@@ -1,3 +1,6 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from xpc.msg and error_list.json.

View File

@@ -1,3 +1,6 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from services.json.

View File

@@ -1,3 +1,6 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
/**
* Gecko generic/specialized adjustments for xpcom and webidl types.
*/

View File

@@ -1,3 +1,6 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from source XPCOM .idl files.

View File

@@ -1,3 +1,6 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
/**
* NOTE: Do not modify this file by hand.
* Content was generated from source XPCOM .idl files.

View File

@@ -1,3 +1,6 @@
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
/**
* Gecko XPIDL base types.
*/

View File

@@ -75,6 +75,14 @@ var gZenUIManager = {
this._initCreateNewPopup();
this._debloatContextMenus();
this._initOmniboxCommands();
},
_initOmniboxCommands() {
const { registerZenUrlbarProviders } = ChromeUtils.importESModule(
'resource:///modules/ZenUBProvider.sys.mjs'
);
registerZenUrlbarProviders();
},
_debloatContextMenus() {

View File

@@ -4,4 +4,5 @@
EXTRA_JS_MODULES += [
"ZenCustomizableUI.sys.mjs",
"ZenUIMigration.sys.mjs",
]

View File

@@ -89,8 +89,8 @@
}
}
:root[animating-background='true'] &::after,
:root[animating-background='true'] &::before {
&::after,
&::before {
mix-blend-mode: plus-lighter;
}
}

View File

@@ -206,7 +206,7 @@
--tab-close-button-padding: 5px !important;
--input-border-color: var(--zen-input-border-color) !important;
--zen-themed-toolbar-bg-transparent: light-dark(var(--zen-branding-bg), #171717);
--zen-themed-toolbar-bg-transparent: transparent;
--zen-workspace-indicator-height: 46px;
@@ -265,13 +265,9 @@
#main-window:not([chromehidden~='toolbar']) {
min-height: 495px !important;
@media (-moz-windows-mica) or (-moz-platform: macos) or ((-moz-platform: linux) and -moz-pref('zen.widget.linux.transparency')) {
background: transparent;
--zen-themed-toolbar-bg-transparent: transparent;
@media (-moz-windows-mica) and (not (-moz-pref('widget.windows.mica.toplevel-backdrop', 1))) and (not (-moz-pref('widget.windows.mica.toplevel-backdrop', 2))) {
--zen-themed-toolbar-bg-transparent: rgba(255, 255, 255, 0.2);
}
background: transparent;
@media (-moz-windows-mica) and (not (-moz-pref('widget.windows.mica.toplevel-backdrop', 1))) and (not (-moz-pref('widget.windows.mica.toplevel-backdrop', 2))) {
--zen-themed-toolbar-bg-transparent: rgba(255, 255, 255, 0.2);
}
&,

View File

@@ -61,8 +61,11 @@
}
#urlbar:not([breakout-extend='true']) {
:root:not([supress-primary-adjustment]) & .urlbar-background {
& .urlbar-background {
transition: background-color 0.15s ease;
:root[supress-primary-adjustment] & {
transition: none !important;
}
}
&:hover .urlbar-background {
@@ -559,6 +562,22 @@ button.popup-notification-dropmarker {
border-top: none !important;
}
.urlbarView-shortcutContent {
border-radius: 4px;
padding: 6px 8px;
font-size: 10px;
font-weight: 600;
text-transform: uppercase;
margin-left: auto;
margin-top: auto;
margin-bottom: auto;
box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1);
&:empty {
display: none !important;
}
}
.urlbarView-row[has-action]:is([type='switchtab'], [type='remotetab'], [type='clipboard']) {
& .urlbarView-action:last-child {
margin-left: auto !important;
@@ -616,15 +635,14 @@ button.popup-notification-dropmarker {
--urlbarView-item-inline-padding: 8px;
--urlbarView-item-block-padding: 10px;
&:hover {
.urlbarView-favicon,
& {
background-color: color-mix(
in srgb,
var(--zen-branding-bg-reverse) 5%,
transparent 95%
) !important;
}
&:hover.urlbarView-favicon,
&:hover,
& .urlbarView-shortcutContent {
background-color: color-mix(
in srgb,
var(--zen-branding-bg-reverse) 5%,
transparent 95%
) !important;
}
&[selected] {
@@ -643,7 +661,12 @@ button.popup-notification-dropmarker {
fill: black !important;
}
& .urlbarView-favicon {
& .urlbarView-shortcutContent {
color: black !important;
}
& .urlbarView-favicon,
& .urlbarView-shortcutContent {
background-color: rgba(255, 255, 255, 0.9) !important;
}
}

View File

@@ -189,10 +189,11 @@ var gZenCompactModeManager = {
updateCompactModeContext(isSingleToolbar) {
const menuitem = document.getElementById('zen-context-menu-compact-mode-toggle');
const menu = document.getElementById('zen-context-menu-compact-mode');
menu.setAttribute('hidden', isSingleToolbar);
if (isSingleToolbar) {
menu.setAttribute('hidden', 'true');
menu.before(menuitem);
} else {
menu.removeAttribute('hidden');
menu.querySelector('menupopup').prepend(menuitem);
}
},

View File

@@ -147,13 +147,23 @@
& #zen-toolbar-background {
display: flex;
outline: 1px solid rgba(255, 255, 255, .15);
border-radius: calc(var(--zen-native-inner-radius) + var(--zen-element-separation) / 4 - var(--zen-compact-mode-no-padding-radius-fix, 0px));
overflow: clip;
background: transparent;
z-index: -1;
box-shadow: var(--zen-big-shadow);
@media -moz-pref('zen.theme.acrylic-elements') {
backdrop-filter: blur(42px) saturate(110%) brightness(0.25) contrast(100%) !important;
}
&::before,
&::after {
outline: 1px solid rgba(255, 255, 255, .15);
outline-offset: -1px;
}
&,
&::before,
&::after {
border-radius: calc(var(--zen-native-inner-radius) + var(--zen-element-separation) / 4 - var(--zen-compact-mode-no-padding-radius-fix, 0px));
}
}
}

View File

@@ -1,3 +1,8 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M24.4212 7.5791H7.5791V24.4212H24.4212V7.5791Z" fill="white"/>
<path d="M24.4212 31.9999L32.0001 24.421L28.2106 23.7744L24.4212 24.421L23.7295 27.8872L24.4212 31.9999Z" fill="#EA4335"/>

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -1,3 +1,8 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M32 16C32 24.8366 24.8366 32 16 32C7.16344 32 0 24.8366 0 16C0 7.16344 7.16344 0 16 0C24.8366 0 32 7.16344 32 16Z" fill="#5765F2"/>
<path d="M18.5844 9C18.4039 9.32044 18.2418 9.65193 18.0945 9.99079C16.6949 9.78085 15.2695 9.78085 13.8661 9.99079C13.7225 9.65193 13.5567 9.32044 13.3763 9C12.0614 9.22469 10.7796 9.61879 9.56412 10.1749C7.15527 13.744 6.50334 17.221 6.82747 20.6501C8.23814 21.6924 9.81826 22.488 11.5015 22.9963C11.8809 22.488 12.2161 21.9466 12.5033 21.3831C11.9582 21.1805 11.4315 20.9263 10.9269 20.6317C11.0595 20.5359 11.1884 20.4365 11.3137 20.3407C14.2713 21.733 17.6967 21.733 20.658 20.3407C20.7833 20.4438 20.9122 20.5433 21.0448 20.6317C20.5402 20.93 20.0135 21.1805 19.4647 21.3867C19.752 21.9503 20.0871 22.4917 20.4665 23C22.1497 22.4917 23.7298 21.6998 25.1406 20.6575C25.5236 16.6796 24.4849 13.232 22.3965 10.1786C21.1847 9.62247 19.903 9.22836 18.5881 9.00736L18.5844 9ZM12.9159 18.5396C12.0061 18.5396 11.251 17.7145 11.251 16.6943C11.251 15.674 11.9766 14.8453 12.9122 14.8453C13.8477 14.8453 14.5917 15.6777 14.577 16.6943C14.5623 17.7109 13.844 18.5396 12.9159 18.5396ZM19.0522 18.5396C18.1387 18.5396 17.391 17.7145 17.391 16.6943C17.391 15.674 18.1166 14.8453 19.0522 14.8453C19.9877 14.8453 20.728 15.6777 20.7133 16.6943C20.6986 17.7109 19.9803 18.5396 19.0522 18.5396Z" fill="white"/>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -1,3 +1,8 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.5 32.0002C13.536 32.0002 16 29.6108 16 26.6668V21.3335H10.5C7.464 21.3335 5 23.7228 5 26.6668C5 29.6108 7.464 32.0002 10.5 32.0002Z" fill="#0ACF83"/>
<path d="M5 15.9998C5 13.0558 7.464 10.6665 10.5 10.6665H16V21.3332H10.5C7.464 21.3332 5 18.9438 5 15.9998Z" fill="#A259FF"/>

Before

Width:  |  Height:  |  Size: 811 B

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -1 +1,6 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24"><style>path { fill: black; } @media (prefers-color-scheme: dark) { path { fill: white; }}</style><path d="M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>

Before

Width:  |  Height:  |  Size: 919 B

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -1,3 +1,8 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.9092 0.570312C20.9252 0.483425 21.6372 0.459533 22.2676 0.602539C22.9145 0.749343 23.4327 1.06038 24.0859 1.53418L29.3965 5.26758L29.4043 5.27246C29.8125 5.57126 30.1701 5.81942 30.4004 6.08594C30.6783 6.40761 30.7783 6.75136 30.7783 7.19238V27.665C30.7783 28.3532 30.6552 29.0129 30.2148 29.5127C29.7704 30.0169 29.0911 30.2598 28.2109 30.3223H28.2061L8.88672 31.4893H8.88086C8.2502 31.519 7.71523 31.495 7.23926 31.3213C6.74601 31.1412 6.36848 30.821 6.00977 30.3652L6.00684 30.3613L2.09668 25.2871L2.09375 25.2832C1.35529 24.3021 1.00001 23.4985 1 22.5322V4.33398C1.00003 3.74262 1.13121 3.13817 1.50781 2.65625C1.8945 2.16152 2.4867 1.86338 3.2666 1.7959H3.27344L19.9092 0.569336V0.570312Z" fill="white" stroke="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.947 1.0682L3.308 2.2942C1.968 2.4102 1.5 3.2852 1.5 4.3342V22.5322C1.5 23.3492 1.791 24.0482 2.492 24.9822L6.403 30.0562C7.046 30.8732 7.629 31.0482 8.856 30.9902L28.177 29.8232C29.811 29.7072 30.279 28.9482 30.279 27.6652V7.1922C30.279 6.5292 30.016 6.3382 29.242 5.7722L29.11 5.6762L23.8 1.9432C22.515 1.0112 21.99 0.893201 19.946 1.0682H19.947ZM9.293 6.8572C7.716 6.9632 7.357 6.9872 6.462 6.2602L4.185 4.4522C3.952 4.2182 4.069 3.9262 4.652 3.8682L20.647 2.7022C21.989 2.5852 22.69 3.0522 23.215 3.4602L25.959 5.4432C26.076 5.5022 26.367 5.8512 26.017 5.8512L9.497 6.8432L9.293 6.8572ZM7.454 27.4902V10.1102C7.454 9.3512 7.688 9.0012 8.388 8.9422L27.359 7.8342C28.002 7.7762 28.294 8.1842 28.294 8.9422V26.2062C28.294 26.9652 28.177 27.6072 27.126 27.6652L8.972 28.7152C7.922 28.7732 7.454 28.4242 7.454 27.4902ZM25.376 11.0422C25.492 11.5672 25.376 12.0922 24.849 12.1522L23.975 12.3252V25.1572C23.215 25.5652 22.515 25.7982 21.931 25.7982C20.997 25.7982 20.763 25.5062 20.063 24.6322L14.342 15.6502V24.3402L16.152 24.7492C16.152 24.7492 16.152 25.7992 14.692 25.7992L10.665 26.0322C10.548 25.7982 10.665 25.2152 11.073 25.0992L12.124 24.8082V13.3182L10.665 13.2002C10.548 12.6752 10.839 11.9172 11.657 11.8592L15.977 11.5672L21.931 20.6672V12.6172L20.413 12.4432C20.297 11.8002 20.763 11.3342 21.347 11.2762L25.376 11.0422Z" fill="black"/>

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -1,3 +1,8 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.8525 18.68C12.6687 18.4375 13.9937 18.0675 15.51 17.9663C14.7007 16.039 14.3729 13.9436 14.555 11.8613C14.7587 9.79752 15.4975 8.06377 16.2112 6.59877L16.645 5.70627L17.205 4.55877C17.4987 3.93377 17.715 3.38627 17.8175 2.86377C17.9187 2.35502 17.9187 1.90877 17.7925 1.47502C17.6637 1.04127 17.4087 0.582519 16.8987 0.073769C16.5564 -0.0184991 16.1963 -0.0237195 15.8514 0.0585822C15.5065 0.140884 15.1876 0.308097 14.9237 0.545019L8.3225 6.48252C7.95209 6.81468 7.70898 7.26552 7.635 7.75752L7.0725 11.53C9.20091 13.5086 10.8377 15.957 11.8525 18.68ZM6.80625 13.25L6.67875 13.6325L3.18625 21.4075C3.01261 21.7987 2.95877 22.2327 3.03152 22.6545C3.10427 23.0763 3.30034 23.4671 3.595 23.7775L9.0875 29.4225C10.2319 27.8406 10.9382 25.9845 11.1351 24.042C11.332 22.0995 11.0124 20.1394 10.2087 18.36C9.38578 16.4688 8.23375 14.7387 6.80625 13.25Z" fill="#A88BFA"/>
<path d="M10.3624 30.0988L10.6549 30.1238C11.6874 30.1488 13.4461 30.2513 14.8599 30.5063C16.0199 30.7226 18.3261 31.3601 20.2124 31.9076C21.6524 32.3413 23.1436 31.1826 23.3474 29.6913C23.5011 28.6076 23.7936 27.3838 24.3161 26.2501C23.6993 24.2904 22.5837 22.5248 21.0786 21.1263C20.0366 20.2208 18.752 19.6406 17.3836 19.4576C15.6525 19.2856 13.9047 19.4898 12.2599 20.0563C12.676 21.7697 12.7207 23.5523 12.391 25.2844C12.0614 27.0165 11.365 28.6581 10.3486 30.0988H10.3611H10.3624Z" fill="#A88BFA"/>

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,3 +1,8 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_187_41)">
<path d="M16 0C7.16296 0 0 7.16296 0 16C0 20.4178 1.79111 24.4178 4.68593 27.3141L1.63852 30.3615C1.03407 30.9659 1.46222 32 2.31704 32H16C24.837 32 32 24.837 32 16C32 7.16296 24.837 0 16 0Z" fill="#FF4500"/>

Before

Width:  |  Height:  |  Size: 8.9 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@@ -1,3 +1,8 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.73015 20.1649C6.73015 22.0188 5.23174 23.5173 3.37777 23.5173C1.5238 23.5173 0.0253906 22.0188 0.0253906 20.1649C0.0253906 18.3109 1.5238 16.8125 3.37777 16.8125H6.73015V20.1649ZM8.40634 20.1649C8.40634 18.3109 9.90475 16.8125 11.7587 16.8125C13.6127 16.8125 15.1111 18.3109 15.1111 20.1649V28.5458C15.1111 30.3998 13.6127 31.8982 11.7587 31.8982C9.90475 31.8982 8.40634 30.3998 8.40634 28.5458V20.1649Z" fill="#E01E5A"/>
<path d="M11.7587 6.70476C9.90476 6.70476 8.40635 5.20635 8.40635 3.35238C8.40635 1.49841 9.90476 0 11.7587 0C13.6127 0 15.1111 1.49841 15.1111 3.35238V6.70476H11.7587ZM11.7587 8.40635C13.6127 8.40635 15.1111 9.90476 15.1111 11.7587C15.1111 13.6127 13.6127 15.1111 11.7587 15.1111H3.35238C1.49841 15.1111 0 13.6127 0 11.7587C0 9.90476 1.49841 8.40635 3.35238 8.40635H11.7587Z" fill="#36C5F0"/>

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -1,3 +1,8 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M28.875 0H3.125C1.39911 0 0 1.39911 0 3.125V28.875C0 30.6009 1.39911 32 3.125 32H28.875C30.6009 32 32 30.6009 32 28.875V3.125C32 1.39911 30.6009 0 28.875 0Z" fill="url(#paint0_linear_187_69)"/>
<path d="M26.3401 4.16016H19.5801C18.7517 4.16016 18.0801 4.83173 18.0801 5.66016V16.6602C18.0801 17.4886 18.7517 18.1602 19.5801 18.1602H26.3401C27.1685 18.1602 27.8401 17.4886 27.8401 16.6602V5.66016C27.8401 4.83173 27.1685 4.16016 26.3401 4.16016Z" fill="white"/>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -1,3 +1,8 @@
<!--
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 0H32V32H0V0Z" fill="black"/>
<path d="M18.2856 14.1635L27.2216 4H25.1048L17.3424 12.823L11.1472 4H4L13.3704 17.3433L4 28H6.1168L14.3088 18.6806L20.8528 28H28M6.8808 5.5619H10.1328L25.1032 26.5148H21.8504" fill="white"/>

Before

Width:  |  Height:  |  Size: 335 B

After

Width:  |  Height:  |  Size: 555 B

View File

@@ -194,20 +194,26 @@ class nsKeyShortcutModifiers {
toUserString() {
let str = '';
const separation = AppConstants.platform == 'macosx' ? ' ' : '+';
if (this.#control && !this.#accel) {
str += 'Ctrl+';
str += AppConstants.platform == 'macosx' ? '⌃' : 'Ctrl';
str += separation;
}
if (this.#alt) {
str += AppConstants.platform == 'macosx' ? 'Option+' : 'Alt+';
str += AppConstants.platform == 'macosx' ? '' : 'Alt';
str += separation;
}
if (this.#shift) {
str += 'Shift+';
str += '';
str += separation;
}
if (this.#meta) {
str += AppConstants.platform == 'macosx' ? 'Cmd+' : 'Win+';
str += AppConstants.platform == 'macosx' ? '' : 'Win';
str += separation;
}
if (this.#accel) {
str += AppConstants.platform == 'macosx' ? 'Cmd+' : 'Ctrl+';
str += AppConstants.platform == 'macosx' ? '' : 'Ctrl';
str += separation;
}
return str;
}
@@ -546,7 +552,32 @@ class KeyShortcut {
// Get the key from the value
for (let [key, value] of Object.entries(KEYCODE_MAP)) {
if (value == this.#keycode) {
str += key.toLowerCase();
const normalizedKey = key.toLowerCase();
switch (normalizedKey) {
case 'arrowleft':
str += '←';
break;
case 'arrowright':
str += '→';
break;
case 'arrowup':
str += '↑';
break;
case 'arrowdown':
str += '↓';
break;
case 'escape':
str += AppConstants.platform == 'macosx' ? '⎋' : 'Esc';
break;
case 'enter':
str += AppConstants.platform == 'macosx' ? '↩' : 'Enter';
break;
case 'space':
str += AppConstants.platform == 'macosx' ? '␣' : 'Space';
break;
default:
str += normalizedKey;
}
break;
}
}
@@ -1315,6 +1346,28 @@ var gZenKeyboardShortcutsManager = {
return false;
},
getShortcutFromCommand(command) {
for (let targetShortcut of this._currentShortcutList) {
if (targetShortcut.getAction() == command) {
return targetShortcut;
}
}
return null;
},
/**
* Get the shortcut as a display format for a given action/command.
* @param {string} command The action/command to search for
* @returns {string|null} The shortcut as a string or null if not found
*/
getShortcutDisplayFromCommand(command) {
const shortcut = this.getShortcutFromCommand(command);
if (shortcut) {
return shortcut.toUserString();
}
return null;
},
};
document.addEventListener(

View File

@@ -1,4 +1,3 @@
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
@@ -8,5 +7,6 @@ DIRS += [
"glance",
"mods",
"tests",
"urlbar",
"toolkit",
]

View File

@@ -513,7 +513,11 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature {
const wrapper = this.overlay?.parentNode;
if (!wrapper) return;
wrapper.setAttribute('hidden', !value);
if (!value) {
wrapper.setAttribute('hidden', 'true');
} else {
wrapper.removeAttribute('hidden');
}
}
enableTabRearrangeView(tabDrag = false) {
@@ -896,9 +900,12 @@ class nsZenViewSplitter extends nsZenDOMOperatedFeature {
tabCount: window.gBrowser.selectedTabs.length,
});
document.getElementById('context_zenSplitTabs').setAttribute('data-l10n-args', tabCountInfo);
document
.getElementById('context_zenSplitTabs')
.setAttribute('hidden', !this.contextCanSplitTabs());
const splitTabs = document.getElementById('context_zenSplitTabs');
if (!this.contextCanSplitTabs()) {
splitTabs.setAttribute('hidden', 'true');
} else {
splitTabs.removeAttribute('hidden');
}
});
}

View File

@@ -200,7 +200,7 @@
@media (-moz-platform: macos) {
--border-radius-medium: 12px;
--tab-border-radius: 10px;
--tab-border-radius: 8px;
}
min-width: var(--zen-toolbox-min-width);

View File

@@ -10,6 +10,7 @@ BROWSER_CHROME_MANIFESTS += [
"pinned/browser.toml",
"split_view/browser.toml",
"tabs/browser.toml",
"ub-actions/browser.toml",
"urlbar/browser.toml",
"welcome/browser.toml",
"workspaces/browser.toml",

View File

@@ -0,0 +1,5 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
["browser_ub_actions_search.js"]

View File

@@ -0,0 +1,23 @@
/* Any copyright is dedicated to the Public Domain.
https://creativecommons.org/publicdomain/zero/1.0/ */
'use strict';
ChromeUtils.defineESModuleGetters(this, {
globalActions: 'resource:///modules/ZenUBGlobalActions.sys.mjs',
UrlbarTestUtils: 'resource://testing-common/UrlbarTestUtils.sys.mjs',
});
add_task(async function test_Ub_Actions_Search() {
for (const action of globalActions) {
const label = action.label;
await UrlbarTestUtils.promiseAutocompleteResultPopup({
window,
waitForFocus,
value: label,
});
let { result } = await UrlbarTestUtils.getRowAt(window, Math.min(action.suggestedIndex, 1));
Assert.equal(result.providerName, 'ZenUrlbarProviderGlobalActions');
Assert.equal(result.payload.title, label);
}
});

View File

@@ -0,0 +1,270 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import { XPCOMUtils } from 'resource://gre/modules/XPCOMUtils.sys.mjs';
import { UrlbarProvider, UrlbarUtils } from 'resource:///modules/UrlbarUtils.sys.mjs';
import { globalActions } from 'resource:///modules/ZenUBGlobalActions.sys.mjs';
const lazy = {};
const DYNAMIC_TYPE_NAME = 'zen-actions';
// The suggestion index of the actions row within the urlbar results.
const MAX_RECENT_ACTIONS = 5;
const MINIMUM_QUERY_SCORE = 92;
const EN_LOCALE_MATCH = /^en(-.*)$/;
ChromeUtils.defineESModuleGetters(lazy, {
UrlbarResult: 'resource:///modules/UrlbarResult.sys.mjs',
UrlbarTokenizer: 'resource:///modules/UrlbarTokenizer.sys.mjs',
QueryScorer: 'resource:///modules/UrlbarProviderInterventions.sys.mjs',
BrowserWindowTracker: 'resource:///modules/BrowserWindowTracker.sys.mjs',
});
XPCOMUtils.defineLazyPreferenceGetter(
lazy,
'enabledPref',
'zen.urlbar.suggestions.quick-actions',
true
);
/**
* A provider that lets the user view all available global actions for a query.
*/
export class ZenUrlbarProviderGlobalActions extends UrlbarProvider {
get name() {
return 'ZenUrlbarProviderGlobalActions';
}
/**
* @returns {Values<typeof UrlbarUtils.PROVIDER_TYPE>}
*/
get type() {
return UrlbarUtils.PROVIDER_TYPE.HEURISTIC;
}
/**
* Whether this provider should be invoked for the given context.
* If this method returns false, the providers manager won't start a query
* with this provider, to save on resources.
*
* @param {UrlbarQueryContext} queryContext The query context object
*/
async isActive(queryContext) {
return (
lazy.enabledPref &&
queryContext.searchString &&
queryContext.searchString.length < UrlbarUtils.MAX_TEXT_LENGTH &&
queryContext.searchString.length > 2 &&
!lazy.UrlbarTokenizer.REGEXP_LIKE_PROTOCOL.test(queryContext.searchString) &&
EN_LOCALE_MATCH.test(Services.locale.appLocaleAsBCP47)
);
}
/**
* @returns All the available global actions.
*/
get #availableActions() {
return globalActions.filter((a) =>
typeof a.isAvailable === 'function' ? a.isAvailable() : true
);
}
/**
* Starts a search query amongst the available global actions.
*
* @param {string} queryContext The query context object
*/
#findMatchingActions(query) {
const actions = this.#availableActions;
let results = [];
for (let action of actions) {
const label = action.label;
const score = this.#calculateFuzzyScore(label, query);
if (score > MINIMUM_QUERY_SCORE) {
results.push({
score,
action,
});
}
}
results.sort((a, b) => b.score - a.score);
return results.slice(0, MAX_RECENT_ACTIONS).map((r) => r.action);
}
/**
* A VS Code-style fuzzy scoring algorithm.
* @param {string} target The string to score against.
* @param {string} query The user's search query.
* @returns {number} A score representing the match quality.
*
* @credits Thanks a lot @BibekBhusal0 on GitHub for this implementation!
*/
#calculateFuzzyScore(target, query) {
if (!target || !query) return 0;
const targetLower = target.toLowerCase();
const queryLower = query.toLowerCase();
const targetLen = target.length;
const queryLen = query.length;
if (queryLen > targetLen) return 0;
if (queryLen === 0) return 0;
// 1. Exact match gets the highest score.
if (targetLower === queryLower) {
return 200;
}
// 2. Exact prefix matches are heavily prioritized.
if (targetLower.startsWith(queryLower)) {
return 100 + queryLen;
}
let score = 0;
let queryIndex = 0;
let lastMatchIndex = -1;
let consecutiveMatches = 0;
for (let targetIndex = 0; targetIndex < targetLen; targetIndex++) {
if (queryIndex < queryLen && targetLower[targetIndex] === queryLower[queryIndex]) {
let bonus = 10;
// Bonus for matching at the beginning of a word
if (targetIndex === 0 || [' ', '-', '_'].includes(targetLower[targetIndex - 1])) {
bonus += 15;
}
// Bonus for consecutive matches
if (lastMatchIndex === targetIndex - 1) {
consecutiveMatches++;
bonus += 20 * consecutiveMatches;
} else {
consecutiveMatches = 0;
}
// Penalty for distance from the last match
if (lastMatchIndex !== -1) {
const distance = targetIndex - lastMatchIndex;
bonus -= Math.min(distance - 1, 10); // Cap penalty
}
score += bonus;
lastMatchIndex = targetIndex;
queryIndex++;
}
}
return queryIndex === queryLen ? score : 0;
}
async startQuery(queryContext, addCallback) {
const query = queryContext.searchString.trim().toLowerCase();
if (!query) {
return;
}
const actionsResults = this.#findMatchingActions(query);
if (!actionsResults.length) {
return;
}
const ownerGlobal = lazy.BrowserWindowTracker.getTopWindow();
for (const action of actionsResults) {
const [payload, payloadHighlights] = lazy.UrlbarResult.payloadAndSimpleHighlights([], {
suggestion: action.label,
title: action.label,
query: queryContext.searchString,
zenCommand: action.command,
dynamicType: DYNAMIC_TYPE_NAME,
zenAction: true,
icon: action.icon || 'chrome://browser/skin/trending.svg',
shortcutContent: ownerGlobal.gZenKeyboardShortcutsManager.getShortcutDisplayFromCommand(
action.command
),
});
let result = new lazy.UrlbarResult(
UrlbarUtils.RESULT_TYPE.DYNAMIC,
UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
payload,
payloadHighlights
);
if (typeof action.suggestedIndex === 'number') {
result.suggestedIndex = action.suggestedIndex;
}
addCallback(this, result);
}
}
/**
* Gets the provider's priority.
*
* @returns {number} The provider's priority for the given query.
*/
getPriority() {
return 0;
}
/**
* This is called only for dynamic result types, when the urlbar view updates
* the view of one of the results of the provider. It should return an object
* describing the view update.
*
* @param {UrlbarResult} result The result whose view will be updated.
* @returns {object} An object describing the view update.
*/
getViewUpdate(result) {
return {
icon: {
attributes: {
src: result.payload.icon || 'chrome://browser/skin/trending.svg',
},
},
titleStrong: {
textContent: result.payload.title,
attributes: { dir: 'ltr' },
},
shortcutContent: {
textContent: result.payload.shortcutContent || '',
},
};
}
getViewTemplate() {
return {
attributes: {
selectable: true,
},
children: [
{
name: 'icon',
tag: 'img',
classList: ['urlbarView-favicon'],
},
{
name: 'title',
tag: 'span',
classList: ['urlbarView-title'],
children: [
{
name: 'titleStrong',
tag: 'strong',
},
],
},
{
name: 'shortcutContent',
tag: 'span',
classList: ['urlbarView-shortcutContent'],
},
],
};
}
onEngagement(queryContext, controller, details) {
const result = details.result;
const payload = result.payload;
const command = payload.zenCommand;
if (!command) {
return;
}
const ownerGlobal = details.element.ownerGlobal;
const commandToRun = ownerGlobal.document.getElementById(command);
if (commandToRun) {
ownerGlobal.gBrowser.selectedBrowser.focus();
commandToRun.doCommand();
}
}
}

View File

@@ -0,0 +1,18 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
export const globalActions = [
{
label: 'Toggle Compact Mode',
command: 'cmd_zenCompactModeToggle',
icon: 'chrome://browser/skin/zen-icons/sidebar.svg',
suggestedIndex: 0,
},
{
label: 'Open Theme Picker',
command: 'cmd_zenOpenZenThemePicker',
icon: 'chrome://browser/skin/zen-icons/edit-theme.svg',
suggestedIndex: 4,
},
];

View File

@@ -0,0 +1,20 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import { UrlbarProvidersManager } from 'resource:///modules/UrlbarProvidersManager.sys.mjs';
const providers = {};
ChromeUtils.defineESModuleGetters(providers, {
ZenUrlbarProviderGlobalActions: 'resource:///modules/ZenUBActionsProvider.sys.mjs',
});
export function registerZenUrlbarProviders() {
for (let i = 0; i < Object.keys(providers).length; i++) {
const provider = Object.values(providers)[i];
const name = Object.keys(providers)[i];
if (!UrlbarProvidersManager.getProvider(name)) {
UrlbarProvidersManager.registerProvider(new provider());
}
}
}

9
src/zen/urlbar/moz.build Normal file
View File

@@ -0,0 +1,9 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
EXTRA_JS_MODULES += [
"ZenUBActionsProvider.sys.mjs",
"ZenUBGlobalActions.sys.mjs",
"ZenUBProvider.sys.mjs",
]

View File

@@ -1089,7 +1089,10 @@
return color.c;
}
let opacity = this.currentOpacity;
if (forToolbar && !this.#allowTransparencyOnSidebar) {
if (
(forToolbar && !this.#allowTransparencyOnSidebar) ||
(!forToolbar && !this.canBeTransparent)
) {
color = this.blendColors(
color.c,
this.getToolbarModifiedBaseRaw().slice(0, 3),
@@ -1140,11 +1143,13 @@
const rotation = -45; // TODO: Detect rotation based on the accent color
if (themedColors.length === 0) {
return forToolbar
? this.getToolbarModifiedBase()
: this.isDarkMode
? 'rgba(0, 0, 0, 0.4)'
: 'transparent';
const getBrowserBg = () => {
if (this.canBeTransparent) {
return this.isDarkMode ? 'rgba(0, 0, 0, 0.4)' : 'transparent';
}
return this.isDarkMode ? '#131313' : '#e9e9e9';
};
return forToolbar ? this.getToolbarModifiedBase() : getBrowserBg();
} else if (themedColors.length === 1) {
return this.getSingleRGBColor(themedColors[0], forToolbar);
} else {
@@ -1400,9 +1405,14 @@
? workspaceTheme.gradientColors.length >= nsZenThemePicker.MAX_DOTS
: false);
}
document
.getElementById('PanelUI-zen-gradient-generator-color-click-to-add')
.toggleAttribute('hidden', workspaceTheme.gradientColors.length > 0);
const clickToAdd = browser.document.getElementById(
'PanelUI-zen-gradient-generator-color-click-to-add'
);
if (workspaceTheme.gradientColors.length > 0) {
clickToAdd.setAttribute('hidden', 'true');
} else {
clickToAdd.removeAttribute('hidden');
}
opacitySlider.value = browser.gZenThemePicker.currentOpacity;
const textureSelectWrapper = browser.document.getElementById(