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-adjustwas 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-queryreturns52,083333on Spanish locale;float()raisedValueError. 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_idacross all panels. - Panel tab — wrong p values: Position string
pvalues corrected from confirmed Soplos theme XMLs:p=6top,p=8bottom,p=10left,p=1right. - Panel tab — alignment ignored for snapped panels: Switched to
p=0floating with center coordinates for partial-width panels. Full-width panels use snappedpvalues so the WM receives_NET_WM_STRUThints. - Panel tab — windows maximizing under top panel:
enable-strutsproperty was not being set. Now written astrueon every apply and new panel creation. - Panel tab — async reload cleared user-added plugins:
_reload_workercalled 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_arraywrote single-element arrays as xfconf scalars; xfce4-panel could not read/panelsas a list. Fixed by adding--force-arrayflag to all_set_arraycalls. - 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_changedin the recalculation condition. - Desktop file empty:
debian/org.soplos.thememanager.desktopwas 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
AccelGroupfires. Fixed by connectingkey-press-eventon the main window. - Wrapper script oversized: Simplified to the standard Soplos wrapper pattern (
exec python3 main.py).Gdk.set_program_classmoved tomain.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=2with_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/andutils/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
~/.faceand 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.gzarchives withmanifest.json. - Screenshot previews:
scrot+imagemagickcapture withnotify-sendnotification,wmctrldesktop minimize/restore. - Footer progress bar: Soplos-standard
Gtk.Revealer+Gtk.ProgressBarfor all operations. - App ID: Migrated from
com.soplos.thememanagertoorg.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
mapsignal. - Wrong startup tab:
set_current_page(0)called aftershow_all()+GLib.idle_addsafety 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 directoryonlauncher-N/subdirectories resolved. - pkexec password prompts on avatar: Removed all
pkexec—~/.faceis 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.DesktopAppInfowith multi-directory fallback. - Groups not detected: Replaced
grp.getgrall()withid -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.thememanagerconvention 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.soplosthememanagerback tocom.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"acrossmain.py. - WMCLASS env var support:
WMCLASSenvironment 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.thememanagertosoplos-theme-managerconvention (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;andX-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.
ES
FR
PT
DE
IT
RO
RU