Skip update check for system-wide (AUR) installs

Co-authored-by: wheaney <42350981+wheaney@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-02-28 19:22:37 +00:00
parent 1a729ac98f
commit 35c552ef6d
2 changed files with 28 additions and 1 deletions

View File

@ -595,6 +595,14 @@ void BreezyDesktopEffectConfig::checkEffectLoaded() {
void BreezyDesktopEffectConfig::checkForUpdates() {
#ifdef BREEZY_DESKTOP_VERSION_STR
// Skip update check for system-wide installs (e.g. AUR) — the package
// manager handles updates there. Scripted installs put the plugin under
// the user's home directory, so we use that as the heuristic.
const QString pluginPath = metaData().fileName();
const QString home = QDir::homePath();
if (!pluginPath.startsWith(home + QLatin1Char('/')))
return;
if (!m_networkManager)
m_networkManager = new QNetworkAccessManager(this);

View File

@ -19,6 +19,8 @@
import json
import logging
import os
import sys
import threading
from urllib.request import urlopen, Request
from urllib.error import URLError
@ -28,6 +30,19 @@ logger = logging.getLogger('breezy_ui')
GITHUB_RELEASES_URL = 'https://api.github.com/repos/wheaney/breezy-desktop/releases/latest'
def _is_user_local_install():
"""Return True if the app is running from a user-local installation.
Scripted installs put the binary under the user's home directory (e.g.
~/.local/bin/breezydesktop). System-wide package manager installs (e.g.
AUR) put the binary in a system path like /usr/bin and don't need a
version-update prompt because the package manager handles updates.
"""
home = os.path.expanduser('~')
script_path = os.path.realpath(sys.argv[0])
return script_path.startswith(home + os.sep)
def _parse_version(version_str):
"""Parse a version string like '2.8.10' or 'v2.8.9' into a tuple of ints."""
v = version_str.strip().lstrip('v')
@ -43,8 +58,12 @@ def check_for_update(current_version, callback):
Calls callback(latest_version_str) on the calling thread's GLib main loop
if a newer version is found, or callback(None) if no update is available
or if the check fails.
or if the check fails. Does nothing (no callback) when not running from a
user-local installation (e.g. installed via AUR).
"""
if not _is_user_local_install():
return
def _check():
latest_version = None
try: