Skip to content

DownloadSpicesPage: empty applet list due to TypeError in Gtk.Label(score) on newer PyGObject #13689

@ivaigl-cpu

Description

@ivaigl-cpu

Distribution

In Cinnamon 6.4.13 on Ubuntu 26.04 (Python 3.14 / newer PyGObject), the "Download" tab in the Applets, Desklets and Extensions pages shows an empty list. No error is shown to the user.

Package version

In Cinnamon 6.4.13 on Ubuntu 26.04 (Python 3.14 / newer PyGObject), the "Download" tab in the Applets, Desklets and Extensions pages shows an empty list. No error is shown to the user.

Graphics hardware in use

No response

Frequency

Always

Bug description

In DownloadSpicesRow.__init__ (ExtensionCore.py, line 770):

score_label = Gtk.Label(self.score)                                                                                                                                                                              
                                                                   
self.score is an int (from the spices JSON). Older versions of PyGObject silently coerced int to str, but newer versions (Python 3.14 / Ubuntu 26.04) raise:
                                                                                                                                                                                                                 
TypeError: Must be string, not int
                                                                                                                                                                                                                 
This exception is raised for every single row (254 applets), so build_list() produces 0 rows and the list appears empty with no feedback to the user.                                                            
 
Fix                                                                                                                                                                                                              
                                                                   
One-line fix in ExtensionCore.py:

# Before
score_label = Gtk.Label(self.score)
                                                                                                                                                                                                                 
# After
score_label = Gtk.Label(str(self.score))                                                                                                                                                                         
                                                                   
Environment

- Cinnamon: 6.4.13-2                                                                                                                                                                                             
- OS: Ubuntu 26.04 (Resolute Raccoon)
- Architecture: ARM64 (Snapdragon X1E)                                                                                                                                                                           
- Python: 3.14                                                                                                                                                                                                   
- PyGObject: system default from Ubuntu 26.04 repos
                                                                                                                                                                                                                 
---                                                                


### Steps to reproduce

In `DownloadSpicesRow.__init__` (ExtensionCore.py, line 770):      
                                                                                                                                                                                                                 
```python
score_label = Gtk.Label(self.score)                                                                                                                                                                              
                                                                   
self.score is an int (from the spices JSON). Older versions of PyGObject silently coerced int to str, but newer versions (Python 3.14 / Ubuntu 26.04) raise:
                                                                                                                                                                                                                 
TypeError: Must be string, not int
                                                                                                                                                                                                                 
This exception is raised for every single row (254 applets), so build_list() produces 0 rows and the list appears empty with no feedback to the user.                                                            
 
Fix                                                                                                                                                                                                              
                                                                   
One-line fix in ExtensionCore.py:

# Before
score_label = Gtk.Label(self.score)
                                                                                                                                                                                                                 
# After
score_label = Gtk.Label(str(self.score))                                                                                                                                                                         
                                                                   
Environment

- Cinnamon: 6.4.13-2                                                                                                                                                                                             
- OS: Ubuntu 26.04 (Resolute Raccoon)
- Architecture: ARM64 (Snapdragon X1E)                                                                                                                                                                           
- Python: 3.14                                                                                                                                                                                                   
- PyGObject: system default from Ubuntu 26.04 repos
                                                                                                                                                                                                                 
---                                                                


### Expected behavior

In `DownloadSpicesRow.__init__` (ExtensionCore.py, line 770):      
                                                                                                                                                                                                                 
```python
score_label = Gtk.Label(self.score)                                                                                                                                                                              
                                                                   
self.score is an int (from the spices JSON). Older versions of PyGObject silently coerced int to str, but newer versions (Python 3.14 / Ubuntu 26.04) raise:
                                                                                                                                                                                                                 
TypeError: Must be string, not int
                                                                                                                                                                                                                 
This exception is raised for every single row (254 applets), so build_list() produces 0 rows and the list appears empty with no feedback to the user.                                                            
 
Fix                                                                                                                                                                                                              
                                                                   
One-line fix in ExtensionCore.py:

# Before
score_label = Gtk.Label(self.score)
                                                                                                                                                                                                                 
# After
score_label = Gtk.Label(str(self.score))                                                                                                                                                                         
                                                                   
Environment

- Cinnamon: 6.4.13-2                                                                                                                                                                                             
- OS: Ubuntu 26.04 (Resolute Raccoon)
- Architecture: ARM64 (Snapdragon X1E)                                                                                                                                                                           
- Python: 3.14                                                                                                                                                                                                   
- PyGObject: system default from Ubuntu 26.04 repos
                                                                                                                                                                                                                 
---                                                                


### Additional information

In `DownloadSpicesRow.__init__` (ExtensionCore.py, line 770):      
                                                                                                                                                                                                                 
```python
score_label = Gtk.Label(self.score)                                                                                                                                                                              
                                                                   
self.score is an int (from the spices JSON). Older versions of PyGObject silently coerced int to str, but newer versions (Python 3.14 / Ubuntu 26.04) raise:
                                                                                                                                                                                                                 
TypeError: Must be string, not int
                                                                                                                                                                                                                 
This exception is raised for every single row (254 applets), so build_list() produces 0 rows and the list appears empty with no feedback to the user.                                                            
 
Fix                                                                                                                                                                                                              
                                                                   
One-line fix in ExtensionCore.py:

# Before
score_label = Gtk.Label(self.score)
                                                                                                                                                                                                                 
# After
score_label = Gtk.Label(str(self.score))                                                                                                                                                                         
                                                                   
Environment

- Cinnamon: 6.4.13-2                                                                                                                                                                                             
- OS: Ubuntu 26.04 (Resolute Raccoon)
- Architecture: ARM64 (Snapdragon X1E)                                                                                                                                                                           
- Python: 3.14                                                                                                                                                                                                   
- PyGObject: system default from Ubuntu 26.04 repos
                                                                                                                                                                                                                 
---                                                                

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions