Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
---
title: "GSoC '25 Week 11 Update by Krish Pandya"
excerpt: "Tray Widgets, Activity Examples, and More!"
category: "DEVELOPER NEWS"
date: "2025-08-17"
slug: "2025-08-17-gsoc-25-mostlyk-week11"
author: "@/constants/MarkdownFiles/authors/krish-pandya.md"
tags: "gsoc25,sugarlabs,week11,mostlyk,tray,activity updates"
image: "assets/Images/GSOC.webp"
---

# Week 11: Tray Widgets, Activity Examples, and More

**Project:** [GTK4 Exploration](https://summerofcode.withgoogle.com/programs/2025/projects/rsHsYZKy)

**Mentors:** [Walter Bender](https://github.com/walterbender), [Ibiam Chihurumnaya Ibiam](https://github.com/chimosky), [Juan Pablo Ugarte](https://github.com/xjuan)

**Reporting Period:** August 10, 2025 – August 17, 2025

---

## Trays, Activities

This after updating the datastore and objectchooser modules, I focused on porting the tray widget and updated the Activity.py even more featuring all the old used components of the GTK3 Toolkit.

## What’s New This Week?

### Presence

- Integrated the Presence from previous GTK3 toolkit into the new GTK4 toolkit.
- Communication between activities is now possible using the Presence.

### Activity Expansion

- Updated to handle all the old components of the GTK3 toolkit. Except the 2 Bundling methods.
- Demonstrated using 2 new examples.

#### Simple Activity Example

- Demonstrates basic usage of the new toolkit components.
- Allows saving and loading text files using the new modules.
- Showcases the integration of various widgets and functionalities.

#### Additional Activity Example

- Showcases more complex way of integrating Custom Widgets.
- Users can draw shapes, use tools from toolbar and save as well as preview drawings.

### Documentation

- With the library maturing, we have to fake root some stuff while running on local machines.
- Added how to present metadata and how to fake root in the README.

## VM Testing

- Tested the new library on a VM with Fedora 42 SoaS.

## Closing Thoughts and Next Steps

- The library has matured enough that I should start documenting for the last weeks and future plans for the contributors on how to continue from here and where it leads on.
- Start doing sphinx documentation for the library. (_foreshadowing as it has already been started at the time of writing this_)
- Bundle discussion with mentors for next week’s blog post.

---

## Resources & Links

- [Project Page](https://summerofcode.withgoogle.com/programs/2025/projects/rsHsYZKy)
- [New Python Library (sugar-toolkit-gtk4-py)](https://github.com/MostlyKIGuess/sugar-toolkit-gtk4-py)
- [New C Library (sugar-ext)](https://github.com/sugarlabs/sugar-ext)
- [Game Demo Video](https://youtu.be/B517C_LTCns)
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
---
title: "GSoC '25 Week 12 Update by Krish Pandya"
excerpt: "Sphinx , Bundling Discussion, and Future Plans"
category: "DEVELOPER NEWS"
date: "2025-08-25"
slug: "2025-08-25-gsoc-25-mostlyk-week12"
author: "@/constants/MarkdownFiles/authors/krish-pandya.md"
tags: "gsoc25,sugarlabs,week12,mostlyk,sphinx,bundling updates"
image: "assets/Images/GSOC.webp"
---


# Week 12: Sphinx , Bundling Discussion, and Future Plans

**Project:** [GTK4 Exploration](https://summerofcode.withgoogle.com/programs/2025/projects/rsHsYZKy)

**Mentors:** [Walter Bender](https://github.com/walterbender), [Ibiam Chihurumnaya Ibiam](https://github.com/chimosky), [Juan Pablo Ugarte](https://github.com/xjuan)

**Reporting Period:** August 17, 2025 – August 25, 2025

---

## Sphinx Documentation

Having the whole library in a working state and getting finished with Activity, which is the essential element to make any sort of activity, I started working on the Sphinx documentation for the library.

Link: [GTK4-Toolkit-Documentation](https://sugar-toolkit-gtk4-py.readthedocs.io/)

## What’s New This Week?

### Documentation

- Contains everything from examples to API references.
- Indexed in the manner of:
- Activity Framework ( sugar.activity )
- Graphics and UI (sugar.graphics)
- Data and Storage (sugar.datastore )
- Bundle Management (Yet to be implemented)
- Collaboration (sugar.presence )
- Event System (sugar.dispatch)
- Core Utils (sugar package)
- Examples

### Meet Regarding Bundling

- Had a pleasure to meet Martin , Juan , Walter and Ibiam to discuss the bundling methods.
- We decided on to using the old method of bundling as it is more straightforward and easier to implement , for the most part GTK independent.
- Bundling was implemented and Hello World activity was successfully bundled and tested on a clean Fedora Sugar on a Stick.

## ComboBox, ToggleToolButton and ToolComboBox

- Added 3 new widgets to the library.
- Added the corresponding examples for the same as well it's tests.
- Will keep adding more widgets as I go.

### Future Sugar Plans

- Flatpak Ports
- Sugar Shell Ports
- Complete Wayland Port

## Closing Thoughts and Next Steps

- Documentation was possible as I had written docstrings for most of the methods and classes while writing the library. ( I am so happy about this )
- Documentation covers everything from examples to API references.
- Will write the final blog post and wrap up the project and how to continue from here for future contributors.

---

## Resources & Links

- [Project Page](https://summerofcode.withgoogle.com/programs/2025/projects/rsHsYZKy)
- [New Python Library (sugar-toolkit-gtk4-py)](https://github.com/MostlyKIGuess/sugar-toolkit-gtk4-py)
- [Documentation](https://sugar-toolkit-gtk4-py.readthedocs.io/en/latest/)
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
---
title: "GSoC '25 Final Week Update by Krish Pandya"
excerpt: "Everything Everywhere all at Once"
category: "DEVELOPER NEWS"
date: "2025-09-01"
slug: "2025-09-01-gsoc-25-mostlyk-final"
author: "@/constants/MarkdownFiles/authors/krish-pandya.md"
tags: "gsoc25,sugarlabs,final week,mostlyk,bundling updates,future"
image: "assets/Images/GSOC.webp"
---


# Final Week: Everything Everywhere all at Once

**Project:** [GTK4 Exploration](https://summerofcode.withgoogle.com/programs/2025/projects/rsHsYZKy)

**Mentors:** [Walter Bender](https://github.com/walterbender), [Ibiam Chihurumnaya Ibiam](https://github.com/chimosky), [Juan Pablo Ugarte](https://github.com/xjuan)

**Reporting Period:** August 17, 2025 – August 25, 2025

---

## Confession Time

This marks the end of my GSoC blogs, (_more blogs yet to come_) but this, better be the magnus opus of all my blogs. I have been postponing this blog for a while because I wanted it to start perfect , end perfect and be perfect throughout. So it starts with confession time, this blog is not perfect, this idea is not perfect. I started off for port with the idea of it being perfect, but GSoC taught me a lot of things, one of them is "perfection is the enemy of done". So here I am, writing this blog, not perfect but done.

## Humble Beginnings

The first few changes were too simple almost, read GTK3 line by line, translate it to GTK4 and voila, done. Starting with update `gi.require_version`, fixing build includes, this was all tutorial. Then the first boss fight, `GdkEvent`!. In GTK3 you can just reach the code and grab whatever you want, but in GTK4, that pointer ->x was shut down. This was the first "welcome to the game". Demanded new philosophy, stop translating , start thinking!

The project was re-structured from the second week itself and we decided to write a new library from scratch, keeping the old GTK3 toolkit as reference.
( The pivotal call in Week 2 with my mentors Juan Pablo and Ibiam wasn't just a check in , it was complete teardown of the old plan and a fresh start.)
It was ambitious, but I was determined to make it work. First few weeks were like a breeze, I write, I poke at it, write an example and done. Write the blog for that week and done. But as the weeks progressed, the project got more and more complex.
The first time I felt truly stuck was Palettes, when I had to deal with X11 , wayland discourse and all that jazz. Sticking with it, finally got it working.
As the weeks progressed, workflows changed, now it's not about writing code, it's about finding origins of the bugs, reading GTK4 docs, reading protocols and old code deeply. Refactor more , write less.

## Absurdity and the Obstacle

We are around few weeks in, to give you the sense of idea that I had. I would explain it in a way where, I knew where everything was, where everything would go, but wasn't sure if it was correct or not. It was a limbo. The shift from direct signals to abstract Gesture objects and the death of `draw()` in favor of `snapshot()` were major shifts. Quietly things ran, it was the mid-point and I was able to build "Super Ball Dodge", a simple game that was my proof of work, a sign that the new library was functional and could do something dynamic. But the real test was yet to come.

Everything was going well, then came _Palettes_ the Obstacle. On X11 , you could ask, "Where is my widget on the screen?" and get a straight answer. On Wayland? for security reasons it was forbidden knowledge. This was a tough one, many gnome discourses later, my popovers started to pop. By week 10, the biggest challenges were behind me.

## Path Forward

With the graphics layer stable, it was time to bring back datastore, presence, and all the other things that made Sugar, Sugar.
Most were GTK independent, so it was just a matter of plugging them in and testing. We had some plans for modernizing the bundling system, but that will be for future ( check week-12 future plans ) . The goal was to get the new library stable and usable, and that was achieved.
The library was pushed to [pypi](https://pypi.org/project/sugar-toolkit-gtk4/#description) and can be installed via pip:

```
pip install sugar-toolkit-gtk4
```

Finally for the last week, I focused on documentation, the map for future explorers. Documentation built with sphinx, is clean, comprehensive and live at [sugar-toolkit-gtk4-py.readthedocs.io](https://sugar-toolkit-gtk4-py.readthedocs.io/en/latest/).

I will attach all the videos and links at the end of the blog, but for now, I want to thank my mentors Walter Bender, Ibiam Chihurumnaya Ibiam and Juan Pablo Ugarte for their constant support and guidance. This journey has been incredible, and I am grateful for the opportunity to contribute to Sugar Labs and the open-source community. Also a thanks to Martin Abente for his help with bundling discussions.

And now, for the first time in 13 blogs, there will be no "Future Plans." Instead, I'll leave you with a quote from one of my favorite films, Perfect Days:
[clip](https://youtu.be/F24IoeMlM3Y?si=xeY2M1n1B-fzz0kS)the quote says. "Next Time is Next Time, Now is Now".

So here I am, signing off, not with future plans, but with a promise to keep my presence and contributions, keep learning and keep growing.
Thank you once again, it has been a great summer!

## Resources & Links

- [Project Page](https://summerofcode.withgoogle.com/programs/2025/projects/rsHsYZKy)
- [New Python Library (sugar-toolkit-gtk4-py)](https://github.com/MostlyKIGuess/sugar-toolkit-gtk4-py)
- [Documentation](https://sugar-toolkit-gtk4-py.readthedocs.io/en/latest/)
- PyPI: [sugar-toolkit-gtk4](https://pypi.org/project/sugar-toolkit-gtk4/#description)

## Video Demonstrations

_Update with the final Sugar Presentation video once available_

- [Event Controller Video](https://youtu.be/m0gwwo_0ZDE)
- [Sugar Python Initialization Video](https://youtu.be/OD1PBOK3g94)
- [Menu and Style Video](https://youtu.be/-WTojjHpQLs)
- [Animations, ToolBox and Super Ball Dodge](https://youtu.be/B517C_LTCns)
- [Palettes, Popovers and Bundling](https://youtu.be/gbaG9CaJJ-U)