Respaldo y restauración de la personalización del escritorio Linux.
🌐 Sitio del proyecto · 📦 Última versión
Guarda fotografías del estado visual de tu sistema —tema GTK/Qt, iconos, cursores, fuentes, fondos, esquemas de color, widgets y barras— con una portada compuesta (escritorio + cursor + muestra de iconos) y permite volver a cualquiera de ellas.
Estado: v0.9.0. Probado sobre KDE Plasma 6 (Wayland) y con tests de integración headless. Hay soporte para GNOME, Xfce, Cinnamon, MATE, Budgie, LXQt, COSMIC, Hyprland, niri, Sway, River, Wayfire y labwc, con menos horas de prueba real en algunos entornos: los reportes son bienvenidos.
La personalización vive en varios lugares distintos y cada DE la guarda a su manera:
| Qué | Dónde vive | Cómo se restaura |
|---|---|---|
| Temas, iconos, cursores | ~/.themes, ~/.icons, ~/.local/share/{themes,icons} |
copiar árboles |
| Fuentes de usuario | ~/.local/share/fonts, ~/.config/fontconfig |
copiar árboles |
| GNOME / Cinnamon / MATE / Budgie | dconf (binario), incluye extensiones y dock | dconf load |
| Xfce | xfconf (XML por canal + demonio) | xfconf-query -p … -s |
| KDE Plasma | INI en ~/.config + árboles en ~/.local/share |
copiar archivos |
| Hyprland | ~/.config/hypr + ecosistema (Waybar, lanzadores, notificaciones) |
copiar solo configuración |
| niri | ~/.config/niri/config.kdl + includes y shells |
copiar solo configuración |
| Sway | ~/.config/sway/config + config.d |
copiar solo configuración |
| River | ~/.config/river/init |
copiar solo configuración |
| Wayfire | ~/.config/wayfire.ini + wf-shell.ini |
copiar solo configuración |
| labwc | ~/.config/labwc/rc.xml + autostart |
copiar solo configuración |
| LXQt | ~/.config/lxqt/*.conf + PCManFM-Qt |
copiar archivos |
| i3 | ~/.config/i3/config + config.d |
copiar configuración |
| Openbox | ~/.config/openbox/rc.xml + autostart |
copiar configuración |
| COSMIC | ~/.config/cosmic/** (RON) |
copiar archivos |
| WMs / dotfiles | ~/.config/<wm>/ |
copiar archivos |
Un backup que solo copia archivos deja los temas instalados pero no aplicados. ThemeVault guarda ambas cosas: los archivos y los ajustes lógicos.
En los compositores Wayland el respaldo es solo de configuración: una lista
blanca de archivos de texto. No se copian fotos, wallpapers, documentos, notas,
scripts, claves ni historiales como elementos restaurables. Los atajos de
teclado sí se guardan e interpretan, y aparecen en el detalle de la copia. La
portada con fondo es opcional; con --no-preview no se guarda ninguna imagen.
La copia local es completa y puede incluir datos personales: captura del
escritorio, rutas /home/..., historial de dconf y comandos de atajos. Antes
de compartir una carpeta cruda, usá Auditar o themevault audit; para
generar una versión limpia, themevault export-sanitized. El perfil de
comunidad y la copia saneada son listas blancas; la copia original no se
modifica.
Las shells de Wayland se comparten entre compositores: Waybar, Noctalia, DankMaterialShell, Quickshell, AGS, fuzzel, wofi/rofi, notificaciones, terminales y estilos Qt/GTK.
Descargá el AppImage desde la última release:
chmod +x ThemeVault-*.AppImage
./ThemeVault-*.AppImageNo requiere instalar nada. Pensado para correr desde Ubuntu 22.04 en adelante, Debian 12, Fedora 36, Arch y derivados.
El AppImage usa el renderizador por software para funcionar con cualquier driver. Si querés probar aceleración por GPU:
QT_QUICK_BACKEND=opengl ./ThemeVault-*.AppImage.
pip install "themevault[gui]"
themevault uigit clone https://github.com/TuxArchi/themevault
cd themevault
python3 -m venv .venv
.venv/bin/pip install -e '.[gui]'
.venv/bin/themevault detect
.venv/bin/themevault uiSin la GUI (solo CLI): pip install themevault y listo. Dependencias del core:
Python 3.10+ y nada más. La GUI suma PySide6-Essentials; Pillow genera
miniaturas y paletas (sin él se usa ImageMagick o se degrada con elegancia).
Una sola ventana, tres vistas:
- Copias: galería con la portada compuesta de cada copia, chip del escritorio, fecha, tamaño y paleta. Hover → «Restaurar» directo. Con varios monitores, la miniatura trae botones ‹ › grandes a cada lado (con contador 1/2) para pasar de pantalla en pantalla sin salir de la galería.
- Detalle: captura grande (con el mismo selector de monitor y el nombre de la salida, p. ej. «DP-3 1/2»), panel de datos, paleta con hex, widgets y paneles con su geometría, muestra del tema (cursor, iconos y una tira de cada barra de tareas recortada de la captura) y tarjetas por categoría.
- Sistema: distro, escritorio detectado, adaptadores activos, herramientas disponibles, ubicación del almacén.
- Comunidad: perfiles de otras personas con portada, búsqueda y filtro por escritorio. El detalle lista los requisitos («necesita Papirus-Dark») y se aplica con el mismo motor de restauración que una copia.
- Compartir: desde el detalle de una copia, genera un bundle publicable con fondo (imagen o video), apariencia, layout, atajos seguros y plugins de terceros, con vista previa de lo que se comparte y switches para elegir qué incluir.
- Auditar: revisa la copia local y muestra qué datos personales contiene (capturas, rutas, historial, shells, atajos) antes de compartirla.
- Copia saneada: genera una copia limpia para compartir sin modificar la original.
- Video wallpapers: se comprimen con ffmpeg, se les quita audio/metadatos y
se aplican con
mpvpaperen Wayland; si no se puede, se usa un frame fijo.
Flujos:
- Nueva copia (
Ctrl+N): nombre opcional y switch para incluir la captura. - Widgets y paneles: lista de qué widget está colocado en cada panel o
escritorio, en el orden real (
AppletOrderen Plasma), con el nombre del tema y aviso si el widget no existe en este sistema. Incluye tamaño, posición, si el panel es flotante y su modo de ocultado. - Widgets de terceros: se respaldan los que instalaste en tu usuario
(
~/.local/share/plasma/plasmoids). Si en la máquina destino faltan, el diálogo de restauración los marca y ofrece instalarlos desde la copia o buscarlos en la tienda. - Tienda de widgets: buscador integrado sobre store.kde.org (el mismo proveedor que usa Plasma) para instalar sin salir de la app. Solo usa la red cuando buscás o instalás.
- GNOME: la barra superior aparece como panel (con sus extensiones) y el dock con sus ajustes — posición, tamaño de iconos, auto-ocultar y si está fijo. Al no ser una barra sólida no se recorta una tira del dock.
- Hyprland: se respaldan
hyprland.confy sussourcedentro del home, junto con Waybar, lanzadores, notificaciones, terminales y estilos Qt/GTK. Los atajos de teclado personalizados se muestran con su combinación, dispatcher y comentario. Waybar aparece como barra con sus módulos. - niri, Sway, River, Wayfire y labwc: cada uno con su formato de configuración e includes. Se extraen atajos, cursor, fondos de autostart y la barra de Sway/Waybar; en niri y Sway se detectan los monitores reales.
- Shells Wayland: Noctalia, DankMaterialShell, Quickshell y AGS se respaldan junto con Waybar para todos los compositores.
- Cinnamon, MATE y Budgie: dconf, paneles, applets/extensions y atajos.
- LXQt: configuración INI, panel, PCManFM-Qt y atajos globales.
- i3 y Openbox: config X11, includes, atajos y fondos de autostart.
- COSMIC: archivos RON, atajos personalizados, paneles y fondos.
- Restaurar: abre el plan, muestra qué se puede aplicar, qué queda bloqueado y qué temas faltan en este sistema. Se elige por categoría y hay un switch para crear el punto de retorno previo.
- Restaurar por pantalla (KDE): si la copia tiene varias pantallas, elegís
cuál restaurar y en qué monitor de tu equipo. Requiere reiniciar
plasmashell(~2 s) y deja un.bakdel layout por si querés volver atrás conthemevault revert-layout. - Eliminar: confirmación desde el detalle.
- Actualizar (
Ctrl+R),Escvuelve atrás.
Detalles de implementación de la UI:
- Miniaturas en Python (
Pillow): 720×405 con esquinas redondeadas y caché en~/.cache/themevault/thumbs. Evita shaders y hace que la galería abra instantáneo. - Capturas fallidas detectadas: en Wayland algunas herramientas devuelven una imagen negra sin error (spectacle sin portal, por ejemplo). Se detecta y se usa el wallpaper como portada.
- Solo el escritorio: antes de capturar se pide «Mostrar escritorio»
(
kglobalaccelen KDE,wmctrlen X11), así la foto no incluye ventanas abiertas ni la propia app. Si el escritorio no expone ese atajo, se captura la pantalla tal cual. - Multi-monitor: se detectan los monitores (
kscreen-doctor/xrandr), se recorta la captura por pantalla y se genera una portada por monitor. - Barra de tareas: se consulta la geometría real de cada panel al shell
(
location,offset,length,lengthMode,screen) además del.config. Así se recorta la franja exacta, aunque la barra esté arriba, a la izquierda, sea flotante o no ocupe todo el ancho. Una tira por barra enpreview/panels/. Si la barra es vertical (izquierda/derecha), la vista la muestra como tira alta en vez de estirarla. - Barras auto-ocultas: antes de capturar se destapan por D-Bus
(
hiding = none) y se vuelven a ocultar al terminar, así la tira sale con contenido en vez de wallpaper. - Xfce: la orientación se deduce del punto de anclaje (
p=6;x=960;y=1066) comparándolo con el monitor, así una barra superior o lateral también se recorta bien. - Trabajos en hilo aparte: empaquetar un tema o restaurar no congela la ventana.
- La GUI y la CLI comparten el mismo core: no hay dos implementaciones.
themevault detect # distro, DE, herramientas y activos
themevault backup -m "catppuccin" # crear copia (con captura y paleta)
themevault backup --no-preview # solo configuración, sin captura ni fondo
themevault backup -a hyprland # forzar el adaptador de Hyprland
themevault backup -a niri # también: sway, river, wayfire, labwc
themevault backup -a cinnamon # también: mate, budgie, lxqt, i3, openbox, cosmic
themevault list # galería en texto, con muestras de color
themevault show 20261101-100217-kde # detalle por categoría
themevault restore <id> --dry-run # ver el plan sin tocar nada
themevault restore <id> --only theme # restaurar solo temas
themevault restore <id> -y # aplicar (crea punto de retorno antes)
themevault rebuild <id> # regenerar portada y widgets de una copia
themevault install-widgets <id> # instalar los widgets que trae la copia
themevault widgets search "clima" # buscar en la tienda
themevault widgets install 2380036 # instalar un widget de la tienda
themevault export-profile <id> --author tu-usuario --name "Mi estilo" # perfil compartible
themevault audit <id> # ver qué datos personales tiene una copia
themevault export-sanitized <id> # copia limpia para compartir (no toca la original)
themevault cache clean # borrar caché de la comunidad
themevault verify <id> # verificar hashes
themevault delete <id> -y # borrar
themevault ui --backup <id> # abrir la GUI en el detalle
themevault path --open # abrir el directorio de copiasrestore acepta prefijos de id, pero exige que sean únicos.
Cada copia es un directorio autocontenido (se puede mover a un pendrive):
~/.local/share/themevault/backups/20261101-100217-kde/
├── manifest.json
├── preview/
│ ├── cover.png portada: escritorio + cursor + iconos + paleta
│ ├── desktop.png captura del escritorio
│ ├── wallpaper.jpg fondo activo
│ ├── panels/ una tira por barra de tareas
│ ├── screens/ un recorte por monitor
│ └── assets/ muestras sueltas (cursor, icon-*.png)
└── files/
└── 75/75e158… blobs direccionados por sha256
manifest.json:
{
"schema": 1,
"id": "20261101-100217-kde",
"created": "2026-11-01T10:02:17-06:00",
"host": { "distro": {"pretty": "Arch Linux"}, "de": "kde", "session": "wayland",
"assets": {"themes": ["Breeze", "..."], "icons": ["Adwaita", "..."]},
"skipped": [] },
"preview": { "cover": "preview/cover.png",
"screenshot": "preview/desktop.png",
"wallpaper": "preview/wallpaper.jpg",
"palette": ["#201a1b", "#0a0a06"],
"themes": { "icons": "breeze-dark", "cursor": "breeze_cursors" },
"samples": { "cursor": "preview/assets/cursor.png",
"icons": ["preview/assets/icon-0.png"] } },
"containers": [
{ "kind": "panel", "name": "Panel inferior", "location": "inferior",
"size": 46, "floating": true, "visibility": "esquivar ventanas",
"order": ["4","5","6","7","8","23","24"], "widgets": 7 }
],
"widgets": [
{ "id": "org.kde.plasma.digitalclock", "name": "Reloj digital",
"kind": "plasmoid", "container": "Panel inferior",
"position": 6, "installed": true }
],
"keybinds": [
{ "combo": "SUPER + Q", "dispatcher": "killactive",
"description": "cerrar ventana", "source": "~/.config/hypr/hyprland.conf",
"line": 42, "restorable": true }
],
"items": [
{ "kind": "tree", "category": "theme", "name": "MiTema",
"source": "~/.themes/MiTema", "blob": "files/1a/1ac2…",
"sha256": "1ac2…", "size": 4096, "meta": {"files": 12} },
{ "kind": "dconf", "category": "theme", "name": "Apariencia GNOME",
"backend": "dconf", "data": {"path": "/org/gnome/desktop/interface/"},
"blob": "files/9f/9f2a…" },
{ "kind": "setting", "category": "theme", "name": "xsettings:/Net/ThemeName",
"backend": "xfconf",
"data": {"channel": "xsettings", "prop": "/Net/ThemeName",
"type": "string", "value": "Adwaita-dark"} }
]
}Cuatro tipos de item:
- file — archivo suelto (
kdeglobals,settings.ini,.colors). - tree — árbol empaquetado en
tar.gzdeterminista (mtime/uid normalizados, así el hash depende solo del contenido: dos copias del mismo tema deduplican de verdad). - dconf — volcado de texto de una rama de dconf.
- setting — ajuste puntual aplicado por CLI (xfconf).
Las rutas se guardan como ~/..., no absolutas: una copia hecha en
/home/ana se restaura igual en /home/luis.
Los temas de /usr/share no se copian: se registra su nombre en
host.assets. Evita copias de cientos de MB y problemas de licencia con
fuentes comerciales.
- Plan primero. La GUI (y
--dry-run) muestra qué se aplicará, qué está bloqueado y por qué. - Punto de retorno automático. Antes de tocar nada se crea otra copia etiquetada Punto de restauración. Todo cambio es reversible.
- Restauración selectiva por categoría.
- Nunca escribe fuera de
$HOME. Cualquier item con ruta externa queda bloqueado en el plan. - Aviso de dependencias. Si la copia referencia temas o iconos que este sistema no tiene, se avisa antes de aplicar.
- Escrituras atómicas. Archivos vía
tmp+os.replace; árboles se extraen a un staging y se intercambian, con rollback si el intercambio falla.
GUI (Qt6/QML) CLI (themevault …)
\ /
core: backup · plan · restore · verify
|
adaptadores por DE (plugins)
gnome · kde · xfce · (cinnamon · mate · …)
|
drivers: files · dconf · xfconf
src/themevault/
├── cli.py interfaz de línea de comandos
├── model.py Item, Manifest, categorías
├── store.py blobs sha256 + tar determinista
├── detect.py distro, DE, sesión, activos instalados
├── drivers.py dconf (dump/load) y xfconf (XML + query)
├── preview.py captura, wallpaper, paleta
├── cover.py portada compuesta (cursor + iconos + paleta)
├── widgets.py paneles, widgets y geometría por DE
├── ecosystem.py apps y shells Wayland compartidas
├── keybinds.py normalización y rebuild de atajos
├── hypr.py parser de Hyprland y atajos de teclado
├── niri.py parser KDL de niri
├── sway.py parser de Sway
├── river.py parser de River
├── wayfire.py parser de Wayfire
├── labwc.py parser de labwc
├── dconf_keys.py atajos de Cinnamon / MATE / Budgie
├── lxqt.py INI y atajos de LXQt
├── cosmic.py atajos RON de COSMIC
├── privacy.py lista blanca de configuración segura
├── backup.py motor de respaldo
├── restore.py plan, aplicación, rollback
├── profile.py bundle de comunidad y lista blanca
├── profile_bundle.py wallpaper y plugins embebidos
├── profile_apply.py aplicación de bundles
├── wallpaper_apply.py fondos por compositor
├── video.py ffmpeg: video wallpapers
├── audit.py auditoría de datos personales en copias
├── sanitize.py copia saneada para compartir
├── adapters/
│ ├── base.py Collector + contrato de adaptador
│ ├── gnome.py dconf
│ ├── hyprland.py configuración de Hyprland
│ ├── niri.py configuración de niri
│ ├── sway.py configuración de Sway
│ ├── river.py configuración de River
│ ├── wayfire.py configuración de Wayfire
│ ├── labwc.py configuración de labwc
│ ├── cinnamon.py dconf de Cinnamon
│ ├── mate.py dconf de MATE
│ ├── budgie.py dconf de Budgie
│ ├── lxqt.py INI de LXQt
│ ├── i3.py configuración de i3
│ ├── openbox.py XML de Openbox
│ ├── cosmic.py RON de COSMIC
│ ├── kde.py INI + árboles
│ └── xfce.py xfconf
└── ui/
├── app.py arranque de la GUI
├── bridge.py puente Python <-> QML (trabajos en hilo)
├── models.py modelo de la galería
├── thumbs.py miniaturas cacheadas
└── qml/ Main, GalleryPage, DetailPage, RestoreDialog…
El core no sabe de GNOME ni de KDE: solo habla con adaptadores.
from .base import Adapter, Collector
class CinnamonAdapter(Adapter):
id = "cinnamon"
label = "Cinnamon"
def _collect(self, collector: Collector) -> None:
collector.add_dconf("/org/cinnamon/desktop/interface/", "theme", "Apariencia")
collector.add_dconf("/org/cinnamon/desktop/background/", "wallpaper", "Fondo")
collector.add_children_as_trees("~/.local/share/cinnamon/theme", "theme")Y registrarlo en adapters/__init__.py. No hay que tocar el core ni la GUI.
.venv/bin/pip install pytest
.venv/bin/python -m pytest -qtests/test_core.py: blobs, dedupe, round-trip de árboles, plan bloqueado fuera del home, parseo de xfconf.tests/test_ui_bridge.py: flujo completo del backend de la GUI (crear copia, plan, detalle, restaurar, errores) con unHOMEtemporal, sin abrir ventanas.tests/test_widgets.py: parser de Plasma (panel, geometría,AppletOrder, widgets ocultos, detección de instalación) y de Xfce.tests/test_cover.py: composición de la portada, captura negra descartada, búsqueda de iconos en un tema falso.tests/test_compositors.py: niri, Sway, River, Wayfire y labwc, includes, atajos, shells Wayland y filtro de archivos personales.tests/test_desktops.py: Cinnamon, MATE, Budgie, LXQt, i3, Openbox y COSMIC.tests/test_profile_bundle.py: wallpaper, video con ffmpeg, plugins embebidos, atajos seguros y aplicación de perfiles.tests/test_audit.py: auditoría de capturas, rutas, historial, shells y atajos; exportación saneada sin tocar la copia original.
packaging/themevault.desktop + src/themevault/ui/qml/themevault.svg sirven
para instalarlo en el menú de aplicaciones. Para capturas automáticas o CI,
themevault-gui --screenshot salida.png [--backup <id>] [--action restore|share|new].
La sección Comunidad muestra perfiles publicados por otras personas: grilla con portadas, búsqueda, filtros por escritorio y detalle con los requisitos («necesita Papirus-Dark»). Un perfil puede incluir fondo, apariencia, layout, atajos seguros y plugins embebidos. Aplicarlo usa el mismo motor de restauración que una copia: plan previo, punto de retorno y rollback.
Desde el detalle de una copia, Compartir… abre un formulario con nombre, autor, licencia y descripción. Antes de exportar muestra exactamente qué se comparte (fondo, apariencia, layout, atajos seguros, plugins y paleta) y qué queda afuera. Si el id ya existe en la comunidad, sugiere otro.
Los videos de fondo se re-encodean con ffmpeg a MP4 H.264 sin audio ni
metadatos, hasta 10 minutos / 50 MB. Si el escritorio no soporta video, se usa
el frame estático de respaldo. La app detecta ffmpeg/ffprobe y muestra el
comando de instalación de la distro si faltan.
Exporta en <carpeta>/<id>/:
profile.json
cover.jpg
wallpaper.mp4 o wallpaper.jpg
plugins/<widget>.tar.gz
Para publicarlo, con el repositorio clonado:
themevault publish-profile ~/themevault-perfiles/mi-estiloValida el perfil con las mismas reglas que el CI, lo copia a profiles/<id>/,
regenera index.json y deja los comandos de git listos. Con --pr (y
confirmación) crea la rama, la sube y abre el pull request con gh. Si gh
está autenticado con otro usuario que el autor, aborta: --allow-author es
solo para maintainers que importan perfiles ajenos.
El flujo de terminal también sirve:
themevault export-profile <tu-copia> --author tu-usuario-de-github --name "Mi estilo"
themevault publish-profile ./mi-estilo --prUn perfil nunca incluye rutas, historial, tokens, capturas de ventanas, scripts personales ni configuración interna de shells. Solo comparte una lista blanca: fondo, apariencia, layout, atajos seguros, plugins declarados, nombres de tema, paleta y portada generada desde el fondo.
El autor es tu usuario de GitHub. El CI de
themevault-profiles valida
que el author coincida con la cuenta que abre el pull request y que no se
edite un perfil ajeno: si un id ya existe, pertenece a quien lo publicó
primero. Los maintainers pueden hacer importaciones, y el PR queda registrado.
Qué se comparte exactamente: docs/PRIVACY.md.
ThemeVault es libre, sin anuncios ni telemetría, y lo mantengo en mi tiempo libre. Si te resulta útil —o te salvó de rearmar el escritorio a mano— podés invitarme un café:
También ayuda muchísimo: reportar bugs con buenos datos, probarlo en tu distribución y mandar un pull request.
| Fase | Contenido | Estado |
|---|---|---|
| 1 | Core + CLI, adaptadores GNOME/KDE/XFCE/Hyprland/niri/Sway/River/Wayfire/labwc, previews, restore seguro | hecho |
| 2 | GUI Qt6/QML: galería, detalle, restore selectivo | hecho |
| 3 | Resolver de paquetes (apt/dnf/pacman/zypper), restore cruzado entre DEs | pendiente |
| 3.5 | Widgets, paneles y geometría + portada compuesta | hecho |
| 4 | Adaptadores Nivel 2 (Cinnamon, MATE, Budgie, LXQt, i3, Openbox, COSMIC) + modo genérico dotfiles | hecho |
| 5 | Empaquetado (AppImage, deb/rpm, AUR), i18n | pendiente |
- Restaurar entre versiones mayores del mismo DE (Plasma 5 → 6, GNOME 45 → 48) puede necesitar migración de esquemas: se avisa, no se promete.
- Xfce: las propiedades de tipo array se omiten (se informan como omitidas).
- Hyprland: solo se respalda configuración. Los archivos incluidos con
sourcefuera de$HOME, sin extensión reconocida o dentro de carpetas personales no se copian; los scripts referenciados por atajos se listan como dependencia, pero no se incluyen. Al restaurar, ejecutáhyprctl reloado reiniciá la sesión. - Hyprland: la captura usa un workspace especial temporal para ocultar
ventanas. Si
hyprctlno responde, se captura la pantalla tal cual. - niri, Sway, River, Wayfire y labwc no tienen un “mostrar escritorio” seguro: la captura puede incluir ventanas; la portada usa el fondo si falla.
- River y labwc se respaldan con sus archivos de configuración aunque parte de su personalización sea código/script de arranque. No se copian otros scripts fuera de sus carpetas de configuración.
- Wayfire y labwc se recargan al reiniciar el compositor o con su comando específico; no se ejecuta nada automáticamente.
- El bundle de comunidad aplica fondo, apariencia, settings y plugins. Los atajos y el layout se incluyen y se muestran, pero su aplicación automática por entorno todavía es manual en esta versión.
- Los videos de fondo necesitan
mpvpaperen Wayland; en el resto se usa el frame estático. Sinffmpeg/ffprobeno se pueden exportar videos. - Cinnamon, MATE y Budgie dependen de dconf; sin
dconfse respaldan los archivos de temas/extensiones, pero no los ajustes lógicos. - COSMIC usa RON y sus archivos de configuración no tienen extensión; se
respaldan solo archivos de texto dentro de
~/.config/cosmic. - LXQt puede usar distintos window managers; los atajos del WM (Openbox, KWin, Xfwm) se respaldan por separado según el adaptador detectado.
- Waybar con una configuración distinta por salida se interpreta como una sola barra en el detalle; los archivos se respaldan igual.
- Los temas de
/usr/sharedeben existir en la máquina destino; si no, se verá el tema de fallback (por eso existe el aviso previo). - En Wayland, la captura de pantalla depende del compositor: si falla, la portada muestra el wallpaper (y no hay tiras de barras).
- Los docks de terceros (Plank, Latte) no tienen parser propio: no generan tira. Waybar sí se interpreta como barra; el dock de GNOME se muestra como ajustes, no como imagen.
- En GNOME el alto de la barra superior es fijo y se asume 40 px para el recorte; con escalados raros la franja puede quedar algo alta.
- Flatpak como formato de distribución está descartado: el sandbox bloquea justo lo que la app necesita.





