2.0.1-4 — July 2026
Build dependency update — python3-all replaced with python3 in debian/control.
Changed
- Build dependency
python3-allreplaced withpython3.
2.0.1-3 — June 2026
Polkit dependency updated to polkitd, the correct package name in current Debian. Removed obsolete policykit-1-gnome and policykit-1 alternatives.
Fixed
- Polkit dependency: Updated to
polkitd, the correct package name in current Debian. Removed obsoletepolicykit-1-gnomeandpolicykit-1alternatives that no longer exist, preventing packaging warnings on installation.
2.0.1-2 — June 2026
Base themes auto-seeded on first launch with a Restore button, one-time v1.x legacy cleanup, reduced packaging dependencies and asset path fixes.
Added
- Themes tab — base themes auto-seeded on first launch: Bundled
.sthfiles inassets/base-themes/are imported automatically into~/.config/soplos-theme-manager/themes/on startup if not already present. No pkexec, no prompts. If the user deletes a base theme it is not reimposed — a manual restore is required. - Themes tab — Restore button: New button in the gallery toolbar reimports any missing base themes on demand. Already-present themes are skipped. Shows an info dialog if all base themes are present.
- Startup — v1.x legacy cleanup: On first launch after upgrade from v1.x, removes legacy artifacts:
~/xfce-panel-backup/,~/.themes-backup/and legacy logs under~/.config/soplos-theme-manager/logs/. Runs once and writes a marker file to avoid repeating.
Fixed
- Packaging — reduced dependencies:
debian/controlwas pulling in multiple polkit-related packages unnecessarily. Reduced to justpolkit. - Base themes seed — wrong asset path: Seed and Restore button were looking for
.sthfiles inassets/soplos-base-themes/instead ofassets/base-themes/. - User-scope install — system assets duplicated to home:
_install_tar_userwas copying icon themes and GTK themes to~/.icons/and~/.themes/even when the same asset already existed in/usr/share/. Assets present at system level are now skipped.
2.0.1 — June 2026
Theme bundle format v2/v3 (portable .sth with real GTK/icon/cursor assets), apply scope dialog, export file chooser, and a comprehensive audit of apply/save/export/install fixing silent data loss, orphan plugin files, dark mode persistence and icon symlink breakage.
Added
- Theme scope selection: When applying a theme a dialog asks whether to install assets for the current user (
~/.themes,~/.icons) or globally for all users (/usr/share/themes,/usr/share/icons). Global install usespkexecfor privilege elevation. - Export — file chooser dialog: Exporting a theme now opens a
FileChooserDialogso the user can pick the destination path.
Changed
- Theme bundle format v2 (breaking — old
.sthfiles not compatible): Bundles now contain the actual asset directories (GTK theme, icon theme, cursor, wallpaper) as a.ziparchive instead of xfconf dumps. Themes stored unpacked under~/.config/soplos-theme-manager/themes/withmetadata.json+theme.conf+assets/+preview/. - Apply theme — visual-only xfconf changes:
apply_themenow sets only visual xfconf properties (GTK theme, icon theme, cursor, WM theme, wallpaper). No longer touches keyboard shortcuts, desktop icon visibility, desktop menu or any behavioral property. - Apply theme — no XML file copying and no panel directory overwrite:
xfce4-desktop.xml,xfce4-panel.xmland~/.config/xfce4/panel/are no longer touched on apply. Panel layout and desktop behavior remain fully under user control. - Theme store location: User themes moved from
~/.themes-backup/to~/.config/soplos-theme-manager/themes/. Preview directory renamed fromview/topreview/. - Bundle format v3: Assets stored as tars (
gtk.tar,icons.tar,cursor.tar) inside the bundle instead of raw directory trees. Old v2 bundles rejected on import. - UI — Themes gallery: Card grid wrapped in a dark rounded box (
soplos-contentclass), matching Plymouth Manager style. Selected theme card shows a thin 1px orange border; fixedFlowBoxChildcontainer painting solid orange on selection.
Fixed
- Apply theme — keyboard shortcuts, desktop icons and docklike apps overwritten:
shortcuts.conf, desktop icon/menu properties andpanel/directory were applied unconditionally, replacing the user's settings. All three now left untouched. - Apply theme — wallpaper paths hardcoded from source machine: The old format stored absolute paths (e.g.
/home/soplos/.themes-backup/…), causing broken wallpapers on any other machine. Fixed by bundling the actual wallpaper file. - Apply theme — xfconfd served cached panel config: After writing
xfce4-panel.xml, xfconfd restarted from its in-memory copy. Fixed by killing xfconfd afterxfce4-panel --quitso it re-reads from disk. - Apply/save theme — orphan panel plugin files: Files from previous panel sessions accumulated in
~/.config/xfce4/panel/and bled into saved themes. Apply and save now filter by IDs present inxfce4-panel.xml; orphan files removed after apply. - Apply/save theme — dark mode not persisted:
gtk-application-prefer-dark-themewas not saved or restored. Now stored asprefer_darkintheme.confand written to both~/.config/gtk-3.0/settings.iniand~/.config/gtk-4.0/settings.inion apply. Inferred from GTK theme name whensettings.iniis absent. - Apply theme — panel structure never changed:
_read_docklike_appswas called with two arguments but only accepted one, causing a silentTypeErrorthat aborted_apply_panel_configon every run. Fixed: method now acceptsxml_pathas optional parameter. - Docklike service — wrong plugin ID and removed restart flag:
find_config_file()used a glob that could return orphan.rcfiles. Now parsesxfce4-panel.xmldirectly.restart_panel()replaced--restart(removed in XFCE 4.20) with--quit+Popen. - Export — icon theme symlinks and incomplete family: Symlinked icon variants (e.g.
Tela-ubuntu-dark → ../Tela-ubuntu/) were broken in the bundle. Export now usestar -czf -C base_dirpreserving symlinks._find_icon_dependencies()readsInherits=recursively and bundles the full icon family. - Install global — existing assets destroyed and wrong ownership:
_global_install()ranrm -rfon the destination before copying. Now extracts to temp and moves only dirs not already at destination. Tar extraction without preserve flags gives correct root ownership;chmod -R a+rXapplied after install. - Install global — pkexec script leaked temp dir on tar failure:
trap 'rm -rf "$TMPEXTR"' EXITadded for guaranteed cleanup.
2.0.0-2 — June 2026
Panel tab hot-apply for all plugin operations (move, remove, add), Settings button for plugin configuration dialogs, threading lock, and a wide range of Panel, Dock and core fixes.
Added
- Panel tab — hot apply for plugin operations: Moving, removing and adding plugins now takes effect immediately via xfconf + panel restart, without needing "Save & Apply". New plugins get a real ID assigned at add time.
- Panel tab — Settings button: Gear button added to the active plugins list to open a plugin's own configuration dialog.
- Panel tab — error dialog on apply failure, threading lock and
_build_module_map()helper: Apply failures now show a warning dialog.self._panel_lockserializes all xfconf write + restart operations._build_module_map()avoids repeated .desktop file scans.
Fixed
- Panel tab — move/remove/add not applied live: Plugin list changes now immediately write to xfconf and restart the panel.
- Panel tab — apply killed panel before writing xfconf: xfce4-panel saved its in-memory state on top of our changes. Now writes to xfconf first, then restarts only if plugin IDs changed.
- Panel tab — new and delete panel teardown order: New panel now writes all properties before updating
/panels. Delete panel removes plugin xfconf entries before updating/panelsand restarting. - Panel tab — plugin modules used wrong key:
_scan_available_pluginsusedX-XFCE-Modulevalue; xfconf stores the.desktopfilename stem. Fixed to usef.stem. - Panel tab — reload after successful apply: Plugin list reloaded after "Save & Apply" so ID=0 placeholders are replaced with real IDs.
- Dock tab — icon size and missing
icon_pathcolumn: Pixbuf reused from the 32px list was shown at 48px causing blur.icon_pathadded as column 3 toapps_storeso icons reload at the correct size. - Docklike service — hidden apps, icon fallback and broken entries: Apps with
NoDisplay=trueorHidden=truenow filtered viaapp_info.should_show(). Icon resolution now falls back to name-string lookup. Exceptions returnNoneinstead of a partial dict. - Theme service — xfce4-panel launched from wrong directory:
Popen(['xfce4-panel'])now passescwd=Path.home(). - core/application — theme conf migration failed on root-owned files:
Path.rename()replaced withshutil.copy2+unlink, wrapped intry/except OSError.
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