tag:blogger.com,1999:blog-36816985625606300532024-03-12T18:14:48.642-05:00KDE StuffNamShubhttp://www.blogger.com/profile/17964780621543446539noreply@blogger.comBlogger8125tag:blogger.com,1999:blog-3681698562560630053.post-92025671737327602672010-02-22T10:43:00.002-05:002010-02-22T10:48:53.433-05:00Plasma Javascript Contest.I'd forgive you if you thought this blog was dead.<br /><br />(The Konqueror Userscript plugin is on standby, I do not have a KDE4 dev environment anymore and I do not really use Konqueror no more.)<br /><br />I am entering in the Plasma Javascript Contest, so the focus of this blog will be on discussions about various oddities and problems of the plasma javascript apiNamShubhttp://www.blogger.com/profile/17964780621543446539noreply@blogger.com1tag:blogger.com,1999:blog-3681698562560630053.post-29758708385089685682007-11-30T22:32:00.000-05:002007-11-30T23:52:21.240-05:00Latest news from Konqueror UserscriptsHi everyone. (anyone? :P)<br /><br /><span style="font-style: italic;">(Read on to see a video of the Konqueror Userscript Plugin in action...)</span><br /><br />I spent some time today to fix a few issues to the khtml_userscript plugin for Konqueror (think of it as GreaseMonkey for KDE) and it now works to a point where I think its usable.<br /><br />The installer now works. It can be used with:<br /><ul><li>The builtin binary "khtml_userscript_installer"</li><li>Clicking the Tools => User Scripts => Install Script button in Konqueror</li><li>Double-clicking a *.user.js file in dolphin / konqueror</li></ul>Also there is a <span style="font-weight: bold;">very dumb</span> greasemonkey compatibility script that gets installed. Right now it does *nothing* but provides the few functions GreaseMonkey provide. At least scripts that use the GM_log() function do not throw any errors anymore... (All other functions are likely to fail)<br /><br />Internally, we don't use KJS anymore. KHTMLPart now provides a very handy executeScript() function. Basically the Konqueror Userscript plugin is simply an UI on top of this method...<br /><br />Lots of issues remaining though: the status bar icon is not deleted so after browsing for a while you'll see 20 instances of the icon. Also the "Manage User Script" is still read-only (it shows the good information but no editing works).<br /><br />For those of you who wonder what exactly is khtml_userscript, I made a small screencast that shows a few features. You can see it below, some explainations will follow...<br /><br /><br /><object height="350" width="425"><param name="movie" value="http://www.youtube.com/v/Q7Jxs5l6Y8o"><embed src="http://www.youtube.com/v/Q7Jxs5l6Y8o" type="application/x-shockwave-flash" height="350" width="425"></embed></object><br /><br /><br />First I install a user script from the konqueror "Tools => Konqueror UserScripts" menu. I install a script that was used in the previous example by neofreko. It highlights all link with a red border.<br /><br /><pre>// ==UserScript==<br />// @name KHTML Userscript (kuskus) Test<br />// @version 0.1.1<br />// @namespace http://www.kde.org<br />// @author Akhmad Fathonih<br />// @description Change links in red, only for testing<br />// @include *.kde.org*<br />// @exclude *.google.com*<br />// ==/UserScript==<br /><br />var elms = document.getElementsByTagName("a");<br />//alert(elms.length);<br /><br />for(var i=0;i<elms.length;i++) {<br /> elms[i].style.color="red";<br /> elms[i].style.border="1px solid";<br />}<br /></pre><br /><br />Then I install another userscript that acts on planetkde.org. In this one, all the image of class "hackergotchi" are replaced with another image and I add a h1 element at top of the page that says "Planet Thumbs Up!"<br /><br /><pre>// ==UserScript==<br />// @name KHTML Userscript Test in PlanetKDE<br />// @version 0.1.1<br />// @namespace http://www.kde.org<br />// @author Mathieu Ducharme<br />// @description<br />// @include *.planetkde.org*<br />// ==/UserScript==<br /><br />var imgs = document.getElementsByTagName("img");<br />//alert(elms.length);<br /><br />for(var i=0;i<imgs.length;i++) {<br /> if(imgs[i].className == 'hackergotchi') {<br /> imgs[i].src = 'http://upload.wikimedia.org/wikipedia/commons/thumb/2/2c/Thumbs_up.jpg/420px-Thumbs_up.jpg';<br /> }<br />}<br /><br />var h2 = document.getElementsByTagName('h2')[4];<br />var txt = document.createElement('h1');<br />txt.innerHTML = 'Planet Thumbs Up';<br /><br />h2.parentNode.insertBefore(txt, h2);<br /></pre>NamShubhttp://www.blogger.com/profile/17964780621543446539noreply@blogger.com6tag:blogger.com,1999:blog-3681698562560630053.post-42804865302926254672007-07-18T07:13:00.000-05:002007-07-18T07:22:51.867-05:00Argh. I recently had to re-install my computer but totally forgot to backup the kde4 directory where I had a bit of uncommitted work.<br /><br />This is a shame because I was *this* close to having neat stuff to show. Live & learn...<br /><br />However a new little feature has been saved since last post, that is a strigi line analyzer for userscript file. It is in the khtml_userscript svn repository. Strigi is really cool to work with, however I chose not to include any Qt stuff and I must say that I missed QString's functionality. Not having Qt I remembered why so many people hate C++ :)<br /><br />Still no work in the core, though. I had fixed the installer to actually work & be useful and started some work on the core / greasemonkey compat script but they're gone now :(<br /><br />I also wrote a .gp4 (Guitar Pro 4) strigi analyzers for use in KTabEdit (the new, improved KGuitar) that was lost. I wonder if KFileMetaInfo actually feeds automatically from Strigi. If yes we could delete all the custom file-metadata-loading code and simply feed from KFileMetaInfo. Something to look for...<br /><br />Sorry for the disorganized post, and lack of interesting updates.NamShubhttp://www.blogger.com/profile/17964780621543446539noreply@blogger.com0tag:blogger.com,1999:blog-3681698562560630053.post-33809999139131462162007-06-19T09:00:00.000-05:002007-06-18T16:25:43.843-05:00How to test strigi analyzers?Yea, a call for help on a blog...<br /><br />If you remember the first post on this blog was about a nzb KFileMetaInfo plugin that I wrote. Lucky that I am, the entire KFileMetaInfo functions was dropped from KDE4 a few weeks later, superceded by <span style="font-weight: bold;">strigi</span>.<br /><br />I am currently in the process of converting this plugin to a strigi based plugin, as well as a few other file formats (more on those later).<br /><br />Although I would say the "barrier to entry" for strigi is a bit higher that for KFileMetaInfo, it is a very easy framework to work with. However, I expected metadata from strigi to be shown in <span style="font-weight: bold;">dolphin</span>, the new File Manager for KDE4.<br /><br />But it's not. So far the only way to test strigi analyzers in the "xmlindexer" binary, which works fine but doesn't give a real sense of the purpose of it all.<br /><br />So, where is strigi used in KDE4, and how do I see it?NamShubhttp://www.blogger.com/profile/17964780621543446539noreply@blogger.com0tag:blogger.com,1999:blog-3681698562560630053.post-72337389204268077302007-06-18T16:04:00.000-05:002007-06-18T16:15:29.106-05:00Konqueror Userscripts - Coming soon to a KDE4 desktop near you.Well I'm not dead, but I would understand if you thought I was, given it's been 5 month since the last post on this blog.<br /><br />And (even better?), the KHTML Userscript plugin to provide Greasemonkey compatibility to Konqueror is not dead either. In fact, lots have happened since january.<br /><br />I'll post new screenshots and maybe a screencast (since those are all the rage in kde4 these days... which is cool). For now, just some instruction on how to build it.<br /><br />1. You should have a working KDE4 environment with kdebase, because you will obviously need konqueror.<br />2. svn co svn://anonsvn.kde.org/home/kde/trunk/playground/utils/khtml_userscript<br />3. cmake (cmakekde, if you run the scripts from techbase)<br /><br />Please play around with the installer and test as many scripts from userscripts.org as possible. Right now there is *NO* compatibility layer so every GM_* functions from the scripts are very likely to fail, as well as anything using firefox-only functions, such as xpath.<br /><br />If you want to help with these issues, let yourself known! :)NamShubhttp://www.blogger.com/profile/17964780621543446539noreply@blogger.com1tag:blogger.com,1999:blog-3681698562560630053.post-51494399610165309052007-01-20T09:00:00.000-05:002007-01-19T07:14:12.762-05:00More work on Konqueror's User ScriptsI'm currently reading as much doc as I can on KJS, KHTML and related parts so I can evaluate what's needed for full GreaseMonkey support in the <a href="http://namshub-kde.blogspot.com/2007/01/userscript-for-kde4.html">Konqueror User Script Plugin</a>. I won't attack the "core" until I know exactly what I'm doing so I worked a bit on the "shell" (namely, the user interface)<br /><br />Since the goal of this plugin (code named <a href="http://blog.neofreko.com/index.php/2007/01/13/qregexp-greedy-non-greedy/">Kuskus</a>, btw) is to replicate GreaseMonkey's functionality, the first step was to replicate its UI. GM basically offers 2 things:<br /><ul><li>A Script Manager</li><li>A Status Bar icon (which duplicates the "Tools" menu entry)<br /></li></ul>I thought the preferred KDE way of designing dialogs was to create .ui files, so I did. Here's the (final?) mockup:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRXyKIJc60c/RbCySPInt4I/AAAAAAAAAAk/rqwL3dD9QP8/s1600-h/userscript-manager-mockup.png"><img style="cursor: pointer;" src="http://2.bp.blogspot.com/_PRXyKIJc60c/RbCySPInt4I/AAAAAAAAAAk/rqwL3dD9QP8/s400/userscript-manager-mockup.png" alt="" id="BLOGGER_PHOTO_ID_5021709610888181634" border="0" /></a><br /><br />I think it looks a bit more tidy than the original GM dialog. That's subjective, of course.<br /><br />I also added a menu entry under "Tools". Right now it shows the script(s) that were activated for the page as well as the option to enable/disable the plugin.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_PRXyKIJc60c/RbC1KPInt5I/AAAAAAAAAAw/k-aZg1LaSec/s1600-h/userscript-menu.png"><img style="cursor: pointer;" src="http://2.bp.blogspot.com/_PRXyKIJc60c/RbC1KPInt5I/AAAAAAAAAAw/k-aZg1LaSec/s400/userscript-menu.png" alt="" id="BLOGGER_PHOTO_ID_5021712771984111506" border="0" /></a><br /><br />So although it still is as dumb as before (only execute scripts) at least the UI front is progressing.<br /><br />Next steps: the status bar icon, manager integration, and GHNS.NamShubhttp://www.blogger.com/profile/17964780621543446539noreply@blogger.com7tag:blogger.com,1999:blog-3681698562560630053.post-73966441322381719942007-01-19T09:00:00.000-05:002007-01-18T11:06:38.231-05:00Userscript for KDE4I love KDE. I use it every day, at home, at work, on the laptop, everywhere I can. The desktop feels right, Kate, Quanta, Amarok and others are just the best of their categories, and it's suuuper fast.<br /><br />However I must admit Firefox is still my web browser of choice. I actually do prefer *using* Konqueror (faster, better UI imho), but when it comes to HTML/CSS rendering and JavaScript parsing, sometimes I just need to use Firefox. 3 reasons, really<br /><ul><li>Better rendering of websites. I'm not saying Konqueror sucks, I'm just saying that web designers do not target or test for Konq.</li><li>Better JavaScript parsing. While rendering feels much faster in Konqueror, JS code execution feels waaaayy faster in FF. Also, many scripts just work better. FCKEditor, amongst others</li><li>Extensions. I actually don't care that Firefox has a million extensions, but three of them are now essential:</li><ul><li>AdBlock</li><li>FireBug</li><li>GreaseMonkey</li></ul></ul>Since 3.5, there is now an ad blocker plugin for Konqueror. Works great so far, hopefully the KDE4 version will support FilterSet.G -- Not a reason to use FF anymore<br /><br />As a web developer, FireBug is a god-send. It turns Firefox in a very nice Javascript/CSS debugging environment. The next version will be absolutely amazing. Nothing close exists for Konqueror. Seriously, this is the best plugin ever. -- Until there is a similar tool, I will need to use Firefox at work.<br /><br />Coincidentally, GreaseMonkey is also the best plugin ever. All it does is allow to run custom scripts on a given website. Why is that great? All those annoying behaviors on certain websites can be fixed with custom javascript, and their features can be extended. A gigantic amount of cool scripts already exists on <a href="http://www.userscripts.org">http://www.userscripts.org</a><br /><br />So I was *very* happy when I saw a <a href="http://www.kde-apps.org/content/show.php?content=51482">small plugin appears on kde-apps.org</a> that runs custom user scripts. <a href="http://blog.neofreko.com">Neofreko</a> did a very cool job laying out the concept, for KDE3. Basically, a khtml plugin scans for js file in a given directory, parses their metadata and attaches the javascript to the page. Quite different from the actual GreaseMonkey plugin (which is written in XUL/JavaScript) but works none the less.<br /><br />In all honesty, I couldn't compile it because of my broken Kubuntu installation so I thought, hey, why don't I just port this to KDE4/Qt4/CMake? Since the script was only a few lines it was quite easy and fast, and now there is hope for user script support in KDE4.<br /><br />Here's a first screenshot of Konqueror (KDE4) running neofreko's sample script<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRXyKIJc60c/Ra8Cu_Int3I/AAAAAAAAAAY/LjNDFbQUQz8/s1600-h/kde4-khtml-userscript.png"><img style="cursor: pointer;" src="http://4.bp.blogspot.com/_PRXyKIJc60c/Ra8Cu_Int3I/AAAAAAAAAAY/LjNDFbQUQz8/s400/kde4-khtml-userscript.png" alt="" id="BLOGGER_PHOTO_ID_5021235115786221426" border="0" /></a><br /><br />Sample script:<br /><br /><span style="font-family:courier new;">var elms = document.getElementsByTagName("a");</span><br /><br /><span style="font-family:courier new;">for(var i=0;i<elms.length;i++)></elms.length;i++)></span><br /><span style="font-family:courier new;"> elms[i].style.color="red";</span><br /><span style="font-family:courier new;"> elms[i].style.border="1px solid";</span><br /><span style="font-family:courier new;">}</span><br /><br />This is still in "Proof Of Concept" stage; right now it simply executes any script matching the domain, it does not offer any of the GreaseMonkey functions (mostly, the cross-site XMLHttpRequest object) and is not optimized or secured in any form. But I believe both neofreko and I are committed to delivering this plugin and adjusting it to meet KDE's quality.<br /><br />Our goal for now is full compatibility with existing GM scripts. It remains to be seen if it can be achieved.<br /><br />It should appeared in KDE svn soon (watch for it in trunk/playground/base). Stay tuned!NamShubhttp://www.blogger.com/profile/17964780621543446539noreply@blogger.com0tag:blogger.com,1999:blog-3681698562560630053.post-9868127378503366622007-01-17T07:36:00.001-05:002007-01-18T00:14:54.906-05:00nzb support for KDEA few days ago I hacked a very simple plugin for KDE to provide support for .nzb files meta-information. It is a small kfile-plugin which I based on mpyne's torrent plugin (only mine is much, much simpler since the file itself is a simple xml)<br /><br />It also meant that I created a small .desktop file to create the application/x-nzb mimetype so nzb file actually gets recognized as such by konqueror.<br /><br />I basically took the nzb xml parser from klibido and adjusted it to parse only the info needed. It's not fast or optimized but I don't think it needs to be. The following (meta) information is retrieved from the file:<br /><ul><li>Number of files</li><li>Total Size</li><li>Oldest File</li><li>Group(s)</li></ul>Here is a screenshot: wooooohaa.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_PRXyKIJc60c/Ra8Bo_Int2I/AAAAAAAAAAM/Q35MoAgnBz8/s1600-h/kde4-kfile_nzb.png"><img style="display:block;margin: 0pt 10px 10px 0pt; cursor: pointer;" src="http://4.bp.blogspot.com/_PRXyKIJc60c/Ra8Bo_Int2I/AAAAAAAAAAM/Q35MoAgnBz8/s320/kde4-kfile_nzb.png" alt="" id="BLOGGER_PHOTO_ID_5021233913195378530" border="0" /></a><br /><br />I'll be commiting those changes in trunk/kdenetwork/kfile-plugins in the next days.<br /><br /><span style="font-weight: bold;">What are NZB files?</span><br />.nzb are "NewzBin Usenet Index" file. They are meant to reference usenet posting. Good tools for linux that supports nzb files are KLibido, nzbperl and hellanzb.<br /><br /><span style="font-weight: bold;">What's next?</span><br />Hopefully, support for those files in KNode as well as KGet... (?)NamShubhttp://www.blogger.com/profile/17964780621543446539noreply@blogger.com6