After the hinting I did in my last post and the lack of any new features being released for Vineyard, I though I’d let you people know what’s actually going on with the development.

As some may have noticed, the last release had the Programs-page split into a separate file loaded as a plugin/module. This was done since the code for it is the largest piece of related code in Vineyard and it made sense to separate it, but also because I’ve been wanting to make Vineyard more modular. The result of starting to split out the different pages into modules (and stumbling on to Jono Bacon’s recent post) however left me wishing that I had structured Vineyard differently from the start, so I sat down, did some thinking and decided to reprogram vinyard-preferences from scratch.
Yup, that’s right, from scratch.

I know this means that you’ll have to wait somewhat longer for the next version, but fear not, I will still release bug fixes when necessary for the 1.4 series. What this also means is that the next version (the one brewing on my harddrive) loads completely asynchronously (in less than a second on my computer right now), has every page split into modules/plugins that load on demand, supports loading parts of the interface into other programs as widgets (!), supports theming Wine (including installing themes from archive files), has rudimentary support for colour-settings, and…. you guessed it Luke… basic AppDB integration. It also means that maintaining and extending Vineyard should be a lot easier in the future, good news for me.

So, sorry to keep you waiting, but I promise I’m cooking up something good πŸ˜‰
Oh, and feel free to keep requesting functionality!

Before I sign out I’ll leave you with a quick screenshot of the new (possible) layout of some of the options:
Preview screenshot of the rewrite of vineyard-preferences

I’ve been working on some new functionality for Vineyard and I needed to test if the user is connected to the internet or not. After some Google scouting I didn’t come up with anything that did what I needed so I ended up writing this little function and thought it might be useful for others.

def test_internet_connection():
	info = subprocess.Popen(['ifconfig', '-a'], stdout=subprocess.PIPE).communicate()[0]
	for interface in info.split('\n\n'):
		if 'UP BROADCAST RUNNING' in interface and 'inet addr:' in interface:
			return True
	return False

Internet connection… Vineyard… what could I be up to? Any guesses (or requests)?

This is just a quick post to tell you all that I’ve updated wine-preferences in my PPA. There are lots of new goodies and a nice graphical overhaul.
More details later, now for the eating!

Remember, you can install all the Vineyard packages (wine-preferences, nautilus-wine and python-wine) by running the following commands:
sudo add-apt-repository ppa:cybolic/ppa
sudo aptitude update && sudo aptitude install wine-preferences nautilus-wine

Okay, this is actually fairly exciting… I’ve packaged and uploaded nautilus-wine and wine-preferences to my PPA, so now you can install both the Nautilus Wine properties page I showed two posts ago, and my fancy “new” (it’s been in ubuntu-wine’s bzr forever) graphical configuration tool for Wine directly from your package manager (if you’re running Ubuntu).

Yes, this is the so called gtk-port of winecfg that so many have been dreaming about for the last couple of years, only this one also throws in bottle support (though you have to launch it with “–enable-bottles” to use that the first time, after you’ve created a bottle it figures you might want to use the functionality again by default), running and uninstalling installed Windows programs and a few commonly used “tricks” like setting how much video card ram you have or how offscreen images should be rendered (FBO, PixelBuffer or BackBuffer) all nicely wrapped in a Gnome System Tools -like program.

See? Full of nice options. Notice the loaded Painkiller configuration? Yes, that is a game that runs perfectly a Wine, in case someone asks.

Next on the packaging schedule are the helper tools that offer to install Wine the first time you try to open a Windows executable without Wine installed, scans the file for virus and offer to set the executable bit for you, oh and also does this for Java and .desktop files, more Nautilus integration in the form of the “Run in new Wine configuration” right click option you may have noticed earlier and the command line version of wine-preferences which should come very handy for you script makers out there.

On the development front I think I still need to figure out a clever way of exposing the bottle structure to Nautilus. As it is now, bottles are saved as fake home directory in ~/.winebottles/$BOTTLENAME – why the fake home directory you ask? Since I discovered that Windows programs just love to put stuff in My Documents, which defaults to the users home, so this is to avoid programs spamming your home folder, unfortunately it also means that if you open ~/.winebottles/$BOTTLENAME in Nautilus you won’t see anything since everything is in hidden directories.
I’m thinking some kind of symlinking could make this accessible, but I still have to work out the details.

So, now I’m off to bed (finally) so I’m ready for helping my beautiful Greek fiancee move into her new flat here in Denmark tomorrow πŸ˜€ – which is bad news for the rest of you since this means no time for coding or packaging the next couple of days πŸ˜‰


EDIT: Oh, almost forgot, in case you missed my last post, my PPA is here.

So, after having build a debian package of python-wine, I thought it would be an easy thing to set up a PPA and start actually distributing my work on the Wine/Gnome integration… Well, turns out it was a bit trickier than I thought and I consequently had to rebuild the python-wine package from scratch, but at least it should now follow the Ubuntu/Debian Packaging Guidelines! πŸ˜€ (though lintian still complains about stuff the guideline says is correct… hmm…)

Anywho! The PPA is set up and the first package is being build so now you should be able to add my PPA and have automatic updates to python-wine, and hopefully the rest of my work in the near future.

While I’m on the subject I have to comment on how annoying the documentation is for building packages. I’m sure it’s just dandy if you are building a package from someone else’s work and it’s coded in a compiled language, but it only gives an example on how build a package of a python application, no word on how a module or extension would work, or how something like a Nautilus extension or other single-file-or-small-script-package would have to be build. I’m sure I’ll figure this stuff out eventually, but it’s going to be by trial and error and by looking at other people’s packages, not by reading documentation, which is sad. I hear good things about Ubuntu’s Quickly project, but so far it seems a bit too “magical” for me since there’s very little documentation on what it actually does behind the scenes to make me trust that it won’t make a mess of things for me instead.
Of course, I could stop complaining and publish some documentation instead, but to be honest I don’t fee I know enough of the subject yet to do so… maybe in the future.

Anyway, enough rambling! Here’s my PPA.

As very few people apart from Scott Ritchie probably know, I’ve been working on integrating Wine more closely with Gnome for a few months now, and though I’ve had a break from the development for some time, I managed to finally create a little more for the project today.

More specifically, I made the first version of the integration of Wine’s preferences into Nautilus.

So far, this is what’s possible:
Right click on an EXE file
And you can directly set how Wine opens this program

Now, Wine also has options for setting some options for DirectSound emulation and library (DLL) overrides for a specific program, and while I intend to add support for library overrides, I don’t think I’ll include the options for setting DirectSound emulation levels. The reasons for this are that, first of all, the options would take up a lot of space visually and make the usually small properties dialog huge, but more importantly, I’ve never seen any howto, guide or anything where a program would work better after toggling DirectSound emulation or changing the bit depth of the audio, so I’m assuming that those options are pretty safe to exclude.

If you want this on your own system, this is what you have to do (this will be much easier soon as Scott is in the process of packaging this stuff up for Ubuntu):

We’ll be needing two things: My Wine library for Python and the properties file for Nautilus and we’ll be getting both from bzr, so if you don’t have bzr installed you should do a sudo aptitude install bzr (if you are on Ubuntu or another Debian based system) before doing the next steps.

First, let’s get all the files from the bzr project:
bzr branch lp:~ubuntu-wine/+junk/wine-helper

Next, we’ll install the Wine library for Python (UPDATE: There’s a debian package further down the page, if you prefer that route):
sudo cp -R wine-helper/wine /usr/lib/python2.6/wine

And finally we’ll install the Wine properties page for Nautilus:
sudo cp wine-helper/ /usr/lib/nautilus/extensions-2.0/python/

Now everything is installed and you can either log out and in again or restart Nautilus by pressing Alt+F2 and typing nautilus -q for the changes to have effect.

Let me know how things went πŸ™‚

UPDATE: For those of you that prefer not to “hack” your system, say by copying files directly into the directory of a specific Python version, I’ve made a deb package of the Wine library. It’s available here.

I have 3gbs of memory in my system and a fast processor, yet my system would start choking when I used to much memory so I sat out to fix it.

What I learned is that there’s a setting in /etc/sysctl.conf called vm.swappiness that controls to what level the Linux kernel should use disk based virtual memory from 1-100.

In Ubuntu, this is set to 60 by default, which roughly translates to 60% of all virtual memory being disk based, and therefore, slow.

To change the value simply edit the file (e.g. “gksu gedit /etc/sysctl.conf”) and add the line “vm.swappiness = 1” (change “1” to what you think is appropiate) – the change will take effect on next reboot.

If you want the effect now, you can run “sudo sysctl vm.swappiness=1” in a terminal.

A very welcome effect of this change is that Nautilus is now many, many, many times faster!

Now that Tabula Rasa is entering its final death rattle I wanted to make sure I got the soundtrack by Tracy Bush, Curse Mackey and Chris Vrenna with Clint Walsh, so I wrote a small extractor for the GLM format.

Now, as far as I can tell, a GLM file is just a sequence of either Ogg Vorbis or MP3 files put together, so my extractor only looks for those two file formats and splits them up into single files in the sequence it finds them in. There might be more to the format than that, and so I don’t guarantee that it works correctly, but at least I’ve got my soundtrack to listen to.

Anyhow, here it is:

Just run it in a terminal and it should tell you how to use it.

After having my partitions mangled once again, again, again by Windows, I decided I had to clean up my Linux – and by clean up, I mean reinstall, though I still use the same config files for my program – I love how you can do that in Linux.

But anyway, instead of reinstalling Ubuntu Hardy, which has given me so many problems with my notepad’s ATI graphic card, I figured I might as well try Mint again, since it was a very enjoyable ride last time, and it sure still is!

So far I like practically everything about the new Mint! Their funky little menu-ting (though it makes setting preferences slightly slower than the standard Gnome menu, though that’s not really an issue since it not something one should have to anyway), their theme (and the excellent included themes), how everything is automated, from video codecs to software installation and checking, and most of all because it let me boot into CompizFusion without any configuration at all – with working video none the less (something I never got working right in Ubuntu).

I don’t know how on earth the Mint team has achieved this, since it should function exactly like Ubuntu in regards to drivers, but for some reason Mint just works.

If I gave out stars, Mint would get five out five (or maybe 4.9 because of the redundant, and slighly ugly, welcome setup) – if you haven’t already tried Linux Mint, I recommend you give it a go – especially if you’ve never tried Linux before and want to see what alle the hype is about πŸ˜‰

I’ve just read Mark Shuttleworths post to the Ubuntu Development mailing-list and I must say it got me a bit excited.

In his post he mentions that the focus of the next release of Ubuntu, the one after Intreprid Ibex, namely 9.04 “Jaunty Jackalope” will, amongst other things, focus on “the blurring of web services and desktop applications” which, if done right, will be extremely cool and also give Ubuntu a real edge over OS X and Vista.

It also got me thinking about projects such as Empathy, Gimmie and Soylent. Just imagine the things these programs can do, implemented properly in an Ubuntu Gnome kind of way… pure bliss.

When I think of this, I immediately also think that we should try to step away from the program analogy and focus on tasks instead.

You shouldn’t have to locate F-Spot in the menu, but click “Pictures”; if you prefer something other than F-Spot, change it in the preferences (and yes, this should include a way to “launch” Photobucket, Flickr, etc.). The same with instant messaging, you shouldn’t have to start Pidgin, you should have a “People” or “Contacts” entry in the main menubar with all your IM contacts, email contacts, heck, even Facebook contacts listed, each with a submenu giving you the option to contact them in different ways: video, chat, email – like Soylent in a menu.

Ubiquity already implements a lot of what I have in mind, but it’s still inside the browser, it should be part of the desktop, also it uses English language to do the task, it should use the desktop interface (though language based operation shouldn’t be ignored, it should still be an option – like in GNOME Do, which has a nice graphical way of showing what you are requesting).

Ideas such as this have been posted numerous times, but have yet to be included in any standard desktop – I sincerely hope Jaunty Jackalope will change this.