Multi-touch on Enlightenment

multitouch
Standard

At FOSDEM yesterday I was demoing the Enlightenment IDE that I have been working on. My laptop is a touchscreen and I had it in tablet mode for the demo, so far so good. Until a couple of sharp attendees noted that there was no multi-touch. Huh, neither it does.

Enter rasterman – “Did you enable xinput2.2?”, erm no, no I didn’t…

Passing –enable-xinput22 to the efl ./configure fixed it! magic 🙂 The image above shows 2 taps simultaneously in the elementary_test Gesture Layer 2 demo.

Job done. Now to fix a couple of multi-touch gesture bugs I have found :(.

Taming the power of Linux development

EDI-logo-512
Standard

The power of the APIs available to a linux developer is immense. To help illustrate I have a quote from wilsonk who is learning the EFL APIs:

Well, I could probably make this thing get me coffee but is it worth the effort 🙂

It’s a good point – where do you even start?

EDI – that’s where. We are building a brand new IDE for linux development that aims to make getting into Linux development as easy as possible. It’s in early stages just now but please check it out and let us know what you think!

Compiling EFL on OS X Yosemite

1174
Standard

One of the great things about code developed for Linux / Unix is how portable it can be and how it should compile on so many different systems. Autotools is, however, a pain and experiences in the past have proved less fruitless than the ideals foretell.

With some help from the Enlightenment developer crowd I set to compile the EFL on OS X Yosemite. Here is my rundown on what you need to do if you’re keen to try the same (note that this uses HomeBrew – I tried with MacPorts with little luck, if you are using ports please uninstall it first):

Install XQuartz (https://xquartz.macosforge.org)
Install HomeBrew (http://brew.sh/)

Then execute the following commands from your terminal:

brew install autoconf automake libtool gettext pkg-config check libjpeg luajit fribidi giflib libtiff glib xz dbus cmake bullet gnu-sed

brew link gettext --force
git clone git@git.enlightenment.org:core/efl.git
cd efl

export LDFLAGS="-L/usr/X11/lib -L/usr/local/lib"
export CFLAGS="-I/usr/X11/include -I/usr/X11/include/freetype2 -I/usr/local/include"
export PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig/:$PKG_CONFIG_PATH
export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH:/usr/local/bin"

./autogen.sh --without-x --with-x11=none --enable-cocoa --disable-pulseaudio --disable-audio --disable-gstreamer1 --disable-gstreamer --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-aba
make
sudo make install

cd ../
git clone git@git.enlightenment.org:core/elementary.git
cd elementary
./autogen.sh
make
sudo make install

That should get you to a place where the EFL and Elementary are all installed into /usr/local. Note that at this stage there are many known issues – one of the larger being that mouse input is not recognised…

Please file patches to us at phabricator.

Accelerating the return to enlightenment (With linux on a Yoga 2 Pro)

20140620-083213-am-30733675.jpg
Standard

“If you want to succeed then you need to immerse yourself in the problem” – wise advice from a business mentor of mine… My long serving Apple Macs run everything – work, media, side project coding and now VMs filled with Linux and Enlightenment. They are shiny and solid but have strange keyboard layouts, nonstandard hardware and a bad implementation of virtual desktops that get in the way of desktop virtualisation. So for the first time in nearly 10 years I bought not-a-mac.

This new PC laptop (note not a “windows PC”, I hate that term – it came with windows but that’s not a defining feature…) should be a great device for pushing the limits of modern display and input software. I wanted something light, thin and powerful with at least a 13″ screen. Essentially a competitor to the MacBook Air, but more modern and without the Mac downsides – also avoiding a lookalike, something that’s cool in its own right.

Let’s face it there aren’t a lot of devices in this class but I settled (after some time) on the Lenovo Yoga 2 Pro. This is a solid core i7 device with a decent amount of RAM and SSD storage. The screen is an impressive 13.3″ that has more pixels than my retina 15″ MacBook Pro – as well as being a touch screen too! Couple that with the fact that it inverts to become a tablet. All of those features are packed into a bright orange shell that is no heavier or larger (at the thickest point) than a MacBook Air. Impressive!

So after a short trial of windows 8.1 (yuck! What a confused system) I installed arch Linux (details in a different post – to follow) and it went very smoothly. Out of the box it was up and running with full res video and complete audio in & out. The keyboard (including all the special function keys), trackpad and touchscreen also worked perfectly. After installing the wpa_gui wi-fi was complete too (a little config juggling was required to connect to my secured wifi and download the packages but nothing too taxing). And most surprising when the keyboard is folded back on the screen it is disabled as you expect – though I think this may be a hardware feature. As of now all that is not working is automatic screen rotation (the gyroscope seems non-standard) and the windows icon/button on the screen which I had not realised was a button.

The only issue with the machine so far has been the insanely high pixel density. You can work around it by telling Xorg to scale 2x but you lose the quality so I didn’t want to do that. Thankfully Enlightenment has built-in support for output scaling so I went right ahead and installed the latest version from their source. As with any large compiling from source task it took a while to get all the dependencies but I put that in a script for future use. The compile and install went well – grab EFL, Elementary, Enlightenment and Entrance for a good base experience. Git master is really stable and I really enjoy being on the cutting edge but if you don’t have that thirst then you should probably grab release tarballs instead.

This new machine has given me a great platform to immerse myself in Linux and Enlightenment. Scaling and touch interfaces are things that need a little work still but I’m helping out with that. Next I’m going to be further developing the Enlightenment IDE (EDI) which is already a good place to be working on EFL based code. It’s a work heavily in progress but I’m hoping to get some more contributors soon and start pulling in cool new features to get more Software Engineers into creating apps for Enlightenment.

Want to know more about my E install or Linux on the Yoga 2 Pro? Drop a comment below or hit the contact page.

Building an Enlightened IDE

EDI-logo-512
Standard

So I mentioned before a project called EDI and I’ve been posting some info online but I never really described it here. So – for my faithful followers – what am I up to?

In absence of other active projects (such as growing a company, establishing a software platform or maintaining apps) I decided to get back to some Enlightenment development. After around 8 years off the project a lot had changed – I was struck by how complete the EFL APIs had become but was also surprised that Linux still suffered from a lack of polished development environments.

And so I figured 3 birds with 1 stone –

  1. Learn the new EFL APIs and help with some bug fixing
  2. Create a slick new IDE for Linux
  3. Reduce the barriers for new developers looking to create apps for Enlightenment.

By creating a native IDE application using the Enlightenment libraries we can harness their APIs and render scripts to provide a powerful integrated environment. With any luck we’ll be able to bring in various other E projects to provide graphical editing or version control etc.

I also just completed the icon for the app – see above. I think it works quite well, I hope you guys like it too…

Please stop by the planning page which is kept up to date with progress. I’ll also be posting more updates here as and when there are things to report. Hopefully there will be a great app here for everyone to enjoy soon.