On Sun, Oct 02, 2011 at 02:11:18PM -0500, David Palacio wrote:
> Hi,
> 
> I am using Awesome as the window manager for my KDE desktop. I would like to
> set different desktops per Awesome tag. I use client:tags({tags}) to set on
> which tags should the desktop be visible. But that does not work as expected 
> as
> the desktops are still visible in all tags. Is there a way to make a window of
> type desktop visible only on certain tags?
> 
> Thanks,
> 
> David
>

I patched Awesome to let desktop windows be visible on certain tags.
What are your thoughts on these changes?

Regards,

David

Description: Taggable desktops
 This patch allows windows of type Desktop to be visible only on certain tags.
 This works by removing the assumption that desktop windows are always visible
 (see diff in client.c).
 .
 Other changes include:
 * Returning an empty table of tabs when querying the tabs function.
   (see second diff in client.c)
 * Returning a table of clients excluding the desktop client when querying the
   tag clients.
   (see diff in tag.c)
   
Author: David Palacio <dpala...@orbitalibre.org>

Last-Update: 2011-10-04

--- awesome-3.4.10.orig/client.c
+++ awesome-3.4.10/client.c
@@ -244,7 +244,7 @@ client_maybevisible(client_t *c, screen_
 {
     if(screen && c->screen == screen)
     {
-        if(c->sticky || c->type == WINDOW_TYPE_DESKTOP)
+        if(c->sticky)
             return true;
 
         foreach(tag, screen->tags)

--- awesome-3.4.10.orig/tag.c
+++ awesome-3.4.10/tag.c
@@ -397,6 +397,8 @@ luaA_tag_clients(lua_State *L)
     lua_createtable(L, clients->len, 0);
     for(i = 0; i < clients->len; i++)
     {
+        if(clients->tab[i]->type == WINDOW_TYPE_DESKTOP)
+            continue;
         luaA_object_push(L, clients->tab[i]);
         lua_rawseti(L, -2, i + 1);
     }

--- awesome-3.4.10.orig/client.c
+++ awesome-3.4.10/client.c
@@ -1578,6 +1578,8 @@ luaA_client_tags(lua_State *L)
     }
 
     lua_newtable(L);
+    if(c->type == WINDOW_TYPE_DESKTOP)
+        return 1;
     foreach(tag, *tags)
         if(is_client_tagged(c, *tag))
         {

Reply via email to