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) }