xfwm: support for 2d pagers

Olivier Fourdan fourdan at xfce.org
Mon Sep 20 23:17:15 CEST 2004


Hi

No new feature is being added to the 4.0 release and your patch doesn't
apply on CVS HEAD.

Cheers,
Olivier.

On Mon, 2004-09-20 at 08:50, Paramjit Oberoi wrote:
> xfwm4 currently does not support 2d pagers very well: i.e., say that
> your desktop pager/switcher displays 8 virtual desktops in 2 rows, 4
> columns.  It is natural in this situation to want to move the virtual
> desktop up/down/left/right.  However, xfwm only supports moving to the
> next/previous desktop.  (the xfce pager doesn't support multiple rows;
> I am using xfwm with GNOME, as a replacement for metacity)
> 
> According to the NetWM specification, pagers can communicate the layout
> of the virtual desktops using the _NET_DESKTOP_LAYOUT property.  This
> property is described in detail here:
> http://freedesktop.org/Standards/wm-spec/1.3/ar01s03.html#id2503159
> 
> Attached to this email is a patch that adds support for this to xfwm.
> The patch is against the current CVS head (I think).  Here's a summary
> of the changes:
> 
> Additions to keythemerc:
>     up_workspace_key
>     down_workspace_key
>     left_workspace_key
>     right_workspace_key
>     move_window_up_workspace_key
>     move_window_down_workspace_key
>     move_window_left_workspace_key
>     move_window_right_workspace_key
> 
> Eight new hotkeys for changing the virtual desktop, and for moving the
> current window. You must add these to your keythemerc to try out this
> patch.
> 
> Adidtional setting in xfwm4.xml:
>     <option name="Xfwm/WrapLayout" type="int" value="0"/>
> 
> Optionally, a "wrap_layout" parameter can be specified in the theme defaults.
> 
> This setting controls if the up/down/left/right movement wraps around at
> the boundaries of the pager.  I have not (yet) modified the settings
> manager plugins to allow this to be set via the GUI.
> 
> Most of the additional code is self-explanatory - things like grabbing
> hotkeys, reading settings, etc.  Here is a list of the non-trivial bits:
> 
> hints.c, getDesktopLayout()
>   Get the _NET_DESKTOP_LAYOUT property from the root window and update
>   internal data structures appropriately
> 
> workspaces.c, workspaceGetPosition()
>   Translate the given workspace number to a X,Y position depending on
>   the layout of virtual workspaces
> 
> workspaces.c, workspaceGetNumber()
>   Translate the given X,Y position to the workspace number
> 
> workspaces.c, workspaceMove(int rowmod, int colmod, Client * c2)
>   just like workspaceSwitch (int new_ws, Client * c2), except that
>   instead of specifying the new workspace number you specify which
>   direction to move in (rowmod is +/- 1 for down/up movement; colmod
>   is +/- 1 for right/left movement).
> 
> I've been using this with xfwm-4.0.6 for about a month.  I just ported
> it to the latest xfwm, and it seems to be working fine so far.  I will
> be glad if this can be included in future releases of xfwm.
> 
> -param
> 
> 
> ______________________________________________________________________
> _______________________________________________
> Xfce4-dev mailing list
> Xfce4-dev at xfce.org
> http://lunar-linux.org/mailman/listinfo/xfce4-dev
-- 
 - Olivier Fourdan - fourdan at xfce.org - http://www.xfce.org - 




More information about the Xfce4-dev mailing list