I hope you have noticed banner above saying that I have moved my blog. Finally I decided to do that as I was really unhappy using this page. So from now on my posts can be found on http://rfobic.wordpress.com
P.S.: History has been moved as well, so if you want to add some comment please do it on the link above, as I'm not going to check the comments on this page anymore !!
Moved !!!
I have moved my blog here
Please don't leave any comments here if you want to add some comment you can follow the link above and lave your comment there. History have been moved as well2009-02-20
2009-02-18
Some Mock-up around Ubiquity
In this post I am planing to talk about new Ubiquity command I'm working on currently and share some of my thought about:

Not a long time ago I realized that I've posted about several ubiquity commands I have developed, but I never tried to share my opinion about the project in general, so I'm going to do it now. I think that Ubiquity is just Incredible way to increase usability of the browser from the one hand and usability of web services from the other hand. Another reason why Ubiquity is a really cool project is an API. Developers are able to write almost quite complex commands keeping the process amazingly simple. I'm pretty sure that one hour playing with ubiquity is quite enough for any web developer to start writing own commands. Besides wiki has a nice tutorial to get you up to speed.
Before I will start talking about difficulties I've faced, I will describe briefly the command itself.
Well actually it's not just a command, it's a set of commands for working with Bugzilla. As you might know Bugzilla has standard API for external programs that want to interact with it. Methods can be accessed via XML-RPC. So basically I tried to write Bugzilla client on top of Ubiquity. Currently commands are under the heavy development so there's not much functionality there yet, but in case if you'd like to test it or you want to look at the source you're able to do it here >> http://gist.github.com/65354
You might already guessed that the command will be quite complex one. Actually that one of the issues I've faced. While it's really simple to develop small commands, it becomes almost impossible to work on complex ones. By the small commands I mean commands which are performing one / two tasks, and accepts only one / two modifiers. To give a better understanding what I mean I will try to write some user cases.
Possible solution would be to add all of the modifiers to the get command but the bad thing about it is that then you have to calculate which modifiers have been passed and guess based on that what user meant to get info for a user or for a bug. We should keep in mind that we can confuse users that way as well as they will see all this possible modifiers. One disadvantage is that lets suppose user is confused and have typed something like:
get 156 me@email.com is user trying to find a bug or user? Well he's confused we can manage to find it out but in that case we have to add extra parsing of the user input
one more example
get bug 156* username me is user still looking for a bug or user should we suggest bugs with numbers starting with 156 or users with the names me or both ?
Obviously adding all of the modifiers is a bad solution cause in real life example it's much more complex cause you can get bug by: assignees, reporters, resolution, by report date, by target os and many more modifiers. and it's actually the same with user a user. Even worse some of them can have same modifires like user_id so if you search by assignees you're passing the user_id and you can do the same if you're looking for the users with the user_id. Sure it's possible to identify them with different names but for a complex commands it still a nightmare, and no way simple to use for end users.
Well there's another solution to use different names for actions, actually that what usually ubiquity command developers do (From what I noticed), but unfortunately here is a limitation as we can't use space separated names for actions. So the solution is to have two commands get-user and get-bug in this case most of the problems are solved but in this case it's not really natural. Unfortunately that's not acceptable as well because even this names are quite common a lot of commands can have action like get-user so in order to tide action to a target we must do something like bugzilla-get-user, bugzilla-get-bug, with each step it becomes less and less natural :(. I have to say that in case of Bugzilla command[s] it's far from the reality, you still need more and more dashes.
I was thinking about alternative solution, how to keep things more natural how to scope command sets in one namespace. I think it could be done through dynamic modifiers. I mean modifiers which can have their own modifiers. What I mean is that based on input modifier should be able to ask for some more details / more modifiers.
Lets take a look at the flow below, suppouse I am asking some person called ubiquity to do something.
I really hope you don't imagine that you have to type all this in the command line :)
Lets take a look at the same flow but if we were doing that with the commind line
What are the advantages of this kind of architecture:
- Ubiquity in general.
- Problems I've faced during development.
- Ideas how to improve

Not a long time ago I realized that I've posted about several ubiquity commands I have developed, but I never tried to share my opinion about the project in general, so I'm going to do it now. I think that Ubiquity is just Incredible way to increase usability of the browser from the one hand and usability of web services from the other hand. Another reason why Ubiquity is a really cool project is an API. Developers are able to write almost quite complex commands keeping the process amazingly simple. I'm pretty sure that one hour playing with ubiquity is quite enough for any web developer to start writing own commands. Besides wiki has a nice tutorial to get you up to speed.
Before I will start talking about difficulties I've faced, I will describe briefly the command itself.
Well actually it's not just a command, it's a set of commands for working with Bugzilla. As you might know Bugzilla has standard API for external programs that want to interact with it. Methods can be accessed via XML-RPC. So basically I tried to write Bugzilla client on top of Ubiquity. Currently commands are under the heavy development so there's not much functionality there yet, but in case if you'd like to test it or you want to look at the source you're able to do it here >> http://gist.github.com/65354
You might already guessed that the command will be quite complex one. Actually that one of the issues I've faced. While it's really simple to develop small commands, it becomes almost impossible to work on complex ones. By the small commands I mean commands which are performing one / two tasks, and accepts only one / two modifiers. To give a better understanding what I mean I will try to write some user cases.
- As a user I would like to have one command to perform all the tasks used during work-flow.
What I mean is that command should have kind of namespace? or something like a topic which you are comunnicating with ubiquity with. It should be kind of keyword to describe the target against what my actions are performed. - I want to have a set of verbs to describe what actions I am going to perform against the target
- I want to have modifires to describe what exactly the actions should do with the target.
- To keep simplicity of use I would expect that ubiquity will remember whatever I was talking about. I mean I don't like to describe all the details (modifires) in every sentence I'm writing. For example: when I am talking with a person about a bug in firefox, which occurs only on Linux, I don't repeat in the same details in each sentence during talk,
I don't say that :
I have added the comment to the bug in firefox, which occurs only on Linux, that I was not able to reproduce it.
I would rather say :
I have added the comment to the bug that I was not able to reproduce it"
As I expect that person I'm talking with still remembers what I was talking about in a previous sentence.
- I'd like to get information about bug in bugzilla system. (There can be several bugzilla systems like one from mozilla one from kde ...)
- I'd like to be able to store my sessions the way I'll be able to simply identify the origin of the bug I'm talking. I mean which bugzilla system is it coming from which.
- comment on the bug with some useful information (again in particular bugzilla session )
- I'd like to get information about user (can get user by username, email ) again in particular bugzilla session )
- actions : get, comment
- actual data : information
- modifires : bug, session, user, username, email
Possible solution would be to add all of the modifiers to the get command but the bad thing about it is that then you have to calculate which modifiers have been passed and guess based on that what user meant to get info for a user or for a bug. We should keep in mind that we can confuse users that way as well as they will see all this possible modifiers. One disadvantage is that lets suppose user is confused and have typed something like:
get 156 me@email.com is user trying to find a bug or user? Well he's confused we can manage to find it out but in that case we have to add extra parsing of the user input
one more example
get bug 156* username me is user still looking for a bug or user should we suggest bugs with numbers starting with 156 or users with the names me or both ?
Obviously adding all of the modifiers is a bad solution cause in real life example it's much more complex cause you can get bug by: assignees, reporters, resolution, by report date, by target os and many more modifiers. and it's actually the same with user a user. Even worse some of them can have same modifires like user_id so if you search by assignees you're passing the user_id and you can do the same if you're looking for the users with the user_id. Sure it's possible to identify them with different names but for a complex commands it still a nightmare, and no way simple to use for end users.
Well there's another solution to use different names for actions, actually that what usually ubiquity command developers do (From what I noticed), but unfortunately here is a limitation as we can't use space separated names for actions. So the solution is to have two commands get-user and get-bug in this case most of the problems are solved but in this case it's not really natural. Unfortunately that's not acceptable as well because even this names are quite common a lot of commands can have action like get-user so in order to tide action to a target we must do something like bugzilla-get-user, bugzilla-get-bug, with each step it becomes less and less natural :(. I have to say that in case of Bugzilla command[s] it's far from the reality, you still need more and more dashes.
I was thinking about alternative solution, how to keep things more natural how to scope command sets in one namespace. I think it could be done through dynamic modifiers. I mean modifiers which can have their own modifiers. What I mean is that based on input modifier should be able to ask for some more details / more modifiers.
Lets take a look at the flow below, suppouse I am asking some person called ubiquity to do something.
- me: Can you please make a comment to a bug ?
- ubiquity: What should be the text ? (Asks input for comment)
- me: "I'm not able to reproduce it"
- ubiquity: Suppose you're mean bug 146 or might be its one from 846, 400, 8942 (assumes that I'm talking about the bug I mentioned last time, but also suggests me some other bugs we've talked recently)
- me: bug 846
- ubiquity: so you mean bug 846 in mozilla (verifyes that I am talking about mozilla bugs as we talked about them last time)
- me: and attach screenshot please
- ubiquity: dou you like this one ??
- me: perfect
I really hope you don't imagine that you have to type all this in the command line :)
Lets take a look at the same flow but if we were doing that with the commind line
- bugzilla connect
I started typeing "bugzilla co" as there are two actions (1. connect 2. comment) targeting bugzilla command ubiquity completes input with "bugzilla connect" because connect was used more recently. At the same time ubiquity selects auto-completed part to allow user go on with typing, it as well adds "comment" action to the suggestions.
in case if I press button:- right arrow / enter / tab
in this case ubiquity will request / verify next modifier (there will be more details in the next slides) - down arrow
in this case we'll have picture described in the 2nd list item.
- right arrow / enter / tab
- bugzilla comment (text)
ubiquity will autocomlete word "comment" and will show that it expects text input by adding and selecting "(text)" in case of having selected text in the browser selection will be inserted and selected instead, if there is some data in the clipboard as well it will be suggested as an input through suggestions
in case if I:- I will stop typing / will make delay
in this case we'll have picture described in the 3nd list item. - will press button right arrow / enter / tab
in this case we'll have picture described in the 3nd list item. - will press button left arrow
action "comment" will be selected and the other bugzilla targeted actions will be suggested. In the preview help for the comment function will appear. in case of choosing other action all the following modifiers will disappear. - will press down arrow
in case of having suggestions will switch input data according to the suggestions
- I will stop typing / will make delay
- bugzilla comment " I'm not able to reproduce it" on a bug 146
Ubiquity auto-completes with "on a bug 146" ("on a bug" is a prefix for modifier-bug). Selecting "146" as it's a modifier-bug accessed most recently, ubiquity verifies that I'm still interacting with it, at the same time it still gives me ability to type the id manually. It adds other bugs into suggestions 846, 400, 8942 as they've been recently used. Ubiquity suggests everything it has in history as the whole modifier is selected in this case. In the preview information for the currently selected bug (146) is shown.
in case if I press button:- 8
Ubiquity will auto-complete it with "46" (as it's was accessed more recently then 8942) and will select auto-completed part (46). In the suggestions only 8942 will show up as it's an only matching bug id from the history. In the preview information for the currently selected bug (846) is shown. - right arrow / enter / tab
in this case ubiquity will request / verify next modifier - down arrow
in this case we'll have picture described in the 4th list item (as the first suggestion is 846). - left arrow
input " I'm not able to reproduce it" will be selected in case of having selection, clipboard data they will be suggested.
- 8
- bugzilla comment " I'm not able to reproduce it" on a bug 846 in session mozilla
Ubiquity auto-completes with "in the session mozilla" ("in the session " is prefix for modifier-session). Ubiquity verifies that it needs to use mozilla as modifier-session as it was used most recently. It also adds all the available sessions in suggestions cause whole modifier is selected. (kde, eclipse) At the same time in preview it shows info for mozilla session. (user, url)
in case if I press button:- e
Ubiquity will auto-complete it with "eclipse" (it's wasn't accessed more recently then kde but it allows to go on typing unlike "kde") and will select auto-completed part ("clipse"). In the suggestions only "kde" will show up as it's an only matching session. In the preview information for the currently selected session (eclipse) is shown. - right arrow / tab
in this case ubiquity will put cursor in the end of the line and will show all possible (optional) modifiers in the suggestion. - down arrow
will select "kde" as a session and will select only matching part of it "e" - left arrow
modifier-bug "846" will be selected in all possible suggestions will be suggested. - enter
Will add a comment to the bug
- e
- bugzilla comment " I'm not able to reproduce it" on a bug 846 and attach (data)
I have typed at as I wanted to attach file with a comment. Ubiquity did not suggested attach-modifier as it's an optional. but when I type "at", it auto-completes it with "and attach (data)" where "and attach " is a prefix for the attach-modifier. "(data)" got selected. Ubiquity suggests clipboard, screen-shot in the suggestions as that are the magic words which attach-modifier can take as an input.
What are the advantages of this kind of architecture:
- All the commands performing the actions against one target can be scoped by the namespace. Actually it can be a one command.
- Command Modifiers can have their own modifiers, that makes it possible to create better abstraction layer of the services on top of the Ubiquity.
- Modifiers have are ordered in a logical way, and some of them can be optional, value of one modifier can automatically make useless use of another modifier.
- Makes commands more closer to the natural language, cause in this model modifier is modeled as a sentence. Use of prefixes, suffixes makes it much easier to represent in more human way (it's even more important in some languages where suffix / prefix can change whole meaning of the sentence)
- Modifier is having step by step dialog with a user, keeping user focused more on the step rather on the end result.
- Asks user for input only in case if there is no other way
- User types only the data no modifier names.
- Ubiquity uses history to make discussion more intuitive. (Actually it's possible to do it even now through commands but think it might have a sense to expose this functionality some in some standard manner to the developers)
2009-02-01
Mozshell
In this post I am going to write about one of my projects, which I presented at FOSDEM, during Mozilla lightning talks. Unfortunately I had not enough time to give a good idea what what is MozShell and what potential it has...
For several years already, I'm working with XUL and JavaScript in differnt companies and different applications. I think every extension / xulrunner developers will agree that there are no reliable tools for our hard job, what makes development process slower and more complicated. Well there are tools like Venkman and Chrome bug, but if you can can make them work on Firefox, you will never manage to make them work properly on other third party XULRunner based applications. Even if you will it's quite different from having well integrated tool into your primary editor. So that's how I got inspired to write an extension for Komodo Edit which add's JavaScript shell and Object inspector to the editor. It is not just another js shell among hundreds of others. It is quite unique with its architecture and really interesting features. MozShell is focused on xulrunner / extension developers, it gives ability to create remote connections to (any xulrunner based) applications, no meter if they are running on the local machine, or different remote, or even virtual machines. You can evaluate JavaScript during run-time, Inspect Objects, etc.. Because of the name some people might confused, integration with an editor makes it completely different from what we call shell but at the same time experimental interface makes it much easier and fast to use.
Extension is still on the very early stage of development but still you can gibe it a try and give some feedback!!
Project of caurse is an open source and can be found here.
For several years already, I'm working with XUL and JavaScript in differnt companies and different applications. I think every extension / xulrunner developers will agree that there are no reliable tools for our hard job, what makes development process slower and more complicated. Well there are tools like Venkman and Chrome bug, but if you can can make them work on Firefox, you will never manage to make them work properly on other third party XULRunner based applications. Even if you will it's quite different from having well integrated tool into your primary editor. So that's how I got inspired to write an extension for Komodo Edit which add's JavaScript shell and Object inspector to the editor. It is not just another js shell among hundreds of others. It is quite unique with its architecture and really interesting features. MozShell is focused on xulrunner / extension developers, it gives ability to create remote connections to (any xulrunner based) applications, no meter if they are running on the local machine, or different remote, or even virtual machines. You can evaluate JavaScript during run-time, Inspect Objects, etc.. Because of the name some people might confused, integration with an editor makes it completely different from what we call shell but at the same time experimental interface makes it much easier and fast to use.
Extension is still on the very early stage of development but still you can gibe it a try and give some feedback!!
Project of caurse is an open source and can be found here.
2009-01-19
Ubiquity command Say
So It's being a long time I haven't posted anything and bla bla bla... (Not going to go on with this useless text). Finally I managed to work on something interesting and think it makes sense to blog about it...
So the topic will be another Ubiquity command, which I implemented recently. I got inspiration from the command line tool on OSX, called "say". For some of you who had not seen this app it just an app which converts text to speech.
I wanted to play with the new cool feature of the Firefox 3.1 Video & Audio elements. Besides I noticed some noise regarding some restrictions to this elements so I was ready to try out everything by my own to have personal opinion if this restrictions are good idea or not. (well I had my opinion but I was not sure)
Here are some links from this discussion
http://www.bluishcoder.co.nz/2008/11/video-audio-and-cross-domain-usage.html
http://blog.mozilla.com/schrep/2008/08/08/building-the-world-we-want-not-the-one-we-have/
http://ajaxian.com/archives/video-audio-cross-origin
Well I had an idea, had cool new feature to play with. Only thing that I was missing was some online free text-to-speech service I could use for that. It appeared quite hard to find cause most of the services were non free. Among the free once some had pure quality, and the rest were using unsupported (by new elements) audio formats. I was really close to give up on this this idea after 6hrs of googleing, when another idea came to my mind it was bit sneaky, but still it was not illegal so I decided to go for it. The idea was to use demo pages for the non free text-to-speech services. Most of the restrictions for this sites are restricting API's for the use from other domains. But non of them are restricting to open their pages in the browser without showing the content of the page to the user :) Think most of you got the point.
Finally I found service which could feet my needs >:)
http://www.research.ibm.com/tts/coredemo.shtml
As you might imagine there was a restriction to the service. It was possible to convert only 200 chars at a time. Well it just made my work more interesting only thing I had to do was to build a play-list from the selection to pronounce. It could be a very simple (thanks to the event listeners you can set to the video element), but I suddenly discovered that there was restriction to the video element even for the use from chrome. Well this made me very upset, I did not liked idea of restrictions at all but restriction for the use from chrome is even more stupid from my point of view. I could not believe that I was not able to play audio from the remote server, I thought I was doing something wrong, but apparently I was not :( So I went back to the old ugly but tested way of using plugins. Unfortunately I was not able to convert more then 200 char length text but still it was cool command and still useful for me, as my goal was to find how to pronounce words i don't know correctly. (As you might guess from the part you've already read my English is quite poor and of course I'm not native English speaker).
I was not satisfied, so I was searching the way for work around it... And there was a quite simple way :). If you are using beta or nightly of Firefox 3.1 you might noticed that wav, ogg files are opened by Firefox in a new tab in the Video tag (No matter if the file is local or remote one) :) If some of you did not got the idea yet it is - an iframe where you load remote wav files. That's what I did basically say command on preview creates hidden iframe inside the preview block, and is loads there the wav files which was generated by text-to-speech service. As I did not liked the restriction of the 200 chars I am splitting selected text into the parts, where each part contains several complete words and it's length is <= 200 chars. While loading each part into the hidden iframe I also set event listener to the video tag inside the iframe to load next part in the farme when the video element will finish playing.Unfortunately it was not the last hack as I discovered soon that the text-to-speech service I mentioned above had a restriction on the server as well. (They block ip for their service after heavy use of the service). In this case solution was simple I just jumped to another service with bit worth API and without this restriction. Cool thing is that in this case restriction from 200 chars had grew till 300 chars. To avoid the new restrictions from the service owners I will not mention it in this blog!
After all this you can enjoy nice Ubiquity command Say.
If some of you want look for the source you can get it here
http://gist.github.com/41328
As the result I will say that I think that I hate restriction to the video tag, but I'm going to post about it in the next post.
Labels:
firefox,
HTML 5 video element,
text-to-speech,
ubiquity
2008-11-14
ubiquity command dictionary
Another nice command for ubiquity !!!
Well the verb = command is called dictionary and it can handle selection or just typed text and will translate it to languge specified from the language specified. Well almost the vay like built in translate command works. You can ask then why do we need another one ??
Well the thing is that google translate is pretty nice with translation of the text, while it sucks if you want to translation just a one word. You will fill it even more if the word is technical or scientific one. In that case ordinary dictionaries are mutch better llike lingvo stardict etc.. they also suggest several options again unlilke google. At least my sweet angel was having this problem so I decided to make this verb for her.
The second reason is as I am a Georgian and google tarnslate not (hopefully yet) support that languge it makes sence to me, to have a georgian > english, english > georgian dictionaries. Theres really nice georgian web resource translate.ge which is a online dictionary with nice API.
Because of all this reasons I decided to create this verb. Unfortunataly API of http://www.translate.ge and http://www.lingvo.com/. So I had to use different approach acording to the languge text to be translated from and translated to... Even worth while having nice API on the Georgian resource wheer results ar returned as an html containing only the actual translation second site opens a new page with bunch of stuff to be parsed :(
Anyway command is ready for use. There are still some minor issues related to the second page because of API and there also something I'm going to improve in the future. But still current version is quite stabil and does its work so give it a try and post back a feeback
Some Tips
By the default verb translates from english to georgian, but it's possible to change this behavior and set default for example french to russian. If you want to do so you need to type in the address bar of your firefox "about:config" after warning message you should see a sort of grid. That's your firefox preferances. what we whant to do to add two new preferances for defaults of our ubiquity command. to do so hust right click and choose New > String in the popup
and then add
Preferance name : ubiquity.commands.Dictionary.from
value : (can be any from ) georgian, english, russian, german, french, italian, spanish
and then teh same
Preferance name : ubiquity.commands.Dictionary. to
value : (can be any from ) georgian, english, russian, german, french, italian, spanish
P.S.: take in mind that currently you can translate from georgian to english as the other way round and from russian to any from the above or otherway rounf from any of above to russian
Labels:
dictionary,
firefox,
javascript,
lingvo,
translate.ge,
ubiquity
2008-11-07
Picasa Photo Viewer (Linux port) - Updated
Some of you tried to use Picasa Photo Viewer Which I have posted Previously.
Some of you even had a problems with installation. The thing is that Google also realize port for Picasa 3 Beta for Linux which you can get here. Great news but only sad thing about it is that thay did not ported Picasa Photo Viewer which is a great peace of Software by it's own (At least I think so). Even more as I expected that the port of Picasa Photo Viewer would happen the same time with as Picasa 3 by google I marked my package non compatible with it. (To avoid useless garbage on your HDD). Well as some of you are having some problems with installation and I wanted to use Edit with picasa button which was broken in the previous build I decided to make another port which will use an actual Picasa Photo Viewer in the Picasa 3 Package with google. It means no garbage on HDD, no dependency on wine (Well Picasa has a modified wine itself), not compatible with Picasa > 3.0. It also shoud replace previous installation, if was one. Of caurse it requires Picasa 3.
I would defenataly advice everyone who used this package before or picasa 2, to move to the Picasa 3.

Related Links:
Picasa 3 Beta for Linux (need to be installed to use Picasa Photo Viewer)
Picasa Photo Viewer (Updated to 1.0.2. Requires Picasa 3)
Previous version of Picasa Photo Viewer (doesn't requires Picasa but conflicts with 3.* version)
Updated
I received several questions on how to set Picasa Photo Viewer as a default photo viewer. As most of the people use KDE or GNOME the instructions can be different.
If you are KDE user it's reasonably easy. You have to go to
System Settings > Advanced (tab) > File Associations
There you can set default app per file type
If you are the GNOME user not sure if there some GUI to set default apps for file types, but another simple way can be right click on the file (with file type you want to associate with Picasa Photo Viewer), in the pop-up
Open with > Open with other application... > Use a custom command > PicasaPhotoViewer
Unfortunately that's the step to repeat for each file type you want to associate
Some of you even had a problems with installation. The thing is that Google also realize port for Picasa 3 Beta for Linux which you can get here. Great news but only sad thing about it is that thay did not ported Picasa Photo Viewer which is a great peace of Software by it's own (At least I think so). Even more as I expected that the port of Picasa Photo Viewer would happen the same time with as Picasa 3 by google I marked my package non compatible with it. (To avoid useless garbage on your HDD). Well as some of you are having some problems with installation and I wanted to use Edit with picasa button which was broken in the previous build I decided to make another port which will use an actual Picasa Photo Viewer in the Picasa 3 Package with google. It means no garbage on HDD, no dependency on wine (Well Picasa has a modified wine itself), not compatible with Picasa > 3.0. It also shoud replace previous installation, if was one. Of caurse it requires Picasa 3.
I would defenataly advice everyone who used this package before or picasa 2, to move to the Picasa 3.

Related Links:
Picasa 3 Beta for Linux (need to be installed to use Picasa Photo Viewer)
Picasa Photo Viewer (Updated to 1.0.2. Requires Picasa 3)
Previous version of Picasa Photo Viewer (doesn't requires Picasa but conflicts with 3.* version)
Updated
I received several questions on how to set Picasa Photo Viewer as a default photo viewer. As most of the people use KDE or GNOME the instructions can be different.
If you are KDE user it's reasonably easy. You have to go to
System Settings > Advanced (tab) > File Associations
There you can set default app per file type
If you are the GNOME user not sure if there some GUI to set default apps for file types, but another simple way can be right click on the file (with file type you want to associate with Picasa Photo Viewer), in the pop-up
Open with > Open with other application... > Use a custom command > PicasaPhotoViewer
Unfortunately that's the step to repeat for each file type you want to associate
2008-10-23
Ubiquity command for JIRA & Crucible
So...
I don't post a lot unfortunately, the reason is that I dont really have time to play with some interesting stuff to post about it later :( But fortunataly I found some time for creating ubiquity command.
I have to work a lot with JIRA & Crucible on my current job. So I decided to simplify this process somehow :)
I was thinking about this already for a long time... I also wanted to cheack out Ubiquity from the development side, so I decided to give it a try. I followed quite nice tutorial, to be honest I was amazed to see such a complete one. Ususally it's comletely differnet when dealing with mozilla.
Result seems to be quite nice at least it is what I was targeting to you can give it a try if you are also dealing with jira or crucible. Actually there are some other Ubiquity command related to the JIRA but they seem to be site specific and settings are hardcoded. In with this command you can set your jira / crucible URL and enjoy it.
Subscribe to:
Posts (Atom)
