Nearly two weeks have passed since I announced that I would be exploring development on elementary OS. I had more positive feedback than I expected, so thanks everybody for your awesome support! Since the announcement, I've been getting my feet wet with a few different elementary-related projects, and I think I'm starting to get the hang of things.
Wingpanel Ayatana Indicator
I've long been a fan of indicators, the modern replacement for Systray icons. Fewer apps are using Systray these days, and it has been deprecated across several desktops and toolkits. Replacing the Systray are AppIndicators (of the Ubuntu and Ayatana variety) and StatusNotifierItems. These have pretty wide support and are commonly used by messaging apps (Discord, Slack, Telegram) and cloud syncing apps (Dropbox, pCloud, SyncThing).
Adding support for elementary 6 "Odin"
With a few development library updates, the existing version of the indicator did not support the upcoming Odin release. After a bit of hacking and experimentation, I got the package working fully. Check out the above pull request in case you need to get your indicator fix. In a less useful update, I also refreshed the packaging for elementary 5 "Hera".
Files: Tabular numbers in the file transfer dialog
I found this issue while browsing the Bitesize Issues found in the Desktop Development section of elementary's Get Involved page. Tabular numbers would prevent the file transfer dialog from jumping around, which seemed like a nice improvement. With the referenced code example, I was able to quickly identify the needed changes and get my hands dirty with a bit of Vala. After a code review and a small tweak, my pull request was merged!
Wingpanel Sound Indicator
After browsing the various projects and open issues, I became interested in hacking on the Wingpanel Sound Indicator. On the Xfce side, I've maintained the Xfce PulseAudio Plugin and Parole Media Player for quite some time and have some relevant experience to apply with MPRIS and DBus.
Fixing Spotify's missing artwork
When I'm at my computer, I've always got Spotify playing in the background. Having the album artwork in the sound indicator is a nice touch, so I wanted to dig in and see if I could land a fix. Using DFeet, I was able to get the URL Spotify was sending, found it was returning a 404 response, and ultimately came across this post on the Spotify Community about the invalid URL.
I threw together a simple pull request to replace the invalid URL with a currently known working one (Vala makes this super simple) and sent it along. A couple of the elementary developers quickly responded with some valid feedback, including the simple fact that Spotify needs to fix their own app. If any Spotify developers are reading... please? :)
Bluetooth audio devices listed as music players
The Wingpanel Sound Indicator conveniently shows available media players, phones, and other devices that can be controlled via MPRIS. A device I didn't expect to see in the list was my Bluetooth headphones! Unsurprisingly, the media controls didn't have any effect on my headphones.
I did some more digging in DFeet, but the most useful property I could find was that this player uses the audio-card icon. I tracked down the icon-related code in bluez and used that as the basis for a new issue:
Here's hoping that one can get fixed upstream! If not, I'll continue exploring options for hiding this device in the Sound Indicator.
I'm having fun exploring the elementary code and issue trackers, and I think I'll be able to make some meaningful contributions to be project. I may spend a bit more time on the Wingpanel Sound Indicator before getting more out of my comfort zone with some larger projects. I've also got some updates coming for Xubuntu in the next couple of days, so watch my blog and Twitter for updates.
In case you'd like to join in, I recommend checking out the Get Involved page for ways to contribute. Additionally, elementary announced yesterday that they did not get accepted into the Google Summer of Code this year, but shared a list of potential projects to work on. There's some pretty substantial projects listed here, so if you're looking for something to do, this seems like a good opportunity.