From c0b2a779e03c6f2c1703dd70b81bbe484952166b Mon Sep 17 00:00:00 2001 From: "Mr. M" Date: Fri, 10 Oct 2025 23:07:42 +0200 Subject: [PATCH] chore: Better organize preferences files, b=no-bug, c=compact-mode, folders, glance, kbs, media, mods, split-view, welcome, workspaces --- prefs/README.md | 8 ++++++ prefs/{ => fastfox}/smoothscroll.yaml | 0 prefs/{ => firefox}/ai.yaml | 3 ++ prefs/{ => firefox}/browser.yaml | 0 prefs/{ => firefox}/extensions.yaml | 0 prefs/{ => firefox}/fullscreen.yaml | 0 prefs/{ => firefox}/multilingual.yaml | 0 prefs/{ => firefox}/newtab.yaml | 0 prefs/{ => firefox}/pdf.yaml | 0 prefs/{ => firefox}/performance.yaml | 0 prefs/{ => firefox}/pip.yaml | 0 prefs/{ => firefox}/urlbar.yaml | 0 prefs/{ => privatefox}/disablemozilla.yaml | 0 prefs/{ => privatefox}/privacy.yaml | 0 prefs/{ => zen}/compact-mode.yaml | 0 prefs/{ => zen}/downloads.yaml | 0 prefs/{ => zen}/folders.yaml | 0 prefs/{ => zen}/glance.yaml | 0 prefs/{ => zen}/gtk.yaml | 0 prefs/{ => zen}/kbs.yaml | 0 prefs/{ => zen}/macos.yaml | 0 prefs/{ => zen}/media.yaml | 0 prefs/{ => zen}/mods.yaml | 0 prefs/{ => zen}/split-view.yaml | 0 prefs/{ => zen}/static.yaml | 0 prefs/{ => zen}/theme.yaml | 0 prefs/{ => zen}/view.yaml | 0 prefs/{ => zen}/watermark.yaml | 0 prefs/{ => zen}/welcome.yaml | 0 prefs/{ => zen}/windows.yaml | 0 prefs/{ => zen}/workspaces.yaml | 0 prefs/{ => zen}/zen-urlbar.yaml | 0 prefs/{ => zen}/zen.yaml | 0 tools/ffprefs/src/main.rs | 33 ++++++++++++++-------- 34 files changed, 32 insertions(+), 12 deletions(-) create mode 100644 prefs/README.md rename prefs/{ => fastfox}/smoothscroll.yaml (100%) rename prefs/{ => firefox}/ai.yaml (91%) rename prefs/{ => firefox}/browser.yaml (100%) rename prefs/{ => firefox}/extensions.yaml (100%) rename prefs/{ => firefox}/fullscreen.yaml (100%) rename prefs/{ => firefox}/multilingual.yaml (100%) rename prefs/{ => firefox}/newtab.yaml (100%) rename prefs/{ => firefox}/pdf.yaml (100%) rename prefs/{ => firefox}/performance.yaml (100%) rename prefs/{ => firefox}/pip.yaml (100%) rename prefs/{ => firefox}/urlbar.yaml (100%) rename prefs/{ => privatefox}/disablemozilla.yaml (100%) rename prefs/{ => privatefox}/privacy.yaml (100%) rename prefs/{ => zen}/compact-mode.yaml (100%) rename prefs/{ => zen}/downloads.yaml (100%) rename prefs/{ => zen}/folders.yaml (100%) rename prefs/{ => zen}/glance.yaml (100%) rename prefs/{ => zen}/gtk.yaml (100%) rename prefs/{ => zen}/kbs.yaml (100%) rename prefs/{ => zen}/macos.yaml (100%) rename prefs/{ => zen}/media.yaml (100%) rename prefs/{ => zen}/mods.yaml (100%) rename prefs/{ => zen}/split-view.yaml (100%) rename prefs/{ => zen}/static.yaml (100%) rename prefs/{ => zen}/theme.yaml (100%) rename prefs/{ => zen}/view.yaml (100%) rename prefs/{ => zen}/watermark.yaml (100%) rename prefs/{ => zen}/welcome.yaml (100%) rename prefs/{ => zen}/windows.yaml (100%) rename prefs/{ => zen}/workspaces.yaml (100%) rename prefs/{ => zen}/zen-urlbar.yaml (100%) rename prefs/{ => zen}/zen.yaml (100%) diff --git a/prefs/README.md b/prefs/README.md new file mode 100644 index 000000000..3b2196f81 --- /dev/null +++ b/prefs/README.md @@ -0,0 +1,8 @@ + +# Browser Preferences + +This directory contains configuration files for Zen. They are divided by folder according to the source / component they belong to and further divided by file according to their purpose. + +- `firefox/`: Preferences to override Firefox defaults. +- `zen/`: Preferences to configure Zen-specific features. +- `privatefox/` & `fastfox/`: *Some* of the preferences got extracted from [Betterfox](https://github.com/yokoffing/Betterfox). diff --git a/prefs/smoothscroll.yaml b/prefs/fastfox/smoothscroll.yaml similarity index 100% rename from prefs/smoothscroll.yaml rename to prefs/fastfox/smoothscroll.yaml diff --git a/prefs/ai.yaml b/prefs/firefox/ai.yaml similarity index 91% rename from prefs/ai.yaml rename to prefs/firefox/ai.yaml index cdeb20691..e54bb0d38 100644 --- a/prefs/ai.yaml +++ b/prefs/firefox/ai.yaml @@ -17,3 +17,6 @@ - name: browser.ml.enable value: false + +- name: browser.ml.chat.menu + value: false diff --git a/prefs/browser.yaml b/prefs/firefox/browser.yaml similarity index 100% rename from prefs/browser.yaml rename to prefs/firefox/browser.yaml diff --git a/prefs/extensions.yaml b/prefs/firefox/extensions.yaml similarity index 100% rename from prefs/extensions.yaml rename to prefs/firefox/extensions.yaml diff --git a/prefs/fullscreen.yaml b/prefs/firefox/fullscreen.yaml similarity index 100% rename from prefs/fullscreen.yaml rename to prefs/firefox/fullscreen.yaml diff --git a/prefs/multilingual.yaml b/prefs/firefox/multilingual.yaml similarity index 100% rename from prefs/multilingual.yaml rename to prefs/firefox/multilingual.yaml diff --git a/prefs/newtab.yaml b/prefs/firefox/newtab.yaml similarity index 100% rename from prefs/newtab.yaml rename to prefs/firefox/newtab.yaml diff --git a/prefs/pdf.yaml b/prefs/firefox/pdf.yaml similarity index 100% rename from prefs/pdf.yaml rename to prefs/firefox/pdf.yaml diff --git a/prefs/performance.yaml b/prefs/firefox/performance.yaml similarity index 100% rename from prefs/performance.yaml rename to prefs/firefox/performance.yaml diff --git a/prefs/pip.yaml b/prefs/firefox/pip.yaml similarity index 100% rename from prefs/pip.yaml rename to prefs/firefox/pip.yaml diff --git a/prefs/urlbar.yaml b/prefs/firefox/urlbar.yaml similarity index 100% rename from prefs/urlbar.yaml rename to prefs/firefox/urlbar.yaml diff --git a/prefs/disablemozilla.yaml b/prefs/privatefox/disablemozilla.yaml similarity index 100% rename from prefs/disablemozilla.yaml rename to prefs/privatefox/disablemozilla.yaml diff --git a/prefs/privacy.yaml b/prefs/privatefox/privacy.yaml similarity index 100% rename from prefs/privacy.yaml rename to prefs/privatefox/privacy.yaml diff --git a/prefs/compact-mode.yaml b/prefs/zen/compact-mode.yaml similarity index 100% rename from prefs/compact-mode.yaml rename to prefs/zen/compact-mode.yaml diff --git a/prefs/downloads.yaml b/prefs/zen/downloads.yaml similarity index 100% rename from prefs/downloads.yaml rename to prefs/zen/downloads.yaml diff --git a/prefs/folders.yaml b/prefs/zen/folders.yaml similarity index 100% rename from prefs/folders.yaml rename to prefs/zen/folders.yaml diff --git a/prefs/glance.yaml b/prefs/zen/glance.yaml similarity index 100% rename from prefs/glance.yaml rename to prefs/zen/glance.yaml diff --git a/prefs/gtk.yaml b/prefs/zen/gtk.yaml similarity index 100% rename from prefs/gtk.yaml rename to prefs/zen/gtk.yaml diff --git a/prefs/kbs.yaml b/prefs/zen/kbs.yaml similarity index 100% rename from prefs/kbs.yaml rename to prefs/zen/kbs.yaml diff --git a/prefs/macos.yaml b/prefs/zen/macos.yaml similarity index 100% rename from prefs/macos.yaml rename to prefs/zen/macos.yaml diff --git a/prefs/media.yaml b/prefs/zen/media.yaml similarity index 100% rename from prefs/media.yaml rename to prefs/zen/media.yaml diff --git a/prefs/mods.yaml b/prefs/zen/mods.yaml similarity index 100% rename from prefs/mods.yaml rename to prefs/zen/mods.yaml diff --git a/prefs/split-view.yaml b/prefs/zen/split-view.yaml similarity index 100% rename from prefs/split-view.yaml rename to prefs/zen/split-view.yaml diff --git a/prefs/static.yaml b/prefs/zen/static.yaml similarity index 100% rename from prefs/static.yaml rename to prefs/zen/static.yaml diff --git a/prefs/theme.yaml b/prefs/zen/theme.yaml similarity index 100% rename from prefs/theme.yaml rename to prefs/zen/theme.yaml diff --git a/prefs/view.yaml b/prefs/zen/view.yaml similarity index 100% rename from prefs/view.yaml rename to prefs/zen/view.yaml diff --git a/prefs/watermark.yaml b/prefs/zen/watermark.yaml similarity index 100% rename from prefs/watermark.yaml rename to prefs/zen/watermark.yaml diff --git a/prefs/welcome.yaml b/prefs/zen/welcome.yaml similarity index 100% rename from prefs/welcome.yaml rename to prefs/zen/welcome.yaml diff --git a/prefs/windows.yaml b/prefs/zen/windows.yaml similarity index 100% rename from prefs/windows.yaml rename to prefs/zen/windows.yaml diff --git a/prefs/workspaces.yaml b/prefs/zen/workspaces.yaml similarity index 100% rename from prefs/workspaces.yaml rename to prefs/zen/workspaces.yaml diff --git a/prefs/zen-urlbar.yaml b/prefs/zen/zen-urlbar.yaml similarity index 100% rename from prefs/zen-urlbar.yaml rename to prefs/zen/zen-urlbar.yaml diff --git a/prefs/zen.yaml b/prefs/zen/zen.yaml similarity index 100% rename from prefs/zen.yaml rename to prefs/zen/zen.yaml diff --git a/tools/ffprefs/src/main.rs b/tools/ffprefs/src/main.rs index e044fd0f5..e2c7259e6 100644 --- a/tools/ffprefs/src/main.rs +++ b/tools/ffprefs/src/main.rs @@ -102,10 +102,10 @@ // use serde::{Deserialize, Serialize}; +use std::collections::HashMap; use std::env; use std::fs; use std::path::PathBuf; -use std::collections::HashMap; const STATIC_PREFS: &str = "../engine/modules/libpref/init/zen-static-prefs.inc"; const FIREFOX_PREFS: &str = "../engine/browser/app/profile/firefox.js"; @@ -136,25 +136,34 @@ fn ordered_prefs(mut prefs: Vec) -> Vec { prefs } -fn load_preferences() -> Vec { - let mut prefs = Vec::new(); - let config_path = get_config_path(); - // Iterate each file in the prefs directory - if let Ok(entries) = fs::read_dir(&config_path) { +fn get_prefs_files_recursively(dir: &PathBuf, files: &mut Vec) { + if let Ok(entries) = fs::read_dir(dir) { for entry in entries { if let Ok(entry) = entry { - if let Some(ext) = entry.path().extension() { + let path = entry.path(); + if path.is_dir() { + get_prefs_files_recursively(&path, files); + } else if let Some(ext) = path.extension() { if ext == "yaml" || ext == "yml" { - let file_path = entry.path(); - let content = fs::read_to_string(&file_path).expect("Failed to read file"); - let mut parsed_prefs: Vec = - serde_yaml::from_str(&content).expect("Failed to parse YAML"); - prefs.append(&mut parsed_prefs); + files.push(path); } } } } } +} + +fn load_preferences() -> Vec { + let mut prefs = Vec::new(); + let config_path = get_config_path(); + let mut pref_files = Vec::new(); + get_prefs_files_recursively(&config_path, &mut pref_files); + for file_path in pref_files { + let content = fs::read_to_string(&file_path).expect("Failed to read file"); + let mut parsed_prefs: Vec = + serde_yaml::from_str(&content).expect("Failed to parse YAML"); + prefs.append(&mut parsed_prefs); + } ordered_prefs(prefs) }