Monday, June 22, 2009

KWin tiling ratios and orientations...


... now with minimize support.

KWin tiling has been proceeding forward at a steady rate. If you check out the latest revision, you will not only have a pretty stable experience, but will also get a design document for free.

So orientation is horizontal and vertical, and ratio is how much space the left child gets. Using these two properties I expect to be able to do most layouts. For now you can use D-BUS calls to actually use tiling pretty well.

Here are the calls



qdbus org.kde.kwin /KWin slotToggleOrientation
qdbus org.kde.kwin /KWin slotSetRatio <float> # between 0 and 1
qdbus org.kde.kwin /KWin dumpTiles # get a nice tree if you have debugging enabled and visible


Some applications will cause trouble. Especially some plasma widgets and Kruler aren't setting the right window attributes, so I can't exempt them from tiling. So don't launch panel settings or Kickoff menu, it won't look so well.

Minimize and restore works now, it will keep track of where the window was before you minimized it and put it back there.

Please leave feedback about bugs here or on the KWin mailing list, it will be appreciated.

Wednesday, June 10, 2009

Kwin : tree based tiling


In the quest to implement tiling in KWin, I've decided to use binary trees as an internal representation. This morning, I hacked on it to produce a decent prototype, just to check if the idea would work well enough, without introducing too much complexity in the code. At the moment, it does tend to crash or have repaint issues once in a while. But it works, and it does what tiling is supposed to do. Of course there is a lot to do yet. Moving and Resizing remain particularly icky because so many choices about what is good as a default, what is expected, how to implement it, will have to be made. If you are adventurous enough to try the kwin-tiling branch, do not move the windows, or basically abuse it in anyway :)

Friday, June 05, 2009

Internship and back to college

Well, my holiday has been cut short...

I'm leaving next Saturday to spend the last month and a half of my vacations in college.

I've received an internship opportunity to work as a Playtester and Beta-tester MILLEE.

I really enjoyed the short vacation though, I learnt to drive, did a lot of swimming, and hacked some decent code.

The last year (academic) has been really really unique, perhaps the most satisfying and enjoyable one. But thats for another post

KWin preliminary tiling

Yesterday I committed code which adds a semblance of tiling to kwin. Every time you launch a window, it will be maximized vertically, but each window shares the width of the screen equally. You can check out code from KDE svn. The location is /home/kde/branches/work/kwin-tiling/

You'll need to edit $KDEDIR/share/config/kwinrc and set Placement=Tiling.

Then you are ready to go.

Right now there are no configuration options, no key bindings, nothing! Still a long long way from a functional release.

Please leave feedback and bugs.

Sunday, May 17, 2009

May updates

I'm home! Till almost the end of July I'll be @ home. Which means a better internet connection at the very least :p

So I've been swimming and learning to drive! Driving is fun, I've finished five days out of the 22 and I've managed not to hit anyone or anything.

In programming, I'm working on a game using Canvas for the CodeChef game contest. You can track its progress on github.

Also I've been doing some C socket programming, mainly doing segmented multithreaded HTTP downloads. Right now all the code is prototype, but someday it will be a decent download manager.

I'm also working on implementing tiling in KWin along with Martin Graesslin, my mentor. Right now there isn't much real progress apart from a KWin branch which maximizes every window you open.

And yesterday I got a copy of Real World Haskell. Yay!

Wednesday, April 22, 2009

I didn't get in, better luck next time

Well, none of my two proposals got selected for Summer of Code 09. Of course I will be applying to Summer of KDE soon, and getting a lot of experience over the next year, so that I have higher chances next time.

Which reminds me, I am on the way to getting a KDE svn account, and I already have 5 patches into KGet. :) My code will be in 4.3!

Monday, March 30, 2009

Multiple improvements in KGet

* This is another GSoC related post, normal users please ignore it.





Abstract
========
KGet is a versatile and user-friendly download manager for KDE.
This project will add various features to KGet to improve its functionality and
usability. These include semantic information via Nepomuk, support for digital
signatures, better Metalink integration and good Plasma support.

Personal details
================

Name: Nikhil Marathe

Email Address: nsm.nikhil@gmail.com

Freenode IRC Nick: nsm

Location (City, Country and/or Time Zone): Mumbai, India ( GMT + 5:30 )



Proposal Name
==============
Making downloading easier, safer, better - multiple improvements to Kget

Motivation for Proposal / Goal
==============================
Kget is a very good download manager, with a crisp interface and nice
integration into KDE. At the same time there is always room for improvements. These include quick renaming of partial downloads, support for
verification of downloaded files and ability to download from multiple sources.
I will attempt to add these improvements.

Goals
-----
As specified in the proposal:
* Add support for a context menu to alter download properties.
* Allow manual addition of URLs to multithreaded downloads.
* Integration of downloads from multiple sources - Bittorrent/HTTP/FTP.
* Integrate KGpg to verify digital signatures.
* Integrate Nepomuk support if available.
* Metalink creation support.
* Support to download an MD5SUMS file from servers if available and verify
downloads. Manual intervention possible if the MD5SUMS is not found.
* In case of a Metalink, attempt to verify PGP checksums using KGpg.

In addition I have the following features I would like to implement:
* Add Plasma applet drop target which can be added to panel - KGet's current drop target tends to cover up screen content. Tucking it away in
the panel seems a good workaround.
* Allow KGet to display transfer details in the system tray tooltip - this
feature ( seen in ktorrent ) is very useful.
* Allow KGet to restart on crashes - it is very annoying to find that the download you left on and went for lunch didn't finish because KGet crashed and didn't restart. This should fix it.

Apart from the motivation of improving KDE, I have a somewhat selfish motivation
for improving KGet since it seems to be the only download manager that can
resume partial files on my computer :)

Implementation Details
======================

NOTE: Wherever UI changes are required, they will be made to the web interface too in case required.

My current implementation plan includes:
* Modify KGet UI for context menu. This also involves adding the appropriate HTML/Javascript/CSS to support the same through the web interface.
* Add KIO operations for moving/copying files when download location is changed
to the KGet core.
* Add support to verify signatures using KGpg command line options ( as KGpg
does not seem to have a D-BUS interface. )
* Add dialog for creation of Metalinks from downloaded files, or local
filesystem files, including automatic MD5 and PGP checksumming.
* Submit data to Nepomuk about download location, download server.
* Allow user to add tags/rating to download while it is going on.
* Discreet option to add multiple download links for non-Metalink downloads.
* For MD5SUMS verification, attempt to guess multiple types of filenames (
MD5SUMS, md5sums.txt etc. ) or allow the user to enter link or checksum
manually.
* Implement plasma drop target which should also have settings for the
following -
Prompt for download by raising KGet window or just downloading to a default location and not breaking the user's workflow.
* Provide a setEmergencySaveFunction and crashHandler so that we can attempt to rescue files from corruption and restart KGet when it crashes.

Tentative Timeline
==================

now - May 23rd : Understand relevant KGet code. Take a look at how to hook into
Nepomuk. Plan the UI and backend design.

May 23rd - June end: Attempt to implement the core functionality of manual URL
insertion, renaming and moving, and integration of multiple download methods.
Integrate KGpg and Nepomuk. Add Metalink PGP verification.
Write plasma drop target applet. Implement tooltip functionality.

July : Implement Rating and Tagging support. Add configuration options.
Implement MD5SUMS verification. Fix bugs, write documentation.

August 1-10th: Fix remaining bugs, wrap loose ends, test test test.

More personal details
=====================
Do you have other obligations from late May to early August (school, work,
etc.)?:

My 3rd semester begins in the last week of July, which means I'll have
a bit less time ( around 25 hours a week ) towards the last two weeks of coding.
Therefore I will attempt to finish almost all
of my proposal by the end of July.

About Me
========

I'm 18 years old. I study in Gandhinagar, India. I'm pursuing
a B. Tech. in Information and Communication Technology at DA-IICT where I'm in
the first year.

I've been programming and using Linux for about 6 years now. I'm fascinated by
all the areas of computing, including compilers, operating systems, graphics and
web design+development. Python is the coolest language for me, although C/++
comes pretty close. I have significant experience in Qt ( including the new MVC
architecture ) - having developed a local network instant messaging client using
it. I am also familiar with the HTTP and FTP protocols and have used PGP
encryption/signing to some extent. In addition I have a decent web development experience, including Ajax and JS effects, which are required for the KGet web interface.

A complete list of my projects can be found at
http://22bits.exofire.net/browse/code

KDE has been a really great piece of software for me ever since I first used
version 3.2. I've always been a fan of its configurability and the momentum and
innovation in the KDE community, and KDE 4 totally took it to the next level. It
has been a kind of
dream to work on KDE someday. Unfortunately I could never participate in GSoC
due to age restrictions. I also didn't have the experience to enter such a huge
project until last year, but now I'm ready to become a full time contributor to
KDE. I have recently patched bug 164137 (
https://bugs.kde.org/show_bug.cgi?id=164137 ) in KWin to remove a redundant
checkbox, which is currently awaiting feedback from KWin developers.

When not in front of the computer I also love playing football, reading and
listening to music.