November 15, 2016 - Stephen Houston

Satisfying Enlightenment’s Launcher Appetite with Luncher

Ibar has been Enlightenment’s primary launcher for at least a decade. What it lacked in features it gained in simplicity. However, as Enlightenment has grown, ibar has seemingly stayed stagnant. I wasn’t surprised when Mike Blumenkrantz informed me this would be one of the focuses of my internship. From the depths of Enlightenment’s growling, starving stomach, Luncher was born.

luncher

The Outdated ibar Widget.

In my previous post, I gave an introduction to developing gadgets for Enlightenment using the new gadget API; I did so by converting an existing module to the API, and this preparation was one of the first steps in creating Luncher. Mike and I spent weeks on end discussing ideas for Luncher including both necessary and wishlist features. We kicked around ideas and shared visuals of what we would like Luncher to be, and we identified weakness in ibar that must be improved for Luncher. In the end, we determined a simple launcher bar with elegant window previews and more aware code for complete taskbar management would be the focus of Luncher. Add in a catchy interface and smooth effects for iconifying applications, and the recipe was complete. All of this was happening while I was learning the new gadget API with pager, which was a measured approach to hit the ground running with Luncher, and hit the the ground running I did.

Being well prepared with the gadget API, I got the basics of luncher created in no time: create a gadget site, create a box to hold icons, and display icons. The next step was executing applications when icons were clicked, and this too was very easy. You can see in the following video how the gadget was coming together early on.

Everything past this point became more challenging. The most difficult task was writing the window previews popup. This involves keeping a list of open windows and matching them with their icon in the Luncher. As you can see, it always takes trial and error, and I was certainly not having fun.

previewHowever, persistence is key when developing software, especially when visual appeal is important. After much trial and error, I managed to get the window previews into a state that Mike and I both liked (A Hallelujiah! might have been heard from my office).

preview_final

The Finished Launcher Gadget

Once the previews were finished, the rest of development focused on stability and usability. Mike and I used the gadget extensively to make tweaks where we thought it would improve the user experience. When working on this stage, little things happen that might never seem apparent to the user. We move an image one pixel to the left or to the right, shift a box to align a different way, determine the best size for certain objects, etc. While this stage of the development may seem easy, it’s one of the most time consuming and involves constant rebuilding and testing only to rebuild and test again, over and over until things are just right. It involves a lot of tiny changes such as a single number or word, so the rebuild takes longer than the changes take to make. Then, the testing takes all of 5 seconds before the next tiny change is found. This is the cycle of the final stage of development, I recommend a lot of coffee.

Completing a project like this is always rewarding and is also the gift that keeps on giving as you get to use it in your own work. Luncher is now available in Enlightenment git repo. Stay tuned for further developments as I work on a grid version of Luncher as well as system info gadgets!

Image Credits: EFL Project

Development / EFL enlightenment / Gadget API / Internship / widgets /

Comments

Leave a Reply to Daniel Cancel reply

Your email address will not be published. Required fields are marked *

Comments Protected by WP-SpamShield Anti-Spam