Cargo.lock 🔗
@@ -3345,6 +3345,7 @@ dependencies = [
"collections",
"command_palette_hooks",
"ctor",
+ "dirs 4.0.0",
"editor",
"fs",
"futures 0.3.31",
gcp-cherry-pick-bot[bot] and Umesh Yadav created
Cherry-picked copilot: Fix config dir logic to support Flatpak
environments (#32901)
Closes #30784
In github copilot we were not handling the config path correctly for
FLATPAK.
* Only tested on mac don't have access to other platform. But this
should work on other platform as well. It follows the similar pattern
seen in zed config path resolution.
- [x] Macos
- [ ] Linux
- [ ] Linux with Flatpak
- [ ] Windows
Release Notes:
- Fix copilot config detection for flatpack
Co-authored-by: Umesh Yadav <23421535+imumesh18@users.noreply.github.com>
Cargo.lock | 1 +
crates/copilot/Cargo.toml | 1 +
crates/copilot/src/copilot_chat.rs | 13 ++++++++-----
3 files changed, 10 insertions(+), 5 deletions(-)
@@ -3345,6 +3345,7 @@ dependencies = [
"collections",
"command_palette_hooks",
"ctor",
+ "dirs 4.0.0",
"editor",
"fs",
"futures 0.3.31",
@@ -29,6 +29,7 @@ chrono.workspace = true
client.workspace = true
collections.workspace = true
command_palette_hooks.workspace = true
+dirs.workspace = true
fs.workspace = true
futures.workspace = true
gpui.workspace = true
@@ -360,12 +360,15 @@ pub fn copilot_chat_config_dir() -> &'static PathBuf {
static COPILOT_CHAT_CONFIG_DIR: OnceLock<PathBuf> = OnceLock::new();
COPILOT_CHAT_CONFIG_DIR.get_or_init(|| {
- if cfg!(target_os = "windows") {
- home_dir().join("AppData").join("Local")
+ let config_dir = if cfg!(target_os = "windows") {
+ dirs::data_local_dir().expect("failed to determine LocalAppData directory")
} else {
- home_dir().join(".config")
- }
- .join("github-copilot")
+ std::env::var("XDG_CONFIG_HOME")
+ .map(PathBuf::from)
+ .unwrap_or_else(|_| home_dir().join(".config"))
+ };
+
+ config_dir.join("github-copilot")
})
}