tonhowtf/omniget · error
dentro do Flatpak o Spicetify nao consegue alterar o…
Error message
dentro do Flatpak o Spicetify nao consegue alterar o Spotify do sistema
What it means
`install` refuses to download/install the Spicetify CLI when the app itself is running inside a Flatpak sandbox. A sandboxed app cannot properly modify the host's Spotify installation, so the operation is blocked up-front with this explanatory error rather than failing confusingly later.
Solutions
- Install the app via a non-sandboxed method (native package: .deb/.rpm/AUR, or a non-Flatpak build) to manage Spicetify
- Install and manage spicetify-cli directly on the host: `curl -fsSL https://raw.githubusercontent.com/spicetify/spicetify-cli/master/install.sh | sh`
- If the Spicetify CLI already exists on the host, point the app at it instead of triggering a fresh install inside the sandbox
- Grant the Flatpak host access (`flatpak override --user --filesystem=host`) — may help detection but does not fully enable spicetify's host modifications
Example fix
// before
let path = install().await?; // hard error in Flatpak
// after
if dependencies::is_flatpak() {
ui::show_hint("Use the native package or install spicetify on the host manually.");
return Ok(PathBuf::new()); // degrade gracefully instead of erroring
}
let path = install().await?; Defensive patterns
Strategy: fallback
Validate before calling
// before calling install():
if dependencies::is_flatpak() {
eprintln!("Running under Flatpak — spicetify install unavailable; use native package.");
return;
} Try / catch
match install().await {
Err(e) if e.to_string().contains("Flatpak") => {
show_hint("Install via native package or run spicetify on the host manually.");
}
other => other,
} Prevention
- Check `dependencies::is_flatpak()` early and hide/disable Spicetify UI in Flatpak builds
- Document the Flatpak limitation for users of the sandboxed distribution
- Offer host-side spicetify install instructions as the alternative path
When it happens
Trigger: Calling `install()` (via `instala_e_le_status`) when `dependencies::is_flatpak()` is true — i.e. the app was installed as a Flatpak and the user tries to manage the system Spotify through it.
Common situations: User installed the app from Flathub and attempts to install Spicetify; Flatpak sandbox lacks host filesystem/access to Spotify; user expects Spicetify features to work in the sandboxed build.
Understand the failure class
Background: "unsupported platform" / "not supported on this platform" errors: what they mean and how to fix them — this error's family across 47 libraries.
Related errors
- FFmpeg is provided by the Flatpak runtime and cannot be…
- yt-dlp not found in Flatpak sandbox
- yt-dlp is provided by the Flatpak runtime and cannot be…
- FFmpeg not found in Flatpak sandbox
- FFmpeg installed but failed to execute
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/2c4fdb01db5e1219.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/core/spicetify.rs:511
.unpack(dest)
.map_err(|e| anyhow!("tar.gz invalido: {}", e))?;
Ok(())
}
#[cfg(unix)]
fn make_executable(path: &Path) {
use std::os::unix::fs::PermissionsExt;
let _ = std::fs::set_permissions(path, std::fs::Permissions::from_mode(0o755));
}
#[cfg(not(unix))]
fn make_executable(_path: &Path) {}
/// Baixa o último release do CLI para `<app_data>/bin/spicetify-cli/`.
/// A pasta antiga só sai depois que a nova está inteira no disco.
pub async fn install() -> anyhow::Result<PathBuf> {
if dependencies::is_flatpak() {
return Err(anyhow!(
"dentro do Flatpak o Spicetify nao consegue alterar o Spotify do sistema"
));
}
let suffix = cli_asset_suffix()?;
let dir = managed_dir().ok_or_else(|| anyhow!("Could not determine data directory"))?;
let client = github_client()?;
let asset = latest_asset(&client, CLI_REPO, |n| n.ends_with(suffix)).await?;
tracing::info!("[spicetify] baixando {} ({})", asset.name, asset.tag);
let data = download_verified(&client, &asset).await?;
let staging = dir.with_extension("new");
let _ = std::fs::remove_dir_all(&staging);
std::fs::create_dir_all(&staging)?;
let is_zip = asset.name.ends_with(".zip");
let staging_clone = staging.clone();
tokio::task::spawn_blocking(move || {
if is_zip {
unpack_zip(&data, &staging_clone)View on GitHub (pinned to 8600b91f42)