I’m developing a twitter client for maemo. Yes I know there already is one. But I felt like writing my own, from scratch, and rather stupidly not just using nicely existing twitter libraries etc. This is an education exercise.
so in extras-testing under internet-network is now witter 0.1.1-2
in extras-devel is 0.2.0-1 which adds threads and auto-refresh of feeds.It also adds support for multiple search terms separated by commas. Search terms are stored/retrieve between sessions, so you can keep a number all refreshing at a set interval
so, what is it? it’s the modern day hello world..it’s yet another twitter client.
mostly written just to educate myself on how to go through the whole process of develop and release.
it’s not pretty. but it has some useful functions.
failings first…
It is only basic auth. it stores the credentials in a file in .witter
it does base64 encode the info, but this is not to be confused for security.
it does however use https so at least comms are encrypted
now for what it does do…

It obviously gets your timeline.
you can tweet!
if you write input you can also go to the menu and select twitpic, then go select an image. when you hit ‘twitPic!’ it will send the image and whatever text was in the tweet field.
when tweeting normally there is no real notification of errors in parsing etc. (except in the terminal) however if it fails to send, it will not blank the text you’ve entered. so if it goes blank, all is well (in theory). Also normal http errors will pop up in a dialog. not exactly friendly, but it won’t hide them.
it has a sort of ‘tabs’ ideas. it has the ‘timeline’ for your normal view.
it also has a mentions view, when you refresh it loads the last 20 mentions of you.
it has a direct messages view which loads last 20 views.
it also has ’search’ in this view if you put a search term in the text field and hit refresh it will return the top 20 search results.
and friends view will load the first 100 friends (no paging support yet)
if you load friends, it uses that list to auto-complete when you @reply someone.

under the menu it also has a trends view which will let you refresh the current 10 trending topics
and a public view, which loads just the public timeline.
It supports auto-refresh on the main timeline, mentions, direct messages and public timeline. The properties tab allows you to individually configure the rate of refresh, or set to 0 for no auto-refresh.

if you tap-and hold on a tweet, you get a context menu which will let you launch and URLS from that tweet, and some options to follow or unfollow the user.
all this should work on the n810 and the n900
though the n810 version looks slightly different the kinetic scrolling is courtesy of mokoui library, but it’s not as nice as the hildon panable area.
it also supports ‘gestures’ so swiping left or right will switch views through thedifferent ones availiable.
when you start scrolling the controlls dissapear to give all the screen space to tweets. you can get controls back by pressing any key or by swiping to another view
see the Maemo garage witter project

I like it.
I have one problem is that my background is black, so the black text doesn’t go to well, I’m using one of the “LCARS” themes. It seems to be an issue when the app doesn’t do what the theme suggests, but even just an invert option would solve that.
On the N810 I can’t get get it to run from the menu… from x terminal it works ok.
Is it possible to get it to cache tweets? Maybe even remember the last selected tweet when re-loading app?
yeah the obeying theme thing is something i should figure out. effectively it’s hardcoded to default themes on n810 and n900. i hadn’t considered an invert option. that might be simplest.
I have the same launch problem on the n900. I’m trying to figure out how dbus works.
cacheing tweets is possible. though you probably wouldn’5 want it to keep a local copy of everything that continually grows. i did think about storing the latest_id to attempt to r_load from where you left off.
probably ought to fix the more fundamental theme and launching problems first.
FYI, I just submitted 0.1.0-4 to the autobuilder, it contains the ability to invert the text between black and white. and it saves your choice on exit.
also I think I fixed the application launcher issue. Turns out there are some settings in the witter.desktop file which expect to launch a certain way. not sure what that is, but without those values things seem to work just fine.
Will you free (as in freedom) the code?
yes. i have a maemo garage project set up just for this purpose. I just need to figure out how to use it. hopefully sometime this week.
n900
the programm loads and loads and loads, but it didnt start. i dont know why :-/
which version?
if you open a terminal, and execute ‘witter’ does it still not load?
newest version
this is what i get if i type witter in xterminal
$ witter
Traceback (most recent call last):
File “/usr/bin/witter”, line 30, in
import hildon
ImportError: No module named hildon
Nice.
Will you be adding kinetic scrolling for N810 please?
To be honest that depends on how easy it turns out to be. on the n900 it was trivially one line.
I think on the n810 it means bringing in an extra library etc.
the diablo version doesn’t have my focus at the moment, since the n900 is shiny and new…;-)
I can’t install it.
It depends on python-hildon, but the package name on the repository is python2.5-hildon (n810)
that is fixed, i think, in extras-devel. i guess I should promote that version…
Looking great. 2 Questions
1> Does this application supports network proxy? (like will it respect the systemwide proxy settings or does it has it’s own embedded proxy settings? )
2> Any plan to extend it to other mblog service like identica?
1) I don’t know. i haven’t written any special code for it. so it depens at what level the proxy settings take effect.
2) in the current version there should be a menu option, cryptically named ‘toggle serviceType’ this swittches to using identi.ca instead. the support is very primitive. I don’t use identi.ca so I’m waiting for some to confirm that works at all. if so I’ll think about a better way of integrative support
Hello
I’ve got a little Problem with the latest build from today. It’s not possible to open URL’s in a tweet?
long press: url actions -> open url (bit.ly…something)
doesn’t do anything on my N900?
Best regards
Mike
so the url shows up in the url menu, but nothing launches?
could you run witter from the commandline and see if it gives any output when you ty to open the url?
Witter works wonderfull so I think its not the python-problem as above mentioned. The URL is shown when typing
long press: URL Actions -> bit.ly/something
But when I’m tabbing on the link nothing starts (browser etc.)
… and sorry – how can I start witter from the command line
Love the updates Daniel! BTW I like ur twitter app better than the other one.
Hey,
Where can I get this Witter app?
~Ashish
it exists in the extras-testing repository for fremantle. since it is under heavy development it is not yet in the main repo.
search talk.maemo.org and you will find details of the extra reposiitories. just bear in mind that things from extras-testing may still have bugs.
witter runs on a fairly standard n900. i got it from the extras-devel as written on maemo.org. everything runs fine but not opening a url in witter…
hmm, this one has me stumped. it’s not given me any trouble, it’s just a standard call to launch the browser
I’m writing this for my friend Michael cause his internet explorer want work right today
——————-
The problem with not opening a url out of witter still exists… I tried it again and opened witter from command-line.
Here’s a Screenshot of the terminal-messages:
http://www.abload.de/img/screenshot-20091221-13we9t.png
I hope, that will help you
Michael
the method that opens a browser looks like this:
if (self.maemo_ver==5):
print “opening browser – maemo5 style”
webbrowser.open_new(url)
else:
print “opening browser – maemo4 style”
webbrowser.open(url, context=self.osso_c)
print “We tried to open a browser”
eg there is one line of code between the two lines of output in the terminal. and it works for me, and many others. so I’m afraid I have no clue what on earth would make it fail for you. I also have no idea how to get any more information, since it clearly isn’t outputting any errors. Sorry.
I haven’t been able to get this working. It keeps saying:
Error posting tweet Server returned 401: Not authorized: check uid/pwd.
I’ve entered both user name and pwd correct multiple times without success. Twitter even locked me out for witter sending the wrong creditials too many times. I’ve even changed my pwd to something smaller in case the app has some kind of character limit, but still no go.
here is an annoying issue i haven’t figured out yet…the password field auto capitalises the first character. which can cause problems if you don’t notice it happen. i don’t know how to stop it doing this yet.
if this is the issue just enter an extra character as the start of your password then go back and delete it before hitting ok.
Hitting the shift for the first letter fixes the capitalization. This usually doesn’t happen on a password field though.
ah-ha! that means i missed a depenandcy declaration on python-hildon.
I’ll fix that. but in the meantime yo can fix it in a couple of ways. the easiest is to install any other python app that does have its dependancy set right. mething like gpodder.
alternatively you should be able to
$ sudo gainroot
$ apt-get install python-hildon
but you might need to install something to get the gainroot command.can’t remember what though.
or just wait. and at somepoint I’ll upload a new version with it fixed.
run ‘/opt/witter/witter.py’ from the terminal
Hi daniel,
i opened witter from the comand line.
when trying to open a twittered website in the terminal was shown “we tried to open a browser”
sorry, I have no idea why it would not be working for you. are you running on a fairly standard n900?
Yeah, I have this problem as well. Actually I’d like to see a direct click on the url in the tweet to open link. As it is now, there’s no way of opening an url for me.
One possibility could be different python packages. I have most of my python stuff from extras, and they differ from the devel ones.
assuming i can figure out how to launch a url based on a direct click, it would drive the same code to open a browser. so the problem would likely still exist. i’ll try to add some debug around the launhing code and maybe get some ideas as to what is failing