Locidesktop was my coffee shop coding project of last year. I was quite pleased with the results. Locidesktop.com has been happily serving link desktops to some loyal visitors for months now – with no maintenance required on my part (a good thing because I've been busy with other projects).

Rather than let the project stagnate while I do other things, I have released it as open source with the hope that other Python/Django developers will pick it up and add new features. I had never really anticipated that anyone other than myself would see the code, so it is lacking in comments and documentations, but there are some nice features that may be of interest. For instance, there's a system to expose a REST API that factors out a lot of Python bioler-plate code and corresponding javascript code exposes the desktop functionality to the browser.

There's also a pretty powerful caching system that makes rendering a desktop blindingly fast. I may have gone overboard with that, given my traffic rates. But I guess it is best to have more capacity than you need.

If you want to look through the code or fork the project, it is available on Github:

Locidesktop code

The only thing missing from the open source version is a single-site theme I purchased from themeforest.net, used in a few pages such as the about & privacy urls. The desktops themselves are identical to the live site because I did those myself. You can tell because of the minimalist design reflecting my artistic abilities (minimal).

There's a README in the project that will help you get started, but other than that you may have to figure things out for yourself. It's a pretty standard Django project, although I do use Jinja templates rather than Django templates. If you have any questions, please ask them in the comments, so at least there is a central repository for issues.

For more information on Locidesktop, see my previous posts on the subject.

Update: I had to recreate the repos to remove a bunch of temp files and mercurial data. If you forked before 9am GMT, 10th Jan, you may want to get this new repos.

This blog post was posted to It's All Geek to Me on Sunday January 9th, 2011 at 6:41PM

10 Responses to "Spatial Bookmarking Service goes Open Source"

  • January 9th, 2011, 10:40 p.m.

    works well but when i access /new i get this err msg

    DoesNotExist at /new/

    IconCatalog matching query does not exist.

  • January 9th, 2011, 10:44 p.m.

    Esam, did you run ‘sh runonce.sh’ ?

  • January 9th, 2011, 10:56 p.m.


    and i got this err msg

    mv: cannot move `crystal_project' to `media/iconsets/crystal_project': No such file or directory

    but setup cont

  • January 9th, 2011, 11:03 p.m.

    Ah, checked in a fix to runonce.sh

    Run that, or alternatively do ‘mkdir media/iconsets’ in the same dir…

  • January 9th, 2011, 11:08 p.m.


    but still there is an err msg tht appear


    http://dpaste.com/301499/ [dpaste.com]

  • January 9th, 2011, 11:13 p.m.

    You will also need PyFilesystem

    sudo easy_install fs

    There are probably some other dependencies I haven't yet documented.

  • January 9th, 2011, 11:40 p.m.

    all right ,, working great

    coool web (seems like web 4 :D )..excellent work

  • James
    January 10th, 2011, 5:26 a.m.

    While the project looks interesting, the git repo could probably do with recreation; 35MB, contains the complete history of a ~600 commit mercurial repository, littered with temp files. It definitely makes contribution a less inviting prospect .

  • January 10th, 2011, 9:28 a.m.

    James, I didn't have a .gitignore in my initial commit. I've rebuilt the repos without the temp files.

  • Skomli
    January 14th, 2011, 5:02 p.m.

    I set up LociDesktop on my server and it runs great, thank you very much for this great app.

    But I wonder how the favicons are generated. I assume the scripts in “/tools” are for that purpose, but before I spend a lot of time to find out what's going on I'm asking you to explain this if possible. Thanks.

Leave a Comment

You can use bbcode in the comment: e.g. [b]This is bold[/b], [url]http://www.willmcgugan.com[/url], [code python]import this[/code]
Preview Posting...
Previewing comment, please wait a moment...

My Tweets

Will McGugan

My name is Will McGugan. I am an unabashed geek, an author, a hacker and a Python expert – amongst other things!

Search for Posts
Possibly related posts
Popular Tags
Recent Comments
def thousands_with_commas(number): new_number = [] number = str(number) mod_value = len(number) % 3 counter = 3 if len(number) 4: return ...
don't know why this was tempting.. (#1)import re from collections import Counter, OrderedDict cnt=Counter() with open(./t) as f: #--- strip ...
- Mike on Python Coder Test
Hello! I've seen this test and tried to do them. Result added bellow. First path: def thousands_with_commas(i): i = str(i) ...
Why another framework? what wrong with django, pyramid, flask?will be have answer for this question in the docs)
Hi! Really great code, good work! But trying to use it on a responsive site, it didn't resize images. So, ...
© 2008 Will McGugan.

A technoblog blog, design by Will McGugan