Yo

Jorge Mata

9 / 2 / 2010

Views: 16750

GSoC ends KWin Window Tabbing

The project Window Tabbing for KWin is looking good, there are some more changes to the code that needs to be done before it can be merged into trunk but I'm working with my mentor (Lucas Murray) for this.

The windows can be grouped and the decoration chooses how to display the contents of the group, it can be as tabs or with a list or any widget the decoration decides, in a group the windows can be switched by a keyboard shortcut or by the decoration like clicking in a tab, there are also some options to manage the group in the window pop up menu. I've implemented tabbing in Oxygen and it allows to drag the tabs between groups, or to ungroup a window by dragging the tab somewhere else, changing the order of the tabs, I also wrote a decoration for testing it and I'm writing a simple decoration (like ion or FluxBox decorations).

Oxygen decoration Test decoration Ion-FluxBox like decoration

I also wrote two effects, they aren't so much pretty but I have third one on hold that is supposed to show thumbnails of the windows in the group.

I didn't have much time this week to work on the project, I started school on Monday and I'll not have too much time in the weekend also (I'm going to a programming contest to another city) but I'll keep working on it.

2009-08-21 19:28:09 by Mata

GSoC update
Project KWin tabbing

It's been a lot of time since I did my last post, the project seems to be going very well, I've corrected some things in the grouping functions and started to implement this functionality into Oxygen decoration.

Here is a screen shot of how Oxygen looks now:

Oxygen-Tabs

You can see that if the group has only one window is displayed normally but if the group has more windows the tabs are shown.

Some new functionality was added to the groups, for example a new button in the tabs for closing the tab, dragging the tabs to make groups, dragging a tab and drop it off the decoration to remove the tab from the group.

There is a lot of work to do, the decoration look is probably going to change, and fix some bugs before starting with the next part.

2009-07-23 04:22:48 by Mata

First post on Planet KDE

Hi

I'm Jorge Mata and I'm working on the KWin window tabbing project for the GSoC with Lucas Murray mentoring me, and this is my first post on Planet KDE, I've already posted some updates about my progress on the project at http://www.jmata.co.cc .

2009-06-23 06:30:10 by Mata

GSoC week two

This the second week for my GSoC project, as you can see in the image below my decoration can show the tabs in title, top, bottom, left or right edge.

When a click is done to some tab an action is triggered, next step is to hide the windows that are not in the top of their group.

GSoC week two
2009-06-06 14:33:54 by Mata

GSoC week one

Hi, it's been one week since the program officially started and I've been working on this, the first results can be seen now, I've implemented a class for grouping windows and add some functions to manage the groups to the window's menu.

I also wrote a simple decoration to manage the grouped windows with tabs from the decoration. Here is a picture of the decoration, it's very simple but it can show all the titles of the group the window belongs, and you can see the menu with three functions add to a group, remove from the group and to change the window that is been shown.

There still too much to do, for example all the windows in the group are still visible when only one should be visible, the window decoration can't manage the group it only shows the titles.

Here is the image

GSoC week one
2009-05-31 01:32:38 by Mata

Accepted for Google Summer of Code

Hi, I've been accepted to work on the window tabbing project for kde.

The project I'll be working will permit to group applications and change between them with tabs, the way the tabbs are shown will depend on the decoration, I've written a small/simple decoration to help me understand the code and implement the rest of the project.

I'll be posting more about the project soon.

2009-05-16 05:11:43 by Mata

GSoC KWin tabbing project proposal


Abstract:

The window tabbing feature allows you to tab windows together, the options to change between windows in the same group can be done by tabs marked outside the window or embedded in the title bar, a menu in the window title bar, or a shortcut.

The windows can be grouped and will be resized to fit in the group. It will also be possible to add effects for actions like changing between tabs in the same group, when the mouse passes over a tab it can display the thumbnail.

This feature would eliminate the need to implement this feature for single applications which will save a lot of work others that want to add tabs to their applications and also it will be a nice feature to have in kwin as some other window managers already have this feature included like Fluxbox, Ion, wmii.

There is a bug report to request this feature, it has more than 1500 votes.


This is an image example from fluxbox website of the window tabbing.

Tabbs

This is a video from youtube showing the window tabbs on fluxbox on the left, and on the right is a beryl plugin which show how the windows can be grouped and change between them with some nice effects.



Name:
Jorge Emilio Mata de la Vega

Email Address:
matamax123@gmail.com

Freenode IRC Nick:
mata

Location (City, Country and/or Time Zone):
San Jose Iturbide, Guanajuato, Mexico.
Gmt -6

Proposal Name:
Window tabbing

Motivation for Proposal / Goal:

The goal of the project is to have a feature that allows windows from different applications to be grouped, this feature is like what web browsers or other applications do. This feature is already included in other window managers like fluxbox.


This feature will allow:
  • Group windows together.
  • Having the decoration manage the groups.
  • The decoration will display the grouped windows in some way to allow the movement between windows of the same group, like tabs.
  • All windows in the group will be resized to the same size.
  • Desktop effects when changing betwwen tabs.

How it will work:
  • Each window is contained in a group, the group can have one or more windows.
  • A window can be added to a group, a group can be added to another group, a window can be removed from a group.
  • Each group will know the order of the windows, which window comes first, only the window at the top will be displayed.
  • The order of the windows can be changed as the user desires.
  • The windows in the group can be showed in tabs at the title bar, or around the window with tabs, this will require to work with the decoration.
  • Keyboard shortcuts or the mouse can be used to manage a group, this shortcuts need not to interfere with other other shortcuts or effects.
  • Additional effects can be added to improve how the windows are added, removed or tabbed.
  • There can be poblems for example when a window change its size to fullscreen, I think that if the group contains more than one window (the current window) it will have to be removed from the group, also when a window is shown in all the virtual desktops special work will have to be done as not all the windows in the group will be shown in all desktops.
  • When a window is resized, moved, or it change from virtual desktop all the windows in the group will be affected.

Implementation Details:

  1. Determine decoration API.
  2. Write a simple decoration that displays tabs for testing.
  3. Group handling in core and sending the correct signals to the decoration.
    • Until here the basic grouping functions will be working and the simple decoration will help me testing it.
  4. Add shortcut actions to allow users to group windows.
  5. Make sure all windows in a tabbing group have the same geometry.
    • In the last two points the shortcuts and the the grouping problems will be resolved.
  6. Determine effect API.
  7. Fix effect conflicts.
  8. Add tabbing support to the Oxygen decoration.
    • The last three points will add the final decorations, how the tabbs will be showed with Oxygen decoration and the effect conflicts will be resolved.

Optional:
  1. Write some new effects to prettify tabbing.
  2. Add tabbing support to other decorations.
  3. Integration with the Plasma taskbar.

Tentative Timeline:

  • From now to May 22 to study KWin's code.
  • From May 23 to June 5 to determine decoration API, write a simple decoration that displays tabs for testing, group handling.
  • From June 6 to June 26 to add shortcut actions to allow users to group windows, make sure all windows in a tabbing group have the same geometry.
  • From June 27 to July 17 to determine effect API, fix effect conflicts, add tabbing support to the Oxygen decoration.
  • From July 18 to July 31 for writing some new effects to prettify tabbing, adding tabbing support to other decorations, integration with the Plasma taskbar.
  • From August 1 to August 17 for testing and fixing bugs.

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

In may 29 it's the official date of end of course at my school, and on aougust 17 is the next course start. I have no other obligations between the program date.


About Me (let us know who you are!):

I'm twenty years old, I'm on my third year at school, my major is computer systems engeneering.

I have good experience programming in C++, and a year ago I started with Qt 4. I have participated in some programming contest from the ACM-ICPC at local and regional stages.

I have a small website at http://www.jmata.co.cc with some small applications I did in the past with Java and C++.

2009-05-11 00:00:00 by Mata
2008-2010 by Jorge Mata.
Uva online Judge Tux suse OpenSuse Linux user 483125 Valid XHTML 1.1 Valid CSS! [Valid RSS]