diff --git a/lib/config.ts b/lib/config.ts index 714daffb..2eb12cdf 100644 --- a/lib/config.ts +++ b/lib/config.ts @@ -526,7 +526,9 @@ const defaultConfig: PluginConfig = { }, } -const GLOBAL_CONFIG_DIR = join(homedir(), ".config", "opencode") +const GLOBAL_CONFIG_DIR = process.env.XDG_CONFIG_HOME + ? join(process.env.XDG_CONFIG_HOME, "opencode") + : join(homedir(), ".config", "opencode") const GLOBAL_CONFIG_PATH_JSONC = join(GLOBAL_CONFIG_DIR, "dcp.jsonc") const GLOBAL_CONFIG_PATH_JSON = join(GLOBAL_CONFIG_DIR, "dcp.json") diff --git a/lib/logger.ts b/lib/logger.ts index 972a1fb1..79aff818 100644 --- a/lib/logger.ts +++ b/lib/logger.ts @@ -9,8 +9,9 @@ export class Logger { constructor(enabled: boolean) { this.enabled = enabled - const opencodeConfigDir = join(homedir(), ".config", "opencode") - this.logDir = join(opencodeConfigDir, "logs", "dcp") + const dataHome = + process.env.XDG_DATA_HOME || join(homedir(), ".local", "share") + this.logDir = join(dataHome, "opencode", "logs", "dcp") } private async ensureLogDir() { diff --git a/lib/state/persistence.ts b/lib/state/persistence.ts index e73f78f0..0c368380 100644 --- a/lib/state/persistence.ts +++ b/lib/state/persistence.ts @@ -25,7 +25,13 @@ export interface PersistedSessionState { lastUpdated: string } -const STORAGE_DIR = join(homedir(), ".local", "share", "opencode", "storage", "plugin", "dcp") +const STORAGE_DIR = join( + process.env.XDG_DATA_HOME || join(homedir(), ".local", "share"), + "opencode", + "storage", + "plugin", + "dcp", +) async function ensureStorageDir(): Promise { if (!existsSync(STORAGE_DIR)) {