- Dock drag-to-reorder for pinned apps (insertion gap, quick-slide vs dwell) - Fullscreen detection: scan all windows via HyprlandData.windowList - IdleCoordinator, GlobalStates, Session.qml updates - Deploy script, qmldir, settings, wallpaper, visualizer fixes - sessiond server, memory module updates Co-Authored-By: Claude <noreply@anthropic.com>
5.7 KiB
Task: Official Discord + BetterDiscord on SouveraineOS (Pixel 3, aarch64)
Status: BLOCKED on native Electron. Plan: cross-build Electron (and/or the Discord package) on an x86 box or a beefier arm64 host, ship the artifacts back to the phone.
Goal: Run the official Discord desktop client on this device and inject BetterDiscord into it (theming + plugins). Wrappers (Vesktop/WebCord/Legcord) were explicitly rejected — we want stock Discord + BetterDiscord specifically.
Device facts (verified on-device 2026-07-14)
- OS: Souveraine OS (Arch Linux ARM),
ID_LIKE=arch, BUILD_ID 20260707 - Arch: aarch64
- Pkg mgrs:
pacman,flatpak(flathub system remote). AUR helpers present:yay,paru. - Repo
bunNOT present; installed manually to~/.bun/bin/bun(v1.3.14 aarch64). ~/.config/discordexists but is EMPTY (no app version dir) — nothing to inject into yet.
What's in the repos (checked with pacman -Ss)
- ✅
extra/betterdiscordctl 1.6.1-1— BD manager CLI, installable, needs a Discord install to act on - ✅
extra/asar 4.1.2-1— makedep for the Discord PKGBUILD - ✅
jq,brotli— present - ❌ NO
electronpackage in any form (noelectron, noelectron36/37/...).pacman -Ssq electronreturns nothing. THIS IS THE BLOCKER.
Flathub (all bundle their own Electron → run on arm64, but can't take BetterDiscord)
Vesktop dev.vencord.Vesktop, Equibop org.equicord.equibop, WebCord
io.github.spacingbat3.webcord, Dissent so.libdb.dissent, Legcord, GoofCord.
(Vesktop/Equibop have Vencord = plugins+themes, the closest BD-equivalent. Rejected for now.)
Already done (in /home/casey/projects/BetterDiscord)
BetterDiscord cloned from GitHub + built successfully:
git clone --depth 1 https://github.com/BetterDiscord/BetterDiscord.gitbun install(510 pkgs) thenbun run build:production→ succeeded- Artifacts in
dist/:betterdiscord.js(555kb),main.js,preload.js,earlyRenderer.js, editor bundle. Version 1.13.14, commitc7ef1c5. bun run inject→ fails as expected: "No version dir in /home/casey/.config/discord" (no official Discord app to patch).
Injector expects a Discord Desktop install dir like app-X.Y.Z under the config path.
The install path (why it's almost possible)
The AUR pkg discord_arch_electron (v1:1.0.146, 209 votes) is the target. Its PKGBUILD
(saved alongside this file as PKGBUILD.x86-reference) shows Discord's Linux app is
JavaScript + app.asar + brotli .distro module blobs — arch-independent. The ONLY
native pieces are:
- Electron (the runtime) — pulled via
depends=(electron). ← the real arch dependency discord_krisp/discord_krisp.node— x86-64 native noise-cancel lib; itskrisp-patcher.pystep WILL fail on aarch64. Krisp is OPTIONAL — comment it out, Discord still runs (PKGBUILD even says so).
So a working aarch64 build = provide an arm64 Electron + skip Krisp + flip arch.
Concrete cross-build plan
- Get/build an aarch64 Electron matching Discord's required major (Discord 1.0.146
era ships on a recent Electron — check
core/resources/app/package.jsonelectronVersionor the bundled build_info after extracting the tarball). Options:- Build the Arch
electronPKGBUILD for aarch64 on a cross host (heavy: Chromium). - OR reuse a prebuilt arm64 Electron (e.g. from npm
electronarm64 dist, or Alpine/Debian arm64 electron) and repackage.
- Build the Arch
- Fork the
discord_arch_electronPKGBUILD:arch=('x86_64' 'aarch64')- point
dependsat whatever electron pkg you produce (or vendor it) - COMMENT OUT the Krisp patcher block in
build()(lines ~131-139) and thediscord_krispsource line — OR guard it[[ $CARCH == x86_64 ]]. - The
.distromodule URLs are/linux/x64/paths but contents are JS/resources; they should work under arm64 electron. Verify at runtime.
makepkg -sion-device (or build the pkg on the cross host andpacman -Uthe .pkg.tar.zst here).- Once
/usr/share/discord+/usr/bin/discordexist and launch:betterdiscordctl install(repo pkg already available) — OR —- from
~/projects/BetterDiscord:bun run inject(now finds the app dir).
- Launch Discord, confirm BetterDiscord loaded (Settings → BetterDiscord panel).
Risks / open questions
- Electron major-version mismatch vs what Discord's app.asar expects → white screen / API breakage. Match the major as closely as possible.
- Voice: without Krisp, noise suppression off, but voice/WebRTC should still work (Electron's).
- Discord may nag to "update" — PKGBUILD already sets
newUpdater=falsein build_info.json; keep that. - app.asar is repacked to use system electron paths (
/usr/share/discord/resources); BetterDiscord injects into that asar/app — make sure BD inject runs AFTER the pkg's asar repack, against the installed/usr/share/discord/resources/app.asar.
Resume checklist (fast path)
- Produce aarch64 Electron artifact (matching Discord's electron major)
- Fork PKGBUILD: arch+=aarch64, swap electron dep, disable Krisp
- Build pkg (cross or on-device), install with pacman
discordlaunches to login screen on the phone- Inject BetterDiscord (
betterdiscordctl installorbun run injectfrom ~/projects/BetterDiscord) - Verify BD settings panel appears; load a theme/plugin
Key paths
- BetterDiscord source+build:
/home/casey/projects/BetterDiscord(dist/ built, v1.13.14) - This task dir:
/home/casey/projects/unfinished/discord-betterdiscord/ - Reference PKGBUILD:
./PKGBUILD.x86-reference - bun binary:
~/.bun/bin/bun