- KDE's file manager didn't have a plugin for Ubuntu One, like Nautilus does, so I had to use u1sdtool on the command line or the web interface to publish files and do other operations.
- It used the Gnome Keyring to store the token and I had to enter the password to it every time I logged in.
- The Control Panel was written in python and GTK and was ugly and slow under KDE.
That only leaves the dolphin integration. Unfortunately the dolphin plugin was actually the only part of apache logger's Ubuntu One for KDE project that he didn't really like. He says it is no where near production quality. I therefore decided to roll up my sleeves and write my own.
First I decided to add some context context menus so I would be able to carry out common Ubuntu One operations without the need to use the console. So created a few .desktop files to configure them and created a ruby script to run the necessary commands.
#!/usr/bin/ruby require "open3" class UbuntuOne def unsync_folder input streams = Open3.popen3 "u1sdtool --info="+input info = "" while(info != nil && !(info.include? "share_id")) info = streams[1].gets end if(info != nil) info[" share_id: "] = "" share_id = info.chomp exec "u1sdtool --delete-folder="+share_id end end def publish_file input streams = Open3.popen3 "u1sdtool --publish-file="+input url = streams[1].gets puts url url["File is published at "] = "" streams.each do |i| i.close end exec "qdbus org.kde.klipper /klipper org.kde.klipper.klipper.setClipboardContents "+url end end #arg0 is the function to call #arg1 is the file input = "" ARGV[1].each_char do |c| #put the spaces back if(c != " ") input += c else input += "\\ " end end puts ARGV[0]+" "+input if(ARGV[0] == "unsync_folder") UbuntuOne.new.unsync_folder input elsif ARGV[0] == "publish_file" UbuntuOne.new.publish_file input else puts "Something went wrong :(" end
Note the ruby script only contains methods for the commands that needed some logic.
At the moment the menu for files support :
- Publish and Copy Weblink
- Stop Publishing
- Synchronize
- Stop Synchronizing
To install the menu plugin just extract this tar ball into "home/yourusername/.kde/share/kde4/services/ServiceMenus/UbuntuOne/" and yes the tar ball was published with the plugin :)
If you have any issues or questions don't hesitate to ask.
I'm now going to take a look at apachelogger's old code for the version control plugin he wrote and the code for the git and svn dolphin plugins to see about showing what files are in sync, like nautilus does. I'm starting a job on Monday so I probably won't have the time for it for a while but I'll post it here whenever I finish it. Also on a side note I'll have to do it in C++ and I don't like C++ as a language but it'll get done ;)
I think the "Stop publish" icon function is inconsistent. They could use the default Ubuntu One emblem icons on all functions
ReplyDeleteI'll probably change it when I get the full version out as a vcs plugin. For the moment if you want you can change the "Icon=" in the .desktop files to whatever the ubuntu one icon is in /share/icons. I think its just ubuntuone.
DeleteThose "strings" which are shown like in "Stop publishing" are somehow inside "u1sdtool" or are they put there by your work?
ReplyDeleteIt could be nice to be translatable, don't you think?
I could do myself that spanish translation, but I can't figure it out how to make it upstream.
By the way, a very very large lots of "thankyous" to you for this awesome work.
Thats a great idea. Here is a form where you can translate the strings and I'll add it to the plugin later in the week :) https://docs.google.com/spreadsheet/viewform?formkey=dDdsYjFzVnBoZkdFUmh1V2Q2MEdncFE6MQ#gid=0
DeleteHi there. This is exciting news! Thank you for developing this. I look forward to reading about further integration / enhancements.
ReplyDeleteThanks for the feed back dude, I read your article on it on the blue mint. It can now be installed from within dolphin http://www.softwareontheside.info/2012/07/install-ubuntu-one-dolphin-plugin-from.html
DeleteI've cross-posted this on OpenDesktop.org :)
ReplyDeleteAfter I installed this (using the handy dandy 'Download New Services' button) I right clicked on a file to publish and got the error:
Could not find the program '~/.kde/share/kde4/services/ServiceMenus/UbuntuOne/ubuntuone.rb'
It seems that the installer creates the service menu folder as 'Ubuntu One' (with a space). Even after renaming it and removing the space I still get the ubuntuone.rb error when the file is definitely there.
Any advice is much appreciated!
Thanks for letting me know. Its pretty late here now but I promise to have a fix out sometime tomorrow on opendesktop.org and github.
DeleteIt's a bug I didn't get when I tested it after last uploading it to opendesktop.org but it usually takes some time for them to update the version going to dolphin so I must have missed it.
Sorry about that.
Fixed its on github now. (https://github.com/ShaneQful/u1-dolphin) It will be available through dolphin in a little while. (It takes some time for opendesktop.org to publish new versions to the server which dolphin grabs them from)
DeleteWeird. Even with your update I'm still getting the same problem. I'm hoping that it's OpenDesktop at fault and not me. :D
DeleteWhen I uninstall the 2.1.2 version and install the 2.1.3 version (which now shows on the OpenDesktop site) I still get the 'Ubuntu One' folder, and if I try to publish a file I get an error: http://i.imgur.com/XGjAH.jpg
If I rename the folder to 'UbuntuOne' (no space) I still get the same error on trying to publish a file: http://i.imgur.com/YKJ1L.jpg
As you can see in the screens, the ubuntuone.rb file is definitely in the folder.
Sorry its seems some of the code wasn't updated properly on opendesktop.org. The version on github is the right one I'll try fix the opedesktop.org version when I get back from work today. I'll post the tar here when I'm done so you can grab it. In case opendesktop messes up again. Otherwise if you'd like to fix it your self now.
Deletecd ~/.kde/share/kde4/services/ServiceMenus/
rm -rf Ubuntu\ One/
git clone https://github.com/ShaneQful/u1-dolphin.git
mv u1-dolphin/ UbuntuOne
In fact I may remove all the files from opendesktop and replace them with that as an install script
Ah. Only thing is, most users don't have 'git' installed on their systems. Well, I don't.
DeleteBut thanks for the fixes, I'll definitely give it a try again later once you've got it all up on OpenDesktop as it seems the easiest method.
Your probably right about that but most users don't have ruby and git is a much smaller dependency than that.
DeleteAnyway I'll let you know once I have the new version up on opendesktop.org and properly tested. I'm not very impressed with their upload it and then wait six hours before you can see if it works a approach :(
I've installed 'git' anyway to give it a whirl.
DeleteI've managed to get things going using your commands (above), but, and this may be a daft question, how do I sign in to U1? I can't fully run the U1 app as, due to a known bug, it crashes before it completes the sign-in wizard.
try u1sdtool -c also have you installed ubuntuone-control-panel-qt it works much better in kde than the other version.
DeleteYep, installed ubuntuone-control-panel-qt. It does work. It loads up and it'll let me see folders etc, but as soon as I try to add/remove a device or anything of the sort it logs me out and asks me to sign in again.
DeleteI can use the UbuntuOne folder (in the /home directory) to send files to the cloud, it's just the right click menu that doesn't seem to send anything to the cloud. Very odd.
Sounds like your have some odd connection issues with the u1 backend. Sorry but I only developed a plugin for u1. I'm not a u1 dev so I don't really know how to solve your issue. Try file a bug or an issue about:
Delete"It loads up and it'll let me see folders etc, but as soon as I try to add/remove a device or anything of the sort it logs me out and asks me to sign in again."
with the devs on launchpad.
Cool, no worries. It is a known problem with the U1 app.
DeleteI think I've got your script all working now, so all is good.
I've put a post up on G+ about how I installed it (using your commands, with a link to this site) and I'll put it in this months Full Circle Magazine (that I edit: http://fullcirclemagazine.org) :)
Thanks for all the help!
This is great for all kde users!
ReplyDeleteI just want to ask you something though... you wrote:
"Also I learned that if I switch my login manger to lightdm it with automatically unlock gnome keyring if it has the same password as my login. So that was 2 issues down especially considering I like lightdm better than the kdm anyway."
I'm using kde-wallet with kdm and having to type my password twice to open the wallet is SUCH a pain! Are you saying that if I switch to lightdm with the kde greeter it will open the wallet automatically or were u referring to gnome?
I meant the gnome keyring application but now that you mention it. I don't think I have had to type in the kde-wallet password at login in a while. So that may have fixed it or maybe I justed changed it to only ask me when it needed it.
DeleteI just installed this from git, and although I get a tray popup saying that a file was published, with the correct URL, I also get the window mentioned above, saying "Could not find the program '~/.kde/share/kde4/services/ServiceMenus/UbuntuOne/ubuntuone.rb'". This is running Kubuntu 12.10.
ReplyDeleteThanks, Martin
How exactly did you install it from git? Did you run the install script? It sounds from that error like the ruby script isn't in the right place.
DeleteCould be a genuine bug but if your could either run the install script or remove what you've done and install from inside of dolphin. I'd wager it will fix the problem.