appdir

package
v0.1.982 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 5, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Overview

Package appdir decides where magpie keeps its own files: the one place every other package asks (#508).

Installed, that is ~/.config/magpie ($XDG_CONFIG_HOME/magpie) for what magpie keeps and ~/.cache/magpie ($XDG_CACHE_HOME/magpie) for what it can fetch again, as it always was. Portable, when a folder named "data" (or a file named ".portable") sits beside magpie, everything magpie keeps goes into that data folder, its caches into data/cache and the Windows webview's profile into data/webview2 (no Start-menu shortcut or App Paths entry is made either), and nothing of magpie's own is written to the user's profile, the way VS Code's portable mode works. "Beside magpie" is the folder holding the executable, with links followed; for a Mac app it is the folder holding Magpie.app (a file put inside the bundle would break its signature), and for an AppImage the folder holding the .AppImage file, not the folder it is mounted at while it runs.

What isn't magpie's own stays where its owner reads it: the agents' configs (~/.claude, ~/.codex…), the sign-ins they keep in the system keychain, the folders the OS reads for autostart and link handling, and temporary folders.

The decision is made once, from the executable as it was when magpie started: an update moving the running copy aside (into .magpie-update on a Mac, to magpie.exe.old on Windows) leaves it running from somewhere else, and its files must not move with it.

Index

Constants

View Source
const (
	// DataName is the folder beside magpie that makes it portable and
	// holds its files.
	DataName = "data"
	// MarkerName is a file beside magpie that makes it portable too, its
	// files then going into a data folder made beside it.
	MarkerName = ".portable"
)

Variables

This section is empty.

Functions

func Beside

func Beside(exe string) string

Beside is the folder a portable magpie run from exe keeps its data folder in: the executable's own, the one holding the .app on a Mac, the one holding the .AppImage on Linux. APPIMAGE counts only for the AppImage magpie runs from (exe under its mount, APPDIR): every program an AppImage starts inherits both, a magpie started from an AppImage terminal too.

func Cache

func Cache() string

Cache is the folder for what magpie can fetch again (the models.dev catalog, exchange rates, market lists).

func CheckEnv added in v0.1.874

func CheckEnv() (ignored []string, err error)

CheckEnv is what main checks before anything is read or written: an unusable home folder is the error, and ignored names the folder variables holding a relative path, which LookupEnv passes over.

func Config

func Config() string

Config is the folder magpie keeps its settings, providers, usage and the rest of its own state in.

func Getenv added in v0.1.874

func Getenv(name string) string

Getenv is LookupEnv's value, "" for a variable unset or ignored.

func Home added in v0.1.874

func Home() (string, error)

Home is the user's home folder, or an error when its variable is unset, empty or relative. os.UserHomeDir hands back "" there, which filepath.Join turns into a path under the folder magpie was started in, and on Android it falls back to the shared /sdcard.

func LookupEnv added in v0.1.874

func LookupEnv(name string) (string, bool)

LookupEnv is os.LookupEnv for what magpie itself reads: a folder variable (pathVars) holding a relative path reads as unset, as the XDG spec asks of one, so no file of magpie's or an agent's is written under the working folder. The environment is left as it is: the programs magpie starts get the variable as the user set it. The variables a login shell lends the desktop app (proc.UserPath) are read through here too.

func Portable

func Portable() string

Portable is the data folder magpie keeps everything in, or "" when it isn't portable.

func Redirected added in v0.1.939

func Redirected() string

Redirected is the folder magpie keeps its files in when it is opened from the Dock, the Start menu or a desktop launcher (~/.config/magpie), while this magpie reads them from another that XDG_CONFIG_HOME, set in the shell it was run from, names; "" when they are the same, or magpie is portable. A magpie run in such a shell sees none of what the app's window shows.

func Resolve

func Resolve(exe string) string

Resolve is the data folder of a magpie run from exe, or "" when it isn't portable.

func SystemCache

func SystemCache() (string, error)

SystemCache is the cache folder the OS names for magpie (~/Library/Caches/magpie on a Mac, %LocalAppData%\magpie on Windows), which a few caches have always used; portable, it is Cache.

func UseExecutable

func UseExecutable(exe string)

UseExecutable decides again as if magpie ran from exe ("" for an installed magpie, whatever runs): for tests.

func WebView added in v0.1.637

func WebView() string

WebView is the folder the Windows webview (WebView2) keeps its profile in — its cache, cookies and the pages' storage — or "" for its own default. Installed, that default is %APPDATA%\<exe name>, as it always was, so nothing kept there is lost; portable, it is data\webview2, so a portable magpie leaves no magpie.exe folder in the user's AppData (#508).

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL