Thursday, January 31, 2013

New E17 Stable Snapshot and the First of E18

You read that title right folks. The first showing of Enlightenment DR18 (or E18 for short) has become a reality. Sure, it is nowhere near what the final product is going to look like - but it is a start. If you would like to follow the life cycle of E18 as it develops there is a new release manager blog that can be found here.

For those who like to stay on the more "stable" side of things also new today is a bug fix snapshot for the E17 stable release - dubbed 0.17.1. If you are a Bodhi Linux user you will find the "enlightenment" package in the Bodhi testing repo is already at version 0.17.1. These packages should make their way into our stable repo some time in the next week.

You can find downloads for both of these snapshots here.

~Jeff Hoogland

Tuesday, January 29, 2013

Tutorial 1: Hello Elementary

This post is the first in a series I am going to be publishing about using elementary and python to develop applications. The source code for all of the examples I am providing can be found in a GitHub repository here. Looking to get help with development? - We have started a programming focused section of the Bodhi Linux forums here. Other great resources for getting help are the Enlightenment devel mailing list as well as #e on freenode IRC. I've also added the python elementary API documentation to the Bodhi website here.

Example 1:
Since most people (myself included) learn best through examples, let's dive right into the code. To start, we are going to be creating a simple window that displays some text to us. It will look something like this:

Including my comments explaining what each line of code does, it takes us less than 50 lines of code to get the above window on our screen. Let's take a look (you can also find the source code for this lesson here):

#Import the elementary library so we can use it
import elementary

#Import evas, used for resizing things
import evas

#A function that creates and shows an elementary window
def hello_elementary():
    #Creates a "Standard" elementary window. The first argument is the name of our window. The second argument is the title displayed on the window bar
    window = elementary.StandardWindow("hello world", "Hello Elementary")

    #callback_delete_request_add tells our window what to do when it's "close" button is pressed
    window.callback_delete_request_add(lambda o: elementary.exit())

    #Content for our window. Creates a "Label" object which display text in our window. Whenever we create an elementary object we must provide a parent window as input
    windytax = elementary.Label(window)

    #Tells our label object to change size based on the size of our window
    windytax.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
    windytax.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)

    #Define what text our window should display
    windytax.text = 'Hello Elementary!'

    #If we want to see our object we need to tell it to be shown

    #resize_object_add adds our Label object "windytax" to the window

    #resize takes an ordered pair as input for the size for our window, the dimenions are pixel by pixel

    #Finally lets tell our window object to show up just like we did with our label

#Runs when our script is run
if __name__ == "__main__":
    #Runs our function which creates our window

    #Starts an elementary event loop which displays all elementary objects we've created. Our code stays at this point until elementary.exit() is called

    #Once elementary is done running lets shut everything off to finish the application

In this example we create two elementary objects: A StandardWindow and a Label. The StandardWindow as you can guess is the window we are creating, while the Label is a child object that we add to our window to display.

Example 2:
We want our application to do much more than just display text (most of the time). So let's go ahead and add a couple more objects to our Hello Elementary application. Let's add a button that closes our application:

The full code for this application can be found here. I will now highlight what is different from our previous example.

def hello_elementary():

    #Create an elementary button object
    button = elementary.Button(window)

    #Set some text for our button
    button.text = "Goodbye Elementary"

    #callback_pressed_add tells our button a callback to run when our button is pressed, the first argument is the function run and the following arguments are things to pass to the callback
    button.callback_pressed_add(button_pressed, "argument1", "argument2")

    #Show our button

    #Since we now have multiple objects we want to display on our window, we can position these objects using an elementary box which is a container object that you can "pack" items into.

    #Create a box
    box = elementary.Box(window)

    #Tell our box to fill all open space in our window
    box.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
    box.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
    #Show our box

    #Lets pack our label and then button into our box!

    #This time lets use our box  instead of just our label

#Our callback when the button is pressed. The first argument for this function will be the elementary button object. The rest of the arguments are the custom things we passed above
def button_pressed(button, arg1, arg2):
    #Show the content of our arguments in terminal
    print arg1, arg2

    #Lets have our button close the application, so run:

Example 2 adds two more elementary objects to our application - a Box and a Button. A Box is an elementary object that we use to hold other elementary objects to they are positioned how we want them inside our application window. You "pack" items into a box that is either vertical (default) or horizontal. A Button is an object that can have text and/or images displayed on it that can fire a callback when pressed.

Resources for this Lesson:
~Jeff Hoogland

Monday, January 28, 2013

Bodhi on MK802 and other ARM Updates


Today I am happy to announce our first public Bodhi images for the MK802 Android stick:

This image comes with a 3.0 kernel and it has OpenGL support for MK802 GPU enabled out of the box. You can find a download link for the MK802 on the ARMHF page of the Bodhi website. The default user name is armhf and the password is bodhilinux. This default user has sudo enabled for installing software and ssh is on by default.

To use this release simply DD the provided .img file to a micro SD card, insert it into your MK802 and power it up. This image has a 1080p script.bin by default, meaning if you are trying to use this image on a screen that only supports 720p resolution you will need to replace the script.bin on the first partition of the image with the one found here.

Since this is our first image for this ARM chipset I have no doubt that it will contain some rough edges. For certain the MK802's built in wireless and OpenGL are functional on this image - I haven't had time to test the audio yet though. Alpha quality release of course.

Please, please, please do not make a comment on this post asking for support with an issue you encounter with installing/running Bodhi on your MK802! Comments asking for support will be removed from this post. Instead please open a support request thread in the A10 section of our user forums. It is much easier to manage/search/solve issues in a message board format than a comments section.

Other Updates:

This past weekend I've also published image updates for our Raspberry Pi and Genesi Smartbook images. Like this image they now both include EFL 1.7.5 and E17 stable by default.

~Jeff Hoogland

Tuesday, January 15, 2013

Some Yummy Elementary Applications

For those who aren't aware Elementary is the top level building block for the Enlightenment Foundation Libraries (EFL). The EFLs reached their first stable release almost a year ago, but aside from E17 there haven't been very many applications written using these libraries to date. Today I would like to highlight a few applications that are being developed using Python and Elementary that have reached a usable state.

Epour - Torrent Client:

Epour uses libtorrent as a back end and currently supports all the basic features you need for a functional torrent client. You can pause/resume torrents and it resumes a partially finished torrent just fine. Epour is currently being developed by Kai Huuhko.

eCcess - System Tool:

eCcess is intended to be a desktop neutral GUI for managing various system tasks. It is still very much a work in progress, but currently it allows you to:

  • Create users
  • Delete users
  • Change a user's password
  • Change the current time
  • Change the current timezone
There is a small screenshot gallery here. I am currently the driving force behind eCcess and I am very much open to ideas for what features it should include in the future.

Valosoitin is a audio player with a very simple playlist interface. Supports all audio formats supported by either Xine or GStreamer. Valosoitin is also being developed by Kai Huuhko.

I already mentioned eAndora a couple of weeks ago, but I figured as long as I was talking about Elementary applications I would bring it up again. Since my first post it has gained a few new features. It now remembers the last station you had playing when you close/relaunch the program and you can now "like" and "ban" songs from your stations. I also improved some back end things so the application is more stable and times out far less with extended play.

Getting these applications:

If you are currently a Bodhi Linux user all of the above applications are just an apt-get away. If you are using a different operating system just make sure you have the latest EFLs installed along with their Python Bindings and then check out the source code from the links I provided above. 

Working with these libraries myself has been a lot of fun. I hope in the future we will see more application development using Elementary as it is a very powerful/flexible library.

~Jeff Hoogland

Wednesday, January 9, 2013

Nexus 7 jams with Bodhi Linux

After a few weeks of working on other things I've gotten back around to doing some more work on our Bodhi for Nexus 7 image. I've just uploaded a new Bodhi rootfs.img (which can be gotten from our source forge page here). This image brings a few improvements, most notably:

  • Menu/Buttons have been made slightly larger to make things more "finger friendly"
  • Suspend now works and pressing the "power" button on the device now suspends Bodhi by default
  • Audio now works without any tweaking
  • Stable E17 packages
My TODO list for the device still includes determining why OpenGL seems to not want to work as well as creating a automated installer script for loading Bodhi on to your Nexus 7. For now this updated image can be installed following the method I laid out here. If you encounter any issues with this image please open a support request in the Nexus 7 section of our user forums.

I'm going to be busy jamming to eAndora on my Nexus for awhile:

~Jeff Hoogland

Thursday, January 3, 2013

Bodhi Linux 2.2.0 Released

The Bodhi Team and I are very happy to present to you our 2.2.0 release - the first Bodhi images to feature the stable E17 desktop. As with all minor Bodhi release existing users can simply upgrade their existing installs of Bodhi 2.x.y This release is exciting for a number of reasons. To start with, we are introducing a few new things with this update release.

With this release, we will now be maintaining two 32bit install discs: One that is PAE enabled by default and one that is not. The kernel without PAE will be an older stable kernel (in this case 3.2) while the PAE enabled kernel will be the latest kernel - for 2.2.0 this means 3.7 kernel. Our 64bit release also comes with the 3.7 kernel.

These discs are also our first released images that are hybrid ISO images. This means that you can write the image directly to a flash drive simply using the dd command and it will become a bootable media. You no longer need to use unetbootin (unless you want to) to create bootable Bodhi flash drives. Remember, we also sell branded Bodhi flash drives to help support the project (we are supported 100% by user donations).

Also included in these disc images are local copies of our newly updated Bodhi QuickStart and the Bodhi Guide to Enlightenment. Both of these documents have been updated to reflect all of the recent changes that have occurred with the stable E17 release.

Bodhi 2.2.0 also features some fresh updates to every one of our default profiles:








In addition to the wonderful new E17 default theme featured in each of the profile screenshots above, Bodhi 2.2.0 ships with the following elegant themes by default:

If you are not happy with any of the default theme selections (or are just looking for some more variety) check out our complete theme page here.

You can find download links to our 2.2.0 discs on the downloads pages at or you can find direct links to the ISO images on our sourceforge page here.

Finally - please do not comment on this post asking for help with an issue you have with Bodhi. Instead open a support request on our user forums.

~Jeff Hoogland

Wednesday, January 2, 2013

Bodhi is ARMing up for a new Year

The mainline Bodhi desktop repositories recently received the gift of stable E17 packages and this same present isn't far off for our ARMHF branch. In the mean time however I have prepared and shared new ARMHF images for the Raspberry PI and Samsung Chromebook.

For the Raspberry PI image, in addition to sporting the shiny new E17 packages - it now comes with the much requested WICD network manager by default. This means those of you using your Raspberry PIs with wireless devices will now have a GUI by default to configure/connect with this interface. You can find this new Raspberry PI image on our downloads page.

The Chromebook release is a bit more exciting. This image has audio working by default and the track pad functions much smoother - including two finger tap to simulate a right click. To get this latest images you follow the exact same install instructions I outlined here a couple weeks ago. For existing Bodhi-for-Chromebook users you can fix your audio by following this guide and improve the trackpad by following this one. One other thing worth noting is that the Chromebook automated installer now includes a md5sum check - so it will only complete the install if your download is valid.

I haven't forgotten about our Nexus 7 users - an update for you will be coming later this month as well.

~Jeff Hoogland

Tuesday, January 1, 2013

Introducing eAndora - Pandora Client

A good deal of the work I do with the Bodhi project is packaging software/releases and managing things. One of my goals for this new year is to spend some time doing some actual development work with the Enlightenment Foundation Libraries and, more specifically, Elementary. I have a good bit of background with python programming, so my first leap into this field is writing a few small GUI applications in python and elementary.

I finally have enough work done on one of these projects that I feel OK sharing my work with the world. Today I would like to share with you a very, very early release of an application I am calling eAndora:

eAndora is a front end for Pandora Internet Radio. I've started a git repository here that I will be publishing updates to as I write them. The interface is still very basic, but the player is completely functional in the aspect that it allows you to browse and play your Pandora stations and skip tracks you don't like. In addition to being developed with Elementary, eAndora differs from projects like Pithos in the fact that it uses VLC as a streaming back end as opposed to the more common gstreamer.

Here are a few screen shots of the first draft of the GUI:

Login Screen:

Main Window:

Station Select:

I've packaged eAndora for Bodhi Linux and users can get it via a simple:

sudo apt-get install eandora

This package includes a launcher that is placed in your Audio menu.

Folks on other operating systems will need at least EFL 1.7.3, version 1.7.0 of the python EFL bindings and VLC 2.0.  Once you have all these installed simply clone the git repo and launch eAndora with:


Please feel free to let me know any issues you find with eAndora by dropping a comment on this post. Do not however report a lack of functionality as an issue - there is still a good deal of work that needs to be done on this project - I just believe in sharing early and often.

~Jeff Hoogland

Bodhi Linux gets E17 Stable Packages

Less than two weeks ago the E team finally had its stable E17 release. The Bodhi team and I have been working hard to deliver this release to our users in its best possible form in a timely fashion. Today we are happy to announce that these stable E17 packages have made their way into Bodhi's main repo. Existing Bodhi users can upgrade their systems to these latest packages by following the instructions detailed here.

Please be aware of a few things when upgrading to these packages:

First, since this is a major E17 release all current user configurations have to be reset. This means all of your current custom E17 profiles will need to be recreated starting with one of the Bodhi default profiles.

Second, the terminology terminal emulator has been having some stability issues with its most recent release. Because of this, I would highly recommend installing a secondary terminal emulator before installing these upgrades.

Finally, all of our wonderful E17 themes need updates to function with this latest E17 release. Currently we have around twenty themes that function well with the latest release. You can find them on our brand new art page.

Enjoy this fantastic new E release, folks! Also, please remember do NOT post support request on this blog post! We have a forum for that.

Also - for those wanting a brand-spanking new install with E17 stable - our Bodhi 2.2.0 discs should be out of testing by the end of this week.

Almost forgot! Happy 2013, folks.

~Jeff Hoogland