1.0.0-5 — June 2026
GNOME crash fix: the wrapper now passes HOME=/root to the root pkexec process, preventing a bubblewrap sandbox failure when gdk-pixbuf tries to rasterize SVG icons.
Fixed
- GNOME crash on launch (gtkiconhelper / gdk-pixbuf SVG loader): The wrapper was passing
HOME=/home/soplosto the root pkexec process. The gdk-pixbuf SVG rasterizer uses bubblewrap as a sandbox; when the parent is root butHOMEpoints to a user directory, the bwrap sandbox fails to initialize and GTK aborts. Fixed by passingHOME=/root, matching how soplos-grub-editor handles it.
1.0.0-4 — June 2026
GNOME crash fix: the wrapper now specifies the Gdk version before importing it, preventing a conflict with GTK4 already loaded in GNOME sessions.
Fixed
- GNOME crash on launch — missing
gi.require_version('Gdk', '3.0'): The wrapper's inline Python block importedGdkwithout specifying a version. In GNOME sessions GTK4 is already loaded, sogitried to loadGdk 3.0on top of4.0and raisedImportError.gi.require_version('Gdk', '3.0')is now set before the import in both the non-root and root branches of the wrapper.
1.0.0-3 — June 2026
Native titlebar in XFCE and KDE: the CSD HeaderBar is now only used in GNOME and other environments; XFCE and KDE use native window decorations matching the rest of the Soplos apps.
Fixed
- Titlebar uses native window decorations in XFCE and KDE/Plasma: The CSD
Gtk.HeaderBaris now only active in GNOME and other desktop environments. In XFCE and KDE the application uses native decorations, matching the behavior of the rest of the Soplos applications. set_status()adapted for native mode: In desktop environments that use native decorations,set_status()updates the window title instead of the HeaderBar subtitle, so operation feedback remains visible in all environments.
1.0.0-2 — June 2026
Launcher and packaging fixes: wrapper renamed to soplos-system-service, pkexec now calls python3 -c inline, GLib and Gtk.Application initialization fixes, postinst path corrected; plus UX fixes: corrected progress bar, scrollable details panel, smart action buttons and color-coded Loaded column.
Fixed
- Wrapper renamed from
soplos-system-servicestosoplos-system-service: Matches the project name and the Soplos packaging convention followed by all other apps. - Wrapper follows the Soplos pattern — pkexec calls
python3 -cinline: Instead of calling the wrapper recursively, pkexec now runspython3 -c "import main; main.main()". This avoids the need for a matching polkitexec.pathpolicy and matches howsoplos-grub-editorworks. GLib.set_prgnameandGLib.set_application_nameset before importing main: Eliminates the "g_set_application_name() called multiple times" terminal warning that appeared on every launch.Gtk.Applicationchanged fromFLAGS_NONEtoHANDLES_COMMAND_LINE: Added ado_command_linehandler that callsactivate().FLAGS_NONEcaused a silent exit when the D-Bus singleton registration failed running as root via pkexec.postinstpath corrected: The previous script used/usr/share/soplos-system-services/(wrong path with a trailing s) which madeset -eexit immediately, leaving the package in a broken half-installed state.- pkexec handling moved entirely to the bash wrapper: As per the Soplos app pattern, privilege elevation is now entirely in the launcher script;
main.pyno longer calls pkexec and only runs the GTK application. GTK_IM_MODULEset in the wrapper: Set togtk-im-context-simpleto suppress ibus connection warnings when running as root.- Dark/light theme detection moved to the bash wrapper: Detection now uses
xfconf-query(XFCE) andgsettings(GNOME) in the wrapper before pkexec elevation, then passes the result viaSOPLOS_COLOR_SCHEME. - Progress bar position corrected: Was appearing below the footer in -1 due to reversed
pack_endordering; footer is now packed first so the progress bar sits correctly between content and footer. - Progress bar minimum display time of 700ms: The bar is now visible even on fast operations where service listing completes almost instantly.
- Details panel replaced
Gtk.LabelwithGtk.TextViewinsideGtk.ScrolledWindow: Prevents window deformation on longsystemctloutput and adds scroll support for lengthy service details. - Smart action button state improved: Start is now disabled when the selected service is active; Stop and Restart are disabled when it is inactive, preventing nonsensical operations.
- Color-coded Loaded column — not-found entries shown in red: Services where the unit file was not found are now highlighted in red in the Loaded column, matching the Active column color logic.
- Black border artifact removed from details panel: Moving the
soplos-cardCSS class from an inner widget to theGtk.ScrolledWindowand settingShadowType.NONEeliminates the double-border visual artifact.
1.0.0-1 — June 2026
Complete rewrite: two-tab GTK interface (Services and Logs), color-coded TreeView, smart action buttons, CSD HeaderBar, dark/light theme via pkexec, full i18n and modular architecture.
Rewritten
- GTK.Notebook two-tab interface: Services tab with sortable TreeView (green active / red failed / red not-found) and Logs tab with monospace journalctl viewer, replacing the original skeleton layout.
- Smart action buttons: Start, Stop and Restart buttons enabled or disabled based on the current service state; all controls disabled until a service is selected.
- CSD HeaderBar and Soplos footer: HeaderBar with operation subtitle (loading count, errors). Footer shows DE and display protocol on the left, version on the right. Progress bar in pulse mode shown during listing and operations.
- Dark/light theme forwarded through pkexec: Detected as the regular user before elevation and passed via
SOPLOS_COLOR_SCHEME, ensuring correct colors when running as root under XFCE, KDE or GNOME. - Full i18n and modular architecture: All UI strings through the dict-based
_()system across all 8 languages. Modular layout:core/,ui/,services/systemd.pyandutils/. All relevant env variables forwarded through pkexec.
Added
- Polkit policy, desktop launcher and bash wrapper:
org.soplos.systemservice.policy,org.soplos.systemservice.desktop(with Name and Comment in all 8 languages) andsoplos-system-serviceslauncher script. - Debian packaging and icons:
debian/controlanddebian/copyright. Icons at 48×48, 64×64 and 128×128 pixels underassets/icons/.
Fixed
- Duplicate service rows:
_populate_service_store()was appending each service twice. - Bullet character parsed as service name:
systemctlprefixes failed units with aU+25CFbullet symbol which was being picked up as a service name. - Progress bar position and visibility: Was appearing below the footer due to
pack_endordering — footer is now packed first. Added 700ms minimum display time so the bar is noticeable even when service listing completes instantly.
Improved
- systemd.py: All control functions use
subprocess.runwithcapture_outputand timeout. Addedget_service_logs()viajournalctl. - utils/strings.py: Added global
_(),set_language()andget_current_language()so all modules share a single language state.
1.0.0 — July 2025
Initial project creation with GTK3 skeleton, systemd service listing, basic service control and 8-language string system.
Added
- GTK3 application skeleton with systemd service listing via
systemctl list-units. - Basic service control: Start, stop, restart, enable and disable functions.
- 8-language string system with dict-based translations (ES, EN, FR, PT, DE, IT, RO, RU) and pkexec privilege elevation.
ES
FR
PT
DE
IT
RO
RU