2.0.0-1 — May 2026

Critical fixes for the Panel tab (width, locale, plugin IDs, position, struts, async reload, array writes), desktop file, keyboard shortcuts and wrapper script. Theme conf files renamed to English.

Fixed

  • Panel tab — width not respected: length-adjust was not written back when length was unchanged, causing XFCE to default to 100%. Fixed by preserving the original value and recalculating when length changes.
  • Panel tab — locale decimal separator: xfconf-query returns 52,083333 on Spanish locale; float() raised ValueError. Fixed by replacing , with . before parsing.
  • Panel tab — plugin ID collision on new panel: New panel's plugin IDs started from 1, overwriting main panel plugins. Fixed by computing next_id across all panels.
  • Panel tab — wrong p values: Position string p values corrected from confirmed Soplos theme XMLs: p=6 top, p=8 bottom, p=10 left, p=1 right.
  • Panel tab — alignment ignored for snapped panels: Switched to p=0 floating with center coordinates for partial-width panels. Full-width panels use snapped p values so the WM receives _NET_WM_STRUT hints.
  • Panel tab — windows maximizing under top panel: enable-struts property was not being set. Now written as true on every apply and new panel creation.
  • Panel tab — async reload cleared user-added plugins: _reload_worker called after new panel creation wiped plugins the user had just added. Fixed by reading settings synchronously in _on_new_panel_done.
  • Panel tab — delete panel removed all panels: _set_array wrote single-element arrays as xfconf scalars; xfce4-panel could not read /panels as a list. Fixed by adding --force-array flag to all _set_array calls.
  • Panel tab — length change did not trigger position recalculation: Switching between 100% and partial width did not update the position string. Fixed by including length_changed in the recalculation condition.
  • Desktop file empty: debian/org.soplos.thememanager.desktop was 0 bytes — app did not appear in the XFCE menu. Rewritten with full [Desktop Entry] content.
  • Keyboard shortcuts Ctrl+Tab / Ctrl+Shift+Tab not working: GTK intercepts these inside child widgets before AccelGroup fires. Fixed by connecting key-press-event on the main window.
  • Wrapper script oversized: Simplified to the standard Soplos wrapper pattern (exec python3 main.py). Gdk.set_program_class moved to main.py.

Changed

  • Theme conf filenames: Renamed from Spanish (tema.conf, fondo.conf, atajos.conf) to English (theme.conf, wallpaper.conf, shortcuts.conf). Automatic migration runs on startup.
  • Metainfo screenshots: Corrected URLs and added screenshot4 (Panel) and screenshot5 (Dock).
  • Panel tab — alignment combo: Added Left/Center/Right alignment control. Alignment derived from coordinates on load and applied when building the position string.
  • Panel tab — new panel default position: Replaced hardcoded p=2 with _build_position_string('top', 1, 100, 30) calculated from actual screen resolution.

2.0.0 — April 2026

Complete modular rewrite with tabbed interface, theme bundle export (.sth), screenshot previews and full XFCE panel and dock management.

Added

  • Complete modular rewrite: New architecture with core/, services/, ui/tabs/, config/ and utils/ layers.
  • Tabbed interface: Themes, Wallpapers, User, Panel and Dock — all in one window.
  • Wallpaper browser: Scans system wallpaper directories, deduplicates symlinks, lazy-loads on tab activation.
  • Avatar manager: Replaces Mugshot. Crop dialog for non-square images, writes to ~/.face and AccountsService. Editable user data fields (Full Name, Email, Phone, Location).
  • User tab — Groups column: Shows all groups the user belongs to with checkboxes. Applies changes via pkexec usermod -G (standard Polkit dialog).
  • Panel tab: Full XFCE panel configuration — position, size, icon size, length, rows, auto-hide, dark mode, lock. Plugin management with move, remove and searchable add.
  • Dock tab: Dedicated tab for Docklike pinned apps. Shows pinned apps with icons, move up/down/remove, add from available apps browser.
  • Theme bundles (.sth): Export and import themes as tar.gz archives with manifest.json.
  • Screenshot previews: scrot + imagemagick capture with notify-send notification, wmctrl desktop minimize/restore.
  • Footer progress bar: Soplos-standard Gtk.Revealer + Gtk.ProgressBar for all operations.
  • App ID: Migrated from com.soplos.thememanager to org.soplos.thememanager.
  • i18n: gettext-based internationalization with 8 languages, replacing legacy dictionary strings.
  • CSS: Updated to Soplos Welcome standard (entry, filechooser, treeview, notebook borders).

Changed

  • Theme directory: ~/.themes-backup (backwards compatible with v1).
  • Default theme CSS: Always dark for Soplos Linux Tyron, configurable via settings.json.
  • Window decorations: SSD (no CSD), GTK_CSD=0.
  • Wallpaper browser: Pixbuf decoding moved to background thread — gallery renders instantly. Reload button removed (load is automatic on tab activation).
  • User tab: Renamed from "Avatar" to "User". Apply button moved inside the form column; groups column added.
  • Panel & Dock: Split into two independent tabs — Panel (settings + plugins) and Dock (Docklike pinned apps).

Fixed

  • Startup freeze: Wallpapers now lazy-load via GTK map signal.
  • Wrong startup tab: set_current_page(0) called after show_all() + GLib.idle_add safety net.
  • Theme detection: Reads ~/.themes-backup (same as v1) instead of a new separate directory.
  • Avatar detection: Checks ~/.face → AccountsService icons → Icon= field in user file.
  • Panel apply error: [Errno 21] Is a directory on launcher-N/ subdirectories resolved.
  • pkexec password prompts on avatar: Removed all pkexec~/.face is sufficient on XFCE.
  • D-Bus AccountsService blocking main thread: Split into sync (LibreOffice + GECOS) and async (D-Bus via thread + GLib.idle_add).
  • xfconf-query timeout on theme apply: xfconf-query now runs before pkill xfconfd, not after.
  • Docklike pinned app icons not showing: Bare app IDs now resolved via Gio.DesktopAppInfo with multi-directory fallback.
  • Groups not detected: Replaced grp.getgrall() with id -Gn (reads all NSS sources).

1.0.7 — July 2025

Branding update.

Changed

  • Program icon: Updated to new design.
  • Developer: Updated to Sergi Perich.

1.0.6 — May 2025

Packaging fix: naming convention restored.

Fixed

  • Icon and desktop file naming: Reverted to com.soplos.thememanager convention for consistency.
  • Desktop file path: Restored to /usr/share/applications/com.soplos.thememanager.desktop.

1.0.5 — May 2025

Packaging fix: metainfo App ID corrected.

Fixed

  • Metainfo App ID: Corrected from com.soplosthememanager back to com.soplos.thememanager (dot notation restored).

1.0.4 — May 2025

Packaging fix: unified App ID and improved desktop integration.

Added

  • Unified App ID constant APP_ID = "com.soplos.thememanager" across main.py.
  • WMCLASS env var support: WMCLASS environment variable for consistent window class assignment.
  • window.realize(): Called before show for proper window property propagation.

1.0.3 — May 2025

Packaging fix: App ID block and base directory restored.

Fixed

  • Soplos Packager App ID block: Re-injected after it was removed in 1.0.2.
  • Base directory: Corrected path back to /usr/share/soplos-theme-manager.

1.0.2 — May 2025

Packaging: renamed all assets to soplos-theme-manager naming convention.

Changed

  • Asset naming: Renamed from com.soplos.thememanager to soplos-theme-manager convention (desktop file, metainfo, icons).
  • WM_CLASS: Fixed to static strings "soplos-theme-manager", "Soplos Theme Manager".
  • Removed debug_wmclass.py.
  • Cleaned up Soplos Packager App ID injection block from main.py.

1.0.1 — May 2025

Desktop integration: XFCE-specific categories and visibility.

Changed

  • Desktop file: Added OnlyShowIn=XFCE; and X-XfcePluggable=true.
  • Categories: Updated to XFCE-specific settings (XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-PersonalSettings;).

1.0.0 — May 2025

Initial release of Soplos Theme Manager.

Initial Release

  • Graphical interface for managing XFCE desktop themes.
  • Create, save and apply desktop themes.
  • Compatible with Soplos Linux Tyron.
  • Translations for 8 languages.