From 7b2c72f21645014e13f61e1d623644f14a28dd90 Mon Sep 17 00:00:00 2001
From: Doyle Fermi
Date: Thu, 20 Aug 2026 14:48:00 +0530
Subject: [PATCH] feat(site): offer the .deb alongside the AppImage for Linux
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Four Linux builds are published every release; the download page linked one
of them. A colleague on Ubuntu was being handed an AppImage — which needs a
`chmod +x` and integrates with nothing — while the .deb that gives them a
menu entry, an icon and `apt remove` sat unlinked on the Releases page.
Changes:
- Linux visitors get two buttons: the .deb as the primary download, and
"Download the AppImage instead" beneath it.
- "Other platforms" now lists Linux (Deb) and Linux (AppImage) separately
instead of a single "Linux".
- Both Linux entries are dropped from "Other platforms" when the visitor is
already on Linux, since both are buttons directly above it.
The .deb leads because a browser cannot tell Debian from Fedora — there is
no distribution in the user agent — so this is a bet on the audience rather
than a detection. The AppImage stays one click away for exactly that reason:
it runs anywhere, so nobody outside Debian or Ubuntu is left holding a file
their system cannot open. The .rpm and .tar.gz builds remain on the
Releases page.
Also fixes the no-JS fallback href, which still pointed at v1.12.3 — three
months stale for anyone with JavaScript disabled.
Verified both paths: the Mac view live in a browser, and the Linux view by
running the page's own script against a stub DOM with a Linux user agent,
since the Linux branch is unreachable by spoofing in-browser. Every
generated filename was checked against the real v1.15.0 release assets, so
no link 404s — the arch names differ per packager (amd64 for deb, x86_64
for AppImage) and are easy to get wrong.
---
site/index.html | 43 +++++++++++++++++++++++++++++++++++++------
1 file changed, 37 insertions(+), 6 deletions(-)
diff --git a/site/index.html b/site/index.html
index becbddd..142ccfc 100644
--- a/site/index.html
+++ b/site/index.html
@@ -165,7 +165,9 @@ Argos
-
Download Argos for Mac
+
Download Argos for Mac
+
+
For your computer
@@ -356,7 +358,8 @@
For the team
var primary = document.getElementById('dl-primary')
var cap = document.getElementById('dl-cap')
var others = document.getElementById('dl-others')
- if (!primary || !cap || !others) return
+ var secondary = document.getElementById('dl-secondary')
+ if (!primary || !cap || !others || !secondary) return
var ua = navigator.userAgent || ''
var platform = navigator.platform || ''
@@ -386,7 +389,17 @@
For the team
'mac-arm': { href: href('Argos-' + version + '-mac-arm64.dmg'), label: 'Download Argos for Mac', platform: 'For macOS (Apple Silicon)' },
'mac-intel': { href: href('Argos-' + version + '-mac-x64.dmg'), label: 'Download Argos for Mac', platform: 'For macOS (Intel)' },
win: { href: href('Argos-' + version + '-win-x64.exe'), label: 'Download Argos for Windows', platform: 'For Windows' },
- linux: { href: href('Argos-' + version + '-linux-x86_64.AppImage'), label: 'Download Argos for Linux', platform: 'For Linux' },
+ // Two Linux builds are surfaced, with the .deb leading: it is the better install on
+ // Debian and Ubuntu — menu entry, icon, `apt remove` — where the AppImage needs a
+ // `chmod +x` and integrates with nothing.
+ //
+ // A browser cannot tell one distribution from another, so this is a bet on the audience
+ // rather than a detection. The AppImage is offered as a second button for exactly that
+ // reason: it runs on any distribution, so nobody who is not on Debian or Ubuntu is left
+ // with a file their system cannot open. The .rpm and .tar.gz builds are still published
+ // on the Releases page.
+ linux: { href: href('Argos-' + version + '-linux-x86_64.AppImage'), label: 'Download Argos for Linux', platform: 'For Linux (AppImage)' },
+ 'linux-deb': { href: href('Argos-' + version + '-linux-amd64.deb'), label: 'Download Argos for Linux', platform: 'For Linux (Deb)' },
}
}
@@ -395,9 +408,13 @@
For the team
{ id: 'mac-arm', label: 'Mac (Apple Silicon)' },
{ id: 'mac-intel', label: 'Mac (Intel)' },
{ id: 'win', label: 'Windows' },
- { id: 'linux', label: 'Linux' },
+ { id: 'linux-deb', label: 'Linux (Deb)' },
+ { id: 'linux', label: 'Linux (AppImage)' },
]
- return order.filter(function (item) { return item.id !== id })
+ // A Linux visitor already has both builds as buttons, so neither belongs in this line as
+ // well — otherwise the same download is offered twice, two inches apart.
+ var hide = id === 'linux-deb' || id === 'linux' ? ['linux', 'linux-deb'] : [id]
+ return order.filter(function (item) { return hide.indexOf(item.id) === -1 })
.map(function (item) { return { id: item.id, href: all[item.id].href, label: item.label } })
}
@@ -428,6 +445,20 @@
For the team
primary.onclick = function () {
trackDownload(id, id, version)
}
+
+ // On Linux, offer both builds as buttons rather than making people hunt for the .deb in
+ // the "Other platforms" line.
+ if (id === 'linux-deb') {
+ secondary.textContent = 'Download the AppImage instead'
+ secondary.href = all['linux'].href
+ secondary.onclick = function () {
+ trackDownload('linux', id, version)
+ }
+ secondary.hidden = false
+ } else {
+ secondary.hidden = true
+ }
+
others.replaceChildren()
others.appendChild(document.createTextNode('Other platforms: '))
otherLinks(id, all).forEach(function (item, i) {
@@ -464,7 +495,7 @@
For the team
function guessId(arch) {
if (isMac()) return arch === 'intel' ? 'mac-intel' : 'mac-arm'
if (isWin()) return 'win'
- if (isLinux()) return 'linux'
+ if (isLinux()) return 'linux-deb'
return 'mac-arm'
}