Commit Graph

219 Commits

Author SHA1 Message Date
Julien Danjou 9b654095ec client: add Globally Active Input Model (GAIM)
with small fixes, changes:
- client_focus handles case when c==NULL
- don't focus on already focused client

- added window_takefocus function, that sends WM_TAKE_FOCUS client
  message. It is needed by GAIM and Locally Active Input Model.
- moved invocation of lua focus hook from client_focus to
  client_focus_hook function.

- client_focus has one additional paremeter, sendmessage.
  It is used in FocusIn event handler, to disable sending SetInputFocus
  and WM_TAKE_FOCUS messages ( to avoid infinite loop )

Signed-off-by: Mariusz Ceier <mceier@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-03-03 17:24:40 +01:00
Gregor Best 050a6bbb61 client: add client_seturgent() and remove urgent hint on focus
According to EWMH, the window manager is responsible for removing the
urgent state of a client. Also, this commit adds a new
client_seturgent(client_t *, bool) function to set the urgent state if
needed.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-11 19:04:09 +01:00
Maarten Maathuis bd6e568083 event: fix configurerequest
- We have to be careful with geometry around protocol code.

Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-08 14:10:17 +01:00
Maarten Maathuis 62b2273b53 client: client_isvisible_exclude_banned() isn't needed anymore.
Signed-off-by: Julien Danjou <julien@danjou.info>
2009-02-08 14:06:15 +01:00
Julien Danjou d779aa6c40 client: client screen change at manage is done in Lua
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-29 12:26:01 +01:00
Julien Danjou cd667802db hooks: manage gets an extra startup arg
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-29 12:23:37 +01:00
Maxime COSTE 3cc60e84dc client: fixed client_isfixed
here is a little patch which fix the unresizeable window bug.  This bug is due
to some windows, like firefox, having XCB_SIZE_HINT_P_MAX_SIZE and
XCB_SIZE_HINT_P_MIN_SIZE on and all related values to 0, which makes
client_isfixed believe that the windows are of fixed size.

Hope this is the right way to fix it. Anyway now you know where this bug comes
from.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-29 10:13:49 +01:00
Arnaud VALLAT ba6f5e42bb ewmh: add suport for _NET_ACTIVE_WINDOW message
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-15 10:47:07 +01:00
Julien Danjou 9d175377b8 client: stop duplicating size hints data
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:24 +01:00
Maarten Maathuis 7453098cf5 client: Sometimes you need to arrange before a client gets unbanned.
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:24 +01:00
Maarten Maathuis 0aba4013e9 client: Improve handling of transient windows.
Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:23 +01:00
Julien Danjou 1670088218 client: include list
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:23 +01:00
Julien Danjou c3c20c4f8e client: move floating state handling to Lua
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-14 10:28:22 +01:00
Julien Danjou 576a1e85fc client: maximize belongs to client internal
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 19:19:29 +01:00
Maarten Maathuis f9c2ee62a3 client: reimplement client_{ban,unban} for more performance
- From now on clients shall remain mapped for their entire lifetime.
- This should seriously boost tag switching speed with composite active.
- A lesser improvement may be noticed in non-composite situations.
- Titlebars that are set to invisble are still unmapped.
  Since it would clutter the implementation and titlebars are cheap to render.
  Not to mention that invisible titlebars are pretty rare.
- It's safe to attach titlebars while the client is banned.
- Titlebars are explicitly removed at exit.

Signed-off-by: Maarten Maathuis <madman2003@gmail.com>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-12-12 19:19:28 +01:00
Julien Danjou 0634353648 client: add client_lower()
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-12 11:25:04 +01:00
Julien Danjou 79468cf3a1 client: fix fixed size detection and resize blocking
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-10 12:10:06 +01:00
Julien Danjou 9ce1f986d9 client: better handling of transient windows stacking
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-11-03 14:39:38 +01:00
Julien Danjou 737a70f60c remove a bunch of useless #include-s
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-24 20:57:29 +02:00
Julien Danjou 1e89515d97 mouse: move declaration from structs to mouse header
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-24 20:38:29 +02:00
Julien Danjou d3ceff0282 structs: move some define out
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-21 17:37:14 +02:00
Julien Danjou 8a24f5c840 client: resize returns void
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-26 15:00:27 +02:00
Julien Danjou 8a7e522ba1 ewmh: update window hints
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:55 +02:00
Julien Danjou 2be620618b property: use xcb property handler system
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:55 +02:00
Julien Danjou e0d3da455b client: split minimized out of hidden
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:55 +02:00
Julien Danjou 126e2dc0ec client: inline isvisible()
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:55 +02:00
Julien Danjou 3a45831242 client: manage take phys_screen as arg
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:54 +02:00
Julien Danjou fcde8d229b ewmh: add support for _NET_WM_STRUT_PARTIAL
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:54 +02:00
Julien Danjou 427679b0fa client: use a type attribute for NET WM window type
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:54 +02:00
Julien Danjou 63b5e65ebd placement: deprecate in favor of awful.placement
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:54 +02:00
Julien Danjou 7cf2b6615f client: split X props; handle fullscreen status
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:54 +02:00
Julien Danjou abb497fa56 client: rework all stacking stuff
- Stacking is now per attribute
- Fullscreen does not imply isfloating

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:54 +02:00
Julien Danjou 8543dfae5c client: add support for the sticky attribute
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:54 +02:00
Julien Danjou 5449374e3d client: check for visibility before arranging
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:53 +02:00
Arnaud Fontaine 00d8a0cddd Update to new xcb-util library.
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-15 14:02:23 +02:00
Julien Danjou 8d1f20c5ad client: implement maybevisible(), and use it for maprequest
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-11 11:57:57 +02:00
Julien Danjou 4b2293d43d client: rewrite focus()
Hidden client are not more hiddent if focus requested (FS#245)

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-11 11:51:54 +02:00
Julien Danjou b92a07c2ed Revert "Alternative export method of arrays from C to Lua"
This reverts commit 4ab499fe26.

Conflicts:

	lua.h
2008-08-11 02:21:21 +02:00
Konstantin 4ab499fe26 Alternative export method of arrays from C to Lua
The patch is mainly to export client_array_t object to Lua,
but can be used to export any ..._array_t object.

The idea: export to Lua not a table, but userdata with
metamethods to get/set/define length of ..._array_t object
directly.

Now when I get clients field from tag object C code
creates full copy of client_array_t structure into Lua table.
It takes traversing a whole array of data.

I did it in other way: userdata is exported, with __index,
__newindex, and __len meta-methods defined, and Lua
script gains direct access to client_array_t C-array:
it can get client object, get length of array and assign
client objects to some index in C-array.

Pros:
No overhead of creation a copy of C-structure into Lua-table:
if I want just to test a number of clients for a tag, I don't need
a whole loop to build table, I just want to read clients->len field,
and I do so via __len meta-method.
Also if I want to get some client from tags.clients, I don't need
to create ALL clients Lua-objects, I just get client_t C-struct
and create Lua-object from it. Just in place.
So Lua-loop enuming all tag.clients is not 2 loops internally
(first create copy of tag.clients into Lua-table, then enum this table),
but only one, and if I break out of loop in the middle, I create
only some client Lua-objects, not all of them from tag.clients.

Contras:
As far as clients field is not a table, I cant use pairs/ipairs
and other table functions for it.
But it can be implemented in other way:
for k,c pairs(tag.clients) => for k = 1, #tag.clients,
table.insert(tag.clients, client) => tag.clients[#tag.clients+1] = client

etc.

One more Pro now:
As far as tag.clients in current implementation returns copy of data
table.insert doesn't do what's expected: it doesn't really add client
into tag.clients "array".
With my implementation client is added as expected, as we work with
client_array_t structure directly.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-10 16:18:59 +02:00
Julien Danjou 254a39b6d3 statusbar: handle systray invisibility
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-05 16:59:54 +02:00
Julien Danjou 1cc071e24f client: add refcount for clients
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-31 17:29:45 +02:00
Julien Danjou f28b4c07b2 tasklist: stop using client markup
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-10 11:02:11 +02:00
Julien Danjou 00e9af11b8 client: fix title update
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-08 18:04:08 +02:00
Julien Danjou 3de2bf3918 dbus: add client support
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-08 10:54:57 +02:00
Julien Danjou 1d64f8231c client: use atom name to update title
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-08 08:42:39 +02:00
Pierre Habouzit a67e5023c0 If awesome believes we have the focus, well, do not unfocus ourselves.
This avoid flickering when you repeteadly click on a client.
Also make the function client_focus void, it always returned true, and
nobody cares about the result.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-27 09:34:47 +02:00
Julien Danjou 086bada825 client: split out of setfloating layer handling
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-25 22:26:53 +02:00
Michael Gehring 60591fe9bd client: export client_geometry_hints 2008-06-18 18:48:38 +02:00
Julien Danjou 92f369e3aa lua: userdata_new is now macro
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-18 18:31:35 +02:00
Julien Danjou e6b14c1d39 [client] Fix border width setting
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-11 08:14:54 +02:00
Julien Danjou 1049393840 Revert "Replace tags by workspaces"
This reverts commit 00f966ea04.

Revert "[focus] Fix bogus arguments"
This reverts commit 816b5d16bc.

Revert "[mouse] Fix bug with floating"
This reverts commit 89daa72790.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-09 21:56:03 +02:00
Julien Danjou 00f966ea04 Replace tags by workspaces
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-09 16:30:46 +02:00
Julien Danjou 6ba90facb0 [client] Various documentation update and fixes
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-05 09:27:16 +02:00
Julien Danjou 3ab739553c [client] Add and honor the noborder attribute
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-28 14:33:45 +02:00
Julien Danjou 0e3531d3a3 [client] Rework raise and mouse stuff
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-26 18:08:29 +02:00
Julien Danjou db5430420d [client] Create luaA_client_userdata_new() function
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-23 22:56:03 +02:00
Julien Danjou ec21647c87 [client] Remove useless client_get_byname()
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-20 19:59:58 +02:00
Julien Danjou 1f046b3c9f [everything] Switch from libconfuse to Lua
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-20 18:01:15 +02:00
Arnaud Fontaine a4c7ffffc7 [client] Add client_redraw (FS#170) 2008-05-11 17:56:26 +01:00
Julien Danjou c88b0b15ff [client] Merge zoom with swap, change togglefloating to setfloating
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:01:35 +02:00
Julien Danjou b75e462223 [client] Merge vertical and horizontalmax inside togglemax
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:01:35 +02:00
Julien Danjou d5859c60f7 [client] Merge focus{prev,next} and swap{prev,next}
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:01:35 +02:00
Julien Danjou f0e29977d8 [client] introduce client_style_get() and use it in tasklist/titlebar
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:01:06 +02:00
Julien Danjou eab7633675 [tasklist] Remove styles; use drawtext format
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:01:04 +02:00
Julien Danjou d1635db59f [client] Rename Client type to client_t
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:01:03 +02:00
Julien Danjou e33d6cae80 [uicb] Rename Uicb type to uicb_t
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:01:03 +02:00
Julien Danjou eb1a9bd69c [all] Rename Layer to layer_t
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:01:02 +02:00
Julien Danjou 97dc830db5 [util/rules] Move Fuzzy from rules to util
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:01:02 +02:00
Arnaud Fontaine dafafd077c Port Awesome to XCB 2008-05-03 12:00:59 +02:00
Wolfgang Kroener 3af77fd56e add ewmh stacking layers
Add layers for ewmh stacking order
http://standards.freedesktop.org/wm-spec/wm-spec-1.3.html#STACKINGORDER
desktop, below, tile, float, above, fullscreen

Signed-off-by: Wolfgang Kroener <wk@azog.de>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:00:25 +02:00
Julien Danjou 762645ca32 client_focus() now return bool to indicate if it has given focus
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-03-25 11:28:38 +01:00
Julien Danjou c5afa7753b Split restack function out of focus, and fix click-to-raise
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-03-24 16:34:41 +01:00
Julien Danjou e22d57a0ca Change the way to do resize
Go back to old school

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-03-23 15:52:20 +01:00
Julien Danjou 9bd32fc3b8 Split titlebar stuff into titlebar.[ch], and uicb_client_toggletitlebar 2008-03-23 15:52:19 +01:00
Julien Danjou bb453bd444 s/client_titlebar_update_position/client_titlebar_update_geometry/g 2008-03-23 15:52:19 +01:00
Julien Danjou dce101d044 Split out titlebar handling into layout for non-floating, and into resize for floating 2008-03-23 15:52:18 +01:00
Julien Danjou 3c3015fd76 Remove resize_hints args to client_resize(), force usage of client_geometry_hints() 2008-03-23 15:52:18 +01:00
Julien Danjou c6eec955c8 Rename Area to area_t 2008-03-23 15:52:18 +01:00
Julien Danjou 6b4c9fed83 Remove useless ; after DO_SLIST macro 2008-03-23 15:52:17 +01:00
marco candrian 4ff0dae17e trailing whitespaces removed
like:
find . -iname "*.txt" -o -iname "*.c" -o -iname "*.h" | xargs sed -i 's/\s\+$//'

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-02-13 09:05:10 +01:00
Julien Danjou b2e004b453 add scratch window support 2008-02-06 09:06:43 +01:00
Julien Danjou 4ad1f8a54a don't compute position if program or user specified ones 2008-02-01 10:42:16 +01:00
Julien Danjou ee1214846e rename some client functions 2008-01-29 08:21:05 +01:00
Julien Danjou 95d5fe299e rename focus() to client_focus() 2008-01-27 19:07:39 +01:00
Julien Danjou c22430a115 fix handling of window raisings 2008-01-25 23:43:16 +01:00
Julien Danjou 3855ced402 remove selscreen arg 2008-01-24 23:48:35 +01:00
Julien Danjou 35803aff4c make draw functions more independant 2008-01-24 18:43:24 +01:00
Julien Danjou 2f8978c15b add client_find_next_visible() 2008-01-21 16:31:15 +01:00
Julien Danjou ed3f624fc0 move clients' uicb away from layout.c 2008-01-21 16:31:15 +01:00
Julien Danjou 7f4dc5a871 use client_setfloating() to change floating attribute 2008-01-21 16:31:15 +01:00
Julien Danjou 0b5e3e7cd1 split config.h, and move DO_SLIST() 2008-01-21 16:31:14 +01:00
Julien Danjou 572f409a29 use lists functions for Client 2008-01-21 16:31:13 +01:00
Julien Danjou 7ad579898f simplify unmanage code 2008-01-06 21:57:53 +01:00
Julien Danjou af708d2fbc Rewrite everything about client geoemtry, resize, etc. 2008-01-06 20:36:39 +01:00
Julien Danjou 70a3114dba use Area as arg for client_resize 2008-01-05 20:19:59 +01:00
Julien Danjou 3742f31216 remove setborder uicb 2008-01-04 17:56:18 +01:00
Julien Danjou 437bc5c22c add 2008 copyright notice 2008-01-02 16:59:43 +01:00
Julien Danjou 6701d0d2be add a borders option to client_maximize() to (not) handle border removal 2008-01-02 11:36:06 +01:00
Julien Danjou 4f65aa8f51 rework headers inclusion 2008-01-01 18:02:36 +01:00
Julien Danjou f467fed598 use LayoutArrange and Uicb type into config.h ; move some functions from layout.c to client.c 2008-01-01 17:37:16 +01:00