Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

desktop-common.sh deletes XDG dirs and creates self-referential symlinks on classic snap first launch

Offen Anfängerfreundlich
#3,316 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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

  1. Fresh Ubuntu install, user has standard XDG directories (Desktop, Documents, etc.)
  2. Install WaveTerm snap: snap install waveterm
  3. Launch WaveTerm for the first time
  4. 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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus wavetermdev/waveterm

Alle Issues in wavetermdev/waveterm

Ähnliche Issues

Weitere Issues zu Go

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.