desktop-common.sh deletes XDG dirs and creates self-referential symlinks on classic snap first launch
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 1/5
- Geschätzter Aufwand
- Unter einer Stunde
- Anfängerfreundlichkeit
- 75/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- bash
- Bereich
- cli
Rechercherichtung
Beginnen Sie in desktop-common.sh etwa bei den Zeilen 204–213 und überprüfen Sie den Pfad zur Erstellung der XDG-Symlinks unter classic confinement. Reproduzieren Sie das Problem nach Möglichkeit mit einem frischen snap-Start und verifizieren Sie anschließend, dass die standardmäßigen real-home-Verzeichnisse intakt bleiben und dass das Verhalten bei strict-confinement weiterhin die erwarteten Links erstellt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Description
On first launch of the WaveTerm snap (v0.14.5, Ubuntu 26.04), desktop-common.sh destroyed all standard XDG user directories (Desktop, Documents, Downloads, Music, Pictures, Public, Templates, Videos) and replaced them with broken self-referential symlinks, making them inaccessible from the file manager.
Root cause
WaveTerm uses confinement: classic, which means $HOME is not isolated — it stays as the user's real home (e.g. /home/leeCZ). The desktop-common.sh script was written for strict confinement where $HOME = $SNAP_USER_DATA ≠ $REALHOME. With classic confinement both variables are identical.
The broken code path (around line 204–213 of desktop-common.sh):
# can_open_file uses "head -c0" which always fails on directories → sets needs_xdg_links=true
b="$(realpath "${XDG_SPECIAL_DIRS_PATHS[$i]}" --relative-to="$HOME")"
if [ -e "$REALHOME/$b" ]; then
if [ -d "$HOME/$b" ]; then
rmdir "$HOME/$b" # ← DELETES the real directory
fi
if [ ! -e "$HOME/$b" ]; then
ln -s "$REALHOME/$b" "$HOME/$b" # ← ln -s /home/user/Desktop /home/user/Desktop
fi # (points to itself — both vars are /home/user)
fi
Steps to reproduce
- Fresh Ubuntu install, user has standard XDG directories (Desktop, Documents, etc.)
- Install WaveTerm snap:
snap install waveterm - Launch WaveTerm for the first time
- Open the file manager — standard home folders are now inaccessible broken symlinks
Expected
Snap home ($SNAP_USER_DATA) gets symlinks pointing to real XDG dirs — leaving the real home untouched.
Actual
Real XDG directories are deleted and replaced with self-referential symlinks in the real home:
lrwxrwxrwx Desktop -> /home/user/Desktop
lrwxrwxrwx Documents -> /home/user/Documents
...
Suggested fix
Guard the symlink creation block so it only runs when $HOME != $REALHOME (i.e. strict confinement):
if [ $needs_xdg_links = true ] && [ "$HOME" != "$REALHOME" ]; then
Notes
The bug also re-triggers on every snap version update (when SNAP_DESKTOP_COMPONENTS_NEED_UPDATE=true), so affected users will keep hitting it after each WaveTerm upgrade until fixed.
Environment
- WaveTerm: 0.14.5 (snap revision 204, classic confinement)
- OS: Ubuntu 26.04
- Shell: bash
- Vorherrschende Sprache
- Go
- Sterne
- 22.3k
- Forks
- 1.1k
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus wavetermdev/waveterm
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
wavetermdev/waveterm#3481 · 1 Kommentar ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
wavetermdev/waveterm#3435 ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
wavetermdev/waveterm#3432 ·
-
enhancement triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
wavetermdev/waveterm#3431 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 86/100
wavetermdev/waveterm#3428 ·
Alle Issues in wavetermdev/waveterm
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 90/100
-
Bob Shell support Offenenhancement
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
santhosh-tekuri/jsonschema#276 ·