desktop-common.sh deletes XDG dirs and creates self-referential symlinks on classic snap first launch
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 1/5
- Tiempo estimado
- Menos de una hora
- Aptitud para principiantes
- 75/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- bash
- Área
- cli
Línea de trabajo
Comienza en desktop-common.sh alrededor de las líneas 204–213 y revisa la ruta de creación de symlinks de XDG bajo classic confinement. Reprodúcelo con un lanzamiento nuevo de snap si es posible y, después, verifica que los directorios real-home estándar permanezcan intactos y que el comportamiento de strict-confinement siga creando los enlaces esperados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Go
- Estrellas
- 22.4k
- Forks
- 1.1k
- Merge medio
- 12 d 6 h
- PR fusionados (30 d)
- 14
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de wavetermdev/waveterm
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
wavetermdev/waveterm#3481 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
wavetermdev/waveterm#3435 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
wavetermdev/waveterm#3432 ·
Los mantenedores suelen responder en 1 día
-
enhancement triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
wavetermdev/waveterm#3431 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
wavetermdev/waveterm#3428 ·
Los mantenedores suelen responder en 1 día
Todos los issues de wavetermdev/waveterm
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
kind/engineering pulumi/pulumi-terraform Task Workflow Failure
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
pulumi/pulumi-terraform#1215 ·
Los mantenedores suelen responder en 1 día
-
bug needs-acceptance wg/developer-experience-ecosystem
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
vllm-project/semantic-router#4480 ·
Los mantenedores suelen responder en 1 día
-
area/docs kind/documentation priority/backlog triage/accepted
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
lexfrei/cloudflare-tunnel-gateway-controller#943 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
keyxmakerx/Chronicle#967 ·
Los mantenedores suelen responder en 1 día