Xfce and Google’s Summer of Code
While we haven't been accepted into the program yet, we (Xfce) are applying to participate in the 2008 Google Summer of Code as a mentoring organisation. Please see our wiki page for more information, and add your name to the students list if you'd like to work on one of the projects. Feel free to add to the project ideas list as well.
If you'd like to act as a mentor, you still have a few more days before I submit the application. Add your name to the mentors list and email me to let me know.
Xfce and Google’s Summer of Code
While we haven’t been accepted into the program yet, we (Xfce) are applying to participate in the 2008 Google Summer of Code as a mentoring organisation. Please see our wiki page for more information, and add your name to the students list if you’d like to work on one of the projects. Feel free to add to the project ideas list as well.
If you’d like to act as a mentor, you still have a few more days before I submit the application. Add your name to the mentors list and email me to let me know.
Ristretto, a ‘lightweight’ image viewer
From the moment I started developing ristretto, I mentioned that it was a simple lightweight image viewer. This is a statement which is bound to be disputed by some, and here is the reason why: ‘There is no such thing as a lightweight image viewer‘. And they are right, decompressing an image requires a lot of CPU-power, and a fully decompressed image requires the presence of enough RAM memory in order to do anything usefull with it at any acceptable speed. No image viewer has been able to surpass this limitation, ristretto is no exception to that rule.
So, why do I say ristretto is lightweight? — Because there is more to an image viewer then the two constants I mentioned before, a basic image viewer should:
- Navigate between images in an entire folder
- Display image thumbnails
- Run a slideshow
- Flip / Rotate images
- Read (and interpret) EXIF meta-data, for jpeg images taken by digital camera’s.
- Have well-documented comprehensible code
At this moment, a rudimentary implementation of these features have found their way inside ristretto. Rudimentary, because each component is being looked after if it needs refactoring. The goal is to improve these features until ristretto is a stable and fast image viewer using as little memory as possible (making it relatively lightweight), considering it’s purpose.
I’ve just summed up the first priority of ristretto development; to write a simple and fast image viewer, which does just that: show images.
Any additional features, like importing images from a digital camera (using libgphoto2) or printing images to paper could probably be added through a plugin interface or something. Keeping the basic application simple while allowing individual users to add features they like. If, when and how this is going to be implemented is still a question though ;).
It’s getting there…
Fosdem is over. I heard some talkes, investigated some booths, but the fun thing was meeting Michael, Ken, Antonio, and some other guys there.I guess there are better organized events and meetings out there, but it was worth going there (at least if it's only a 2,5h ride). Unfortunatly I didn't run into any Xfce developer, but a few of them have been there. Hope next time they will have a booths or a devroom (even if they would have to share with Gnome).
I did some improvments to Xfce Edition, added a lot of "unimportant" packages I just forgot (network-manager-applet, gimp, inkscape, evince, brasero).
So biggest issue now is to make gdm start Xfce as default, for new users.
Whaawmp is now working with python 2.4, I added a svn snapshot to Xfce Edition.
Unfortunatly due to gst dvdnav bugginess, it doesn't support dvd menus. C'est la vi.
So long...
Video
Sweet! I got a brief mention in TiNDC #35. Now that I'm back to Linux after a 2-week stint on MacOS X, hopefully I'll be able to help out some more. Not that I don't have other things I'm supposed to be working on...
SCALE, ebuilds, burning apps, and gtk
SCALE
It's been a coupla weeks now since SCALE 6x, so it's about time for an after-action report.
My wife and I arrived Friday night after suffering a two-hour delay because of heavy traffic. The 405 was the worst. LA traffic always gives me nightmares.
Saturday morning came far too early, but at least we were already registered. We got there the same time as omp, who'd brought a Windows-using friend along as a booth slave--er, volunteer.
Our booth setup included a giant Gentoo poster, omp's desktop rig, and one (occasionally both) of my laptops, displaying Xfce. It was more popular than the extremely minimal openbox desktop, so HAH! We gave out lots of bribes--snacks--and even more LiveCDs. It's too bad we didn't have flyers, business cards, shirts, or other Gentoo swag this year. Lots of folks were asking for them. At least we gave out snacks'n'luv.
Wireless internet sucked throughout the weekend. Apparently it was the same for everyone. Spotty, minuscule bandwidth, and nameservers couldn't be reached. Made it hard to demo things that needed internet access, such as emerging packages, looking up our homepage, or highlighting documentation.
One of our users, calculus, was around much of the time to help out; was nice to see him at SCALE again this year. And wormo made an incognito appearance, too. To all the users and everyone else who stopped by and asked questions, gave feedback, or just chatted -- thank you. You're terrific. I'm always excited to meet a Gentoo user in person. It's like "Really? you use Gentoo? No way!" We were possibly the least-known distro there (tied with Foresight and Damn Small Linux?), certainly the least commercial one. The other distros were all heavyweights: Ubuntu, Red Hat, Suse, Fedora, etc.
Still, we had lots of traffic. Several people wanted to know what's up with Gentoo in regards to our recent legal status issues, so I provided the news in-person, and that seemed to go over well. Curiously, none of the enterprise-level folks were much interested in our legal status. They pretty much all said the same thing: "We're not worried. All the technical development is still there; nothing's changing." It was only the individual users who had all kinds of worries and needed the explanation. The corporate sector wasn't worried at all: "As long as it's still being developed."
There are plenty of pictures of our booth around the 'net in reviews and photo sites; you just have to look for 'em.
I had a blast at SCALE. I plan to attend next year, too.
ebuilds
Lately I've been poking random ebuilds from the tree, posting updates to Bugzilla, creating new local ebuilds, asking for keywords/stabling, and so on. It's a lot of fun. A fair amount of edgy experimentation, but that's what my new laptop is for. Things like wicd that I'd like to see in the tree, or the latest version of brasero.
burning apps
Speaking of burning software . . . brasero seems to be the only actively developed gtk+-based application. Everything else hasn't had a release in years. Xfburn, gnomebaker, graveman, xcdroast....you name it. That's not good news. Brasero is a good choice for my Gnome desktop workstation, but I wouldn't even think of putting Gnome on my laptop, which is a pure Xfce machine. And yet I hate the idea of putting K3B on my laptop even more, because of the ugly, ugly Qt and kdelibs dependencies.
I went ahead and installed brasero on my laptop anyway, since it's gtk+, and it can work with DVDs. None of the other apps I mentioned support 'em. That added 33 huge Gnome deps, including (ugh) nautilus. The irony? K3B only wanted 18 total packages. Still, it's uglier. That's what counts, right?
So thinking about this sad state of affairs for gtk+-based burning apps got me thinking . . . what would it take to create a new one? Something fast, with minimal dependencies, and gtk-based.
gtk
I've skimmed the gtk tutorial and the reference manual before, but only as a passing curiosity. Today I really took a shot at figuring 'em out. This is where I ran into the cliff known as "C programming."
I'm not a programmer. I can do markup languages, I can do some bash, some javascript, little things like that. But I've never been trained in OOP. Or any kind of programming, except some BASIC in elementary school and college. My degree is in theatre, not computer science!
Still, I'm determined to make what headway I can with these gtk+ guides. I've started to see what does what, and why. And some of the necessary parts of an app. Now I need to find out how to get that button press to do something, like . . . burn a CD. Copy a disc. Save an iso. And so on. For that, I've been poking at the source code for Xfburn, libburn, and brasero. This is all still just a bit over my head, but I'm trying, at least.
I've already partly answered my own question of "Why aren't there more up-to-date gtk+ burning apps available?" because I created a sample task list.
Writing a graphical app is a huge undertaking. What burning backend will be used? cdrtools, cdrkit, libburn/libisofs, dvd+rwtools are all possibilities. Same goes for the media types used in writing audio discs. The app has to handle notification (possibly via dbus), disc drive status/detection, set/get write speed, and a dozen other critical tasks. Oh, and it needs to be translatable (those pesky .po files that take up space), and it really should make use of autotools. What other libraries will it use? Will any of its features be optional compile-time switches? Got to add those too. Where will the project be hosted? What VCS? And so on.
Lots of stuff to do. No wonder brasero's the only active gtk+ burning app. And that's too bad, too. It has a ton of dependencies that folks using Xfce or just a WM don't care to install. I'd like to see the huge gap between "brasero" and "nothing" filled by a low-dependency, fast, capable application. I just don't think I'm up to the task of creating it all by myself.
SCALE, ebuilds, burning apps, and gtk
SCALE
It's been a coupla weeks now since SCALE 6x, so it's about time for an after-action report.
My wife and I arrived Friday night after suffering a two-hour delay because of heavy traffic. The 405 was the worst. LA traffic always gives me nightmares.
Saturday morning came far too early, but at least we were already registered. We got there the same time as omp, who'd brought a Windows-using friend along as a booth slave--er, volunteer.
Our booth setup included a giant Gentoo poster, omp's desktop rig, and one (occasionally both) of my laptops, displaying Xfce. It was more popular than the extremely minimal openbox desktop, so HAH! We gave out lots of bribes--snacks--and even more LiveCDs. It's too bad we didn't have flyers, business cards, shirts, or other Gentoo swag this year. Lots of folks were asking for them. At least we gave out snacks'n'luv.
Wireless internet sucked throughout the weekend. Apparently it was the same for everyone. Spotty, minuscule bandwidth, and nameservers couldn't be reached. Made it hard to demo things that needed internet access, such as emerging packages, looking up our homepage, or highlighting documentation.
One of our users, calculus, was around much of the time to help out; was nice to see him at SCALE again this year. And wormo made an incognito appearance, too. To all the users and everyone else who stopped by and asked questions, gave feedback, or just chatted -- thank you. You're terrific. I'm always excited to meet a Gentoo user in person. It's like "Really? you use Gentoo? No way!" We were possibly the least-known distro there (tied with Foresight and Damn Small Linux?), certainly the least commercial one. The other distros were all heavyweights: Ubuntu, Red Hat, Suse, Fedora, etc.
Still, we had lots of traffic. Several people wanted to know what's up with Gentoo in regards to our recent legal status issues, so I provided the news in-person, and that seemed to go over well. Curiously, none of the enterprise-level folks were much interested in our legal status. They pretty much all said the same thing: "We're not worried. All the technical development is still there; nothing's changing." It was only the individual users who had all kinds of worries and needed the explanation. The corporate sector wasn't worried at all: "As long as it's still being developed."
There are plenty of pictures of our booth around the 'net in reviews and photo sites; you just have to look for 'em.
I had a blast at SCALE. I plan to attend next year, too.
ebuilds
Lately I've been poking random ebuilds from the tree, posting updates to Bugzilla, creating new local ebuilds, asking for keywords/stabling, and so on. It's a lot of fun. A fair amount of edgy experimentation, but that's what my new laptop is for. Things like wicd that I'd like to see in the tree, or the latest version of brasero.
burning apps
Speaking of burning software . . . brasero seems to be the only actively developed gtk+-based application. Everything else hasn't had a release in years. Xfburn, gnomebaker, graveman, xcdroast....you name it. That's not good news. Brasero is a good choice for my Gnome desktop workstation, but I wouldn't even think of putting Gnome on my laptop, which is a pure Xfce machine. And yet I hate the idea of putting K3B on my laptop even more, because of the ugly, ugly Qt and kdelibs dependencies.
I went ahead and installed brasero on my laptop anyway, since it's gtk+, and it can work with DVDs. None of the other apps I mentioned support 'em. That added 33 huge Gnome deps, including (ugh) nautilus. The irony? K3B only wanted 18 total packages. Still, it's uglier. That's what counts, right?
So thinking about this sad state of affairs for gtk+-based burning apps got me thinking . . . what would it take to create a new one? Something fast, with minimal dependencies, and gtk-based.
gtk
I've skimmed the gtk tutorial and the reference manual before, but only as a passing curiosity. Today I really took a shot at figuring 'em out. This is where I ran into the cliff known as "C programming."
I'm not a programmer. I can do markup languages, I can do some bash, some javascript, little things like that. But I've never been trained in OOP. Or any kind of programming, except some BASIC in elementary school and college. My degree is in theatre, not computer science!
Still, I'm determined to make what headway I can with these gtk+ guides. I've started to see what does what, and why. And some of the necessary parts of an app. Now I need to find out how to get that button press to do something, like . . . burn a CD. Copy a disc. Save an iso. And so on. For that, I've been poking at the source code for Xfburn, libburn, and brasero. This is all still just a bit over my head, but I'm trying, at least.
I've already partly answered my own question of "Why aren't there more up-to-date gtk+ burning apps available?" because I created a sample task list.
Writing a graphical app is a huge undertaking. What burning backend will be used? cdrtools, cdrkit, libburn/libisofs, dvd+rwtools are all possibilities. Same goes for the media types used in writing audio discs. The app has to handle notification (possibly via dbus), disc drive status/detection, set/get write speed, and a dozen other critical tasks. Oh, and it needs to be translatable (those pesky .po files that take up space), and it really should make use of autotools. What other libraries will it use? Will any of its features be optional compile-time switches? Got to add those too. Where will the project be hosted? What VCS? And so on.
Lots of stuff to do. No wonder brasero's the only active gtk+ burning app. And that's too bad, too. It has a ton of dependencies that folks using Xfce or just a WM don't care to install. I'd like to see the huge gap between "brasero" and "nothing" filled by a low-dependency, fast, capable application. I just don't think I'm up to the task of creating it all by myself.
Really Persistent Connections
A little background: a month or so ago, I set up a 6to4 IPv6 tunnel at home, and set up IPv6 addressing on my home LAN. All the machines on my home LAN are routable on the IPv6 internet now. I put a corresponding tunnel on the router of my development network at work (yes, I properly firewalled both networks).
So, here's the progression of events today:
My MacBook is on the dev network at work via wired ethernet. I ssh to my laptop at home on my LAN through the IPv6 tunnel.
Later, I need to go to a meeting, so I unplug the ethernet cable and turn wireless on, connecting to our corporate WLAN, which has no IPv6 support at all, and connects to the internet via a completely different pipe than the dev network.
I'm in the conference room downstairs for a half hour during the meeting.
I come back to my desk, switch off wireless, and plug the original ethernet cable back in.
A bit later, I switch back to iTerm, and notice the terminal with the ssh session open, which hasn't timed out on my end yet. Not too surprising, so I go to hit enter a few times to see if it'll die before I take the more drastic action of closing the window and opening a new one.
I press enter, and... the other end responds! The ssh session is still alive, despite the fact that I've been on another network for a good 30 minutes.
Say what?
whaawmp
Searching for a Totem replacement, I ran into whaawmp.It's meant to be a Totem replacement, written in python, using pygtk and gstreamer.
Unfortunatly it's written using Python 2.5 (we don't have it in foresight, yet), so I just joined the development team, working on a Python 2.4 branch. Hopefully there will be a partial working version later today.
Design your own desktop with Xfce 4.4 – part 2
By popular demand, I decided to push the limits of Xfce’s customisability even further. This time, I would make it look like Mac OS X 10.5 “Leopard”.
Despite efforts like Mac4Lin, this task proved more difficult than trying to make it look like Windows Vista. Though I haven’t achieved the same degree of perfection as I did when replicating Vista, I still think I came pretty close.
First of all, you will need to download Mac4Lin and extract it somewhere. There’s a lot of material to use in there, but since I have already discussed it in part 1, I won’t elaborate here on how to change your wallpaper, font (to Lucida Grande), GTK theme, icon theme and xfwm4 theme or, for those who use Compiz, Emerald theme. Removing the bottom panel, setting a background image and resizing the top panel have also been discussed. In order to replicate the looks of OS X as close as possible, though, there still is a lot to be done.
Dock
One of the most noticeable things about OS X is its dock. Unfortunately, by default Xubuntu does not include such a dock by default. To have this functionality provided for, we will install Avant Window Navigator (AWN). Luckily, excellent instructions for installing AWN on Ubuntu 7.10 are already available, with the only difference being that we use Xubuntu and thus need to look in Applications->System
instead of System->Administration
.
Do note that, in order to use AWN, you need to have Compiz installed or have enabled Xfce’s own display compositing by checking “Enable display compositing” under the Compositor tab in Applications->Settings->Window Manager Tweaks
.
You can run AWN through Applications->Accessories->Avant Window Navigator
. In order to have AWN ran every time you log in, you will also want to add AWN in Applications->Settings->Autostarted Applications
.
The next step is making AWN replicate the OS X dock, which can be done through Applications->Settings->Awn Manager
. If you click “Themes” on the left-hand side, you will get an overview of installed themes. By clicking “Add” you can install the AWN Dock Theme included in the Mac4Lin package you downloaded earlier, which you can then select and apply.
We then click “General” on the left-hand side to configure the looks in the Bar Appearance tab. I disabled round corners, set an angle of 26°, a height of 52 pixels and an offset of 14 pixels.
With that set, you can start adding applets to the dock by clicking “Applets” on the left-hand side. There are a whole range of applets to choose from, but for my OS X-like setup I opted for “Launcher/Taskmanager”, “Shiny Switcher” and “Stacks Trasher”.
The next step was adding program launchers to the dock (well, technically, to the “Launcher/Taskmanager”). This can be done easily by opening a Thunar window (Applications->Accessories->Thunar File Manager
) and browsing to /usr/share/applications
. You can then drag applications to the dock to add them. Right-clicking on a launcher allows you to change its icon.
Firefox
Also included in the Mac4Lin package is a Firefox theme, to make the Firefox experience similar to that of Safari. To install this, you open up the Add-ons window in Firefox from Tools->Add-ons
, then click “Themes” on top. You can then drag the file FireFox Safari Theme - Vfox2.jar
from the Firefox Addons folder into the Add-ons window. Another window pops up allowing you to install the theme. After the installation is finished, you will be asked to restart Firefox. After you have restarted, you can select “Use Theme” through the Add-ons window, after which you have to restart it once again.
To install the extensions, you just select the extension file, copy it (Edit->Copy
), then paste it in Firefox’s address bar on top (Edit->Paste
). Again, an installation window will pop up, and you will be asked to restart Firefox when the installation has finished. Upon the next start, the extension will be installed.
Cursor theme
An interesting option which we didn’t explore in part 1 was the ability to change cursor themes. Conveniently, the Mac4Lin package also contains a folder named GTK Cursor Theme. Similar to how you installed icon themes, you extract the theme archive to /home/yourusername/.icons
.
You can then open Mouse Settings (Applications->Settings->Mouse Settings
), where the cursor should be located in the Cursor tab. Selecting the theme will warn you that the theme might not be applied until the next time you login.
Final thoughts
During the process of making my desktop look like OS X, I slowly started to appreciate the approach Apple has taken with its operating system. Instead of replicating the steps of the industry leader, they dare to be different. According to some, this has even led the industry leader to follow in Apple’s footsteps!
Unfortunately, all this innovating does not make creating a lookalike any easier. The most noticeable inaccuracy is in the GTK theme: because of its use of the pixmap engine, button images need to be stretched both horizontally and vertically, so they often look very odd compared to their OS X counterparts. Other themes such as Leopardish also come close, but no cigar.
That said, the result ended up quite nice. When compared to the Vista “clone”, a world of difference can be found. Clearly, an extensive range of customisation options is available to Xfce users, which emphasizes that Xfce really does not lag behind GNOME nor KDE when it comes to customisability.
Those interested in moving application menus to their panel will be interested to know that it is possible, with support for Xfce’s panel. However, this is a very hackish solution and therefore strongly discouraged! As you’ll understand, I take absolutely no responsibility if it happens to end up in a disaster.
