Commit Graph

271 Commits

Author SHA1 Message Date
Julien Danjou 862fe193ee Rewrite {tag,task}list in Lua.
This removes the C implementation of taglist and tasklist widgets and
use a Lua one.

This works by letting .widgets property of wiboxes to be a table with
table, and setting a special metatable on them which notify awesome on
newindex events, updating wiboxes.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-10-20 20:06:09 +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 5449374e3d client: check for visibility before arranging
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-22 11:11:53 +02:00
Alex Cornejo 00721a15ea layout: add fair layout
Based on the original idea of Nathan Huesken, which was then implemented by
Gwenhael Le Moine, I completed and corrected the layout.

I added icons for the layout and modified the makefile and the aweseomerc.lua.in
to include the fair layout.

In the process I also decided to modify layoutgen.sh and tag.c, so that in the
future new layouts can be added without touching tag.c.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-09-11 13:31:28 +02:00
Julien Danjou 7409f6e778 Lua API documentation fixes
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-25 18:04:42 +02:00
Julien Danjou 065d7f8a86 lua: otable can now be index by object values
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-17 07:52:04 +02:00
Julien Danjou 07b82b1825 tag: export clients as simple table
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-13 22:06:20 +02:00
Julien Danjou d69b602e52 tag: export clients as a function
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-13 17:59:01 +02:00
Julien Danjou 62c2fb1293 tag: unref later
I somehow miss that patch in the merge.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-13 11:35:52 +02:00
Julien Danjou 40c455046b screen: make tags array overwritable
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-13 10:33:15 +02:00
Julien Danjou 5758a3919a tag: remove get and geti methods
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-11 18:26:09 +02:00
Julien Danjou abd0216194 tag: allow view only if tag has a screen
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-11 18:23:47 +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 856eb1a9b2 tag: add support for tag screen change
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-08 14:39:03 +02:00
Julien Danjou 4dd5a2b6b0 tag: check for screen number before invalidate
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-08 14:34:50 +02:00
Julien Danjou 9cb22b96eb lua: exports client.tags and tags.clients
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-08-07 16:39:45 +02:00
Julien Danjou 80b79717ba various documentation update for _index()
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-28 16:03:38 +02:00
Julien Danjou 21f1f4cf0a statusbar: use screen attribute to add to screen
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-24 17:37:24 +02:00
Julien Danjou 4f73b51e6f tag: remove add(), use screen attribute
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-24 17:07:24 +02:00
Julien Danjou a791fe5290 tag: allow for tag name modification
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-24 16:37:09 +02:00
Julien Danjou 015f529928 documentation update and disallow tag name change
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-10 11:02:10 +02:00
Julien Danjou 1723cc160a lua: introduce luaA_usemetatable
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-01 19:25:58 +02:00
Julien Danjou 4ddf692ee4 tag: layout use index
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-01 15:06:20 +02:00
Julien Danjou 9b74cdbc0a draw: iso2utf now gets len as arg
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-01 14:44:19 +02:00
Julien Danjou 282dc95042 tag: use index for name
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-01 14:31:47 +02:00
Julien Danjou e012a4ba49 tag: use index for ncol
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-01 14:23:06 +02:00
Julien Danjou d328904d30 tag: use index for nmaster
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-01 14:17:07 +02:00
Julien Danjou ef7379c983 tag: remove mwfact_{get,set}, use {new,}index
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-01 13:59:40 +02:00
Julien Danjou f750124d5c tag: add {new,}index, use it for selected
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-07-01 11:38:40 +02:00
Julien Danjou 45b0a2df80 lua: replace .new() by __call meth
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-30 14:11:54 +02:00
Julien Danjou f2d2a10d9b lua: remove luaA_name_init
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-30 13:50:49 +02:00
Julien Danjou 91b2926d8d screen: merge tag_client_with_current_selected() code
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-27 23:00:20 +02:00
Julien Danjou 013b2afe62 remove useless #include
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-26 18:10:45 +02:00
Julien Danjou db88877587 lua: split getopt_string/getopt_lstring; fix mouse corner
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-25 17:33:05 +02:00
Pierre Habouzit f84e66ddc6 Avoid lists of tag/client pairs, use an array per tag.
Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-24 14:30:13 +02:00
Pierre Habouzit 14f4e02e66 Replace tag_t lists with arrays.
This improves lots of code efficiency (we *know* how many tags we have
now, YA'RLY).

Also fix a \todo in client.c: since knowing the number of tags is cheap,
ignore props that don't match it.

Use many p_alloca for things that depends on the number of tags (no sane
user will have *thousands* of tags. This saves a few more mallocs.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
2008-06-23 17:37:19 +02:00
Julien Danjou ab5119732d use more tokenizer, with len
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-23 14:01:33 +02:00
Julien Danjou dc8a309c95 fix comments typo
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-18 20:00:24 +02:00
Julien Danjou 2aab3415e0 tag: fix comments typo
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-18 19:44:31 +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 6cfa589f03 tag: introduce geti() to get tag with numbers as index
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-18 17:56:24 +02:00
Julien Danjou c7fc344cd3 titlebar: check for widget uniqness
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-18 16:37:26 +02:00
Julien Danjou 471e0f1088 tag: tag.get() now returns an 'hash' table
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-18 16:04:49 +02:00
Julien Danjou 9490c0c3fd ewmh: add support for _NET_WORKAREA
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-17 22:12:30 +02:00
Julien Danjou 16646c86ab lua: __eq methods are not macros
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-16 11:37:55 +02:00
Julien Danjou 6e36717163 lua: _gc are now macros
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-16 11:31:38 +02:00
Michael Gehring 276f5f8849 [doxygen] Add \lvalue and convert existing doc.
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-11 07:36:34 +02:00
Michael Gehring 1ca55927f0 [doxygen] Convert Lua documentation
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-10 20:12:51 +02:00
Julien Danjou aa6bfc560a [draw] Do inline UTF-8 conversion
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-10 07:32:35 +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 98119d5d3f [lua] Check for object validity
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-04 18:27:10 +02:00
Julien Danjou 0a44e90cb6 [lua] Fix garbage collectors
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-06-04 18:17:47 +02:00
Julien Danjou aba52508c7 [tag] Documentation update
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-28 10:13:28 +02:00
Julien Danjou 6ad47dc828 [layouts] Add magnifier layout
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-27 20:54:53 +02:00
Julien Danjou 4b3e7f766c [tag] Fix tag add checking
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-27 16:20:38 +02:00
Julien Danjou be44700669 [doc] Add new Lua based documentation generator for API
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-26 15:25:40 +02:00
Julien Danjou 971d51918b [tag] Check that tag has not been added before.
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-25 17:43:09 +02:00
Fabienne Ducroquet 834405425e Rearrange the screen when changing layout
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-24 15:46:40 +02:00
Julien Danjou 21ae849d9f Rename VirtScreen to screen_t
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-24 09:01:49 +02:00
Julien Danjou 0bbd2d4b3e Rename AwesomeConf to awesome_t
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-24 08:59:27 +02:00
Julien Danjou 4e4a7d2703 [tag] Add luaA_tag_userdata_new() function
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-24 08:40:41 +02:00
Julien Danjou c6261b028b [tag] Add function to manipulate layouts
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-23 16:59:05 +02:00
Julien Danjou 2c548ef816 [tag] Add lua function to get/set tag's name.
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-23 15:57:18 +02:00
Julien Danjou 0142f0efc9 [layout] Rename LayoutArrange to layout_t
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-23 15:11:59 +02:00
Julien Danjou ccb2a2db77 [lua] Remove regex matching
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-23 13:17:02 +02:00
Julien Danjou 1c4acbe38c [tag] Make static and remove useless functions
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-20 19:58:34 +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
Julien Danjou 48482f3712 [tag] Add missing elements in tag_push_to_screen() 2008-05-09 22:45:32 +02:00
Julien Danjou e4d091ab2e [tag] Rename Tag type to tag_t
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:01:03 +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 c9f4c45007 [rules] Rename Rule to rule_t
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-05-03 12:01:03 +02:00
Arnaud Fontaine dafafd077c Port Awesome to XCB 2008-05-03 12:00:59 +02:00
Fabienne Ducroquet b12a5235a5 [doc] Fix some typos, modify a few descriptions
Before awesome 2.3 release, I've decided to look for typos in the
awesome* manpages, here is the result. I've also modified some options'
descriptions that I didn't find very clear, I hope I have not
added/missed too many mistakes as I'm not a native English speaker...

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-04-11 07:34:45 +02:00
Julien Danjou 40eaa6b997 [doc] Add a bunch of documentation
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-04-08 09:45:48 +02:00
Julien Danjou 4bfcfc5a9b [tags] Check that at least one tag is vieedw on toggletag (FS#143)
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-04-01 09:00:14 +02:00
Steffen Schulz 981c47835e [uicb] uicb_client_toggletag() with NULL use as sticky toggle
The following modification to client_toggletag will make it possible to
make windows sticky/unsticky via client_toggletag(0).
Upon unsticky, the window will stay at the currently selected tags.

Signed-off-by: Julien Danjou <julien@danjou.info>
2008-03-26 09:06:53 +01:00
Julien Danjou 2a6292db29 Add documentation for tag_new()
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-03-26 08:53:14 +01:00
Julien Danjou b39529b44d Clean EWMH desktop calls
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-03-23 15:52:22 +01:00
Julien Danjou 0a6c6e017b Store physical screen id in statusbar and client, change get_phys_s() to screen_virttophys()
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-03-23 15:52:22 +01:00
Julien Danjou f88d403d1c Update various copyrights 2008-03-23 15:52:19 +01:00
Julien Danjou 14798753ca Bugfix in client_toggletag and checking if not tag selected 2008-03-12 16:09:56 +01:00
Julien Danjou 1b87c2be2a Verify user input for tag values (mwfact, nmaster and ncol)
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-03-08 10:26:51 +01:00
Michael Kaminsky 6fb68f5d90 Fix segfault after viewing same tag twice and doing a tag_prev_selected.
Signed-off-by: Julien Danjou <julien@danjou.info>
2008-02-26 22:22:38 +01:00
Julien Danjou 0b6129e625 remove {load,save}awesomeprops()
this is too bugged
2008-02-12 15:43:57 +01:00
Julien Danjou 105f89a58b fix was_selected tag attribute handling 2008-02-04 14:32:06 +01:00
Julien Danjou ab8d95f13d rework include 2008-01-29 11:27:14 +01:00
Julien Danjou d9298f6edb rename get_current_tags to tags_get_current() 2008-01-29 08:31:13 +01:00
Julien Danjou 6a05197297 add tag_view_byinde() 2008-01-23 08:45:02 +01:00
Julien Danjou 668702b777 move list.h and util.[ch] to common/ 2008-01-21 18:14:59 +01:00
Julien Danjou 6e4d13c9dc add a new cache system for arrange()ing 2008-01-21 16:31:15 +01:00
Julien Danjou 5f72c9f056 use tag_list_next_cycle() 2008-01-21 16:31:15 +01:00
Julien Danjou 3b1526ea5b store screen in tag 2008-01-21 16:31:15 +01:00
Julien Danjou 67c155c0dd add tag_view() function 2008-01-21 16:31:15 +01:00
Julien Danjou 2592d3032c add more functions to manipulate tags 2008-01-21 16:31:15 +01:00
Julien Danjou 4ee9cdcd67 make tag_view_prev and next to by cycling 2008-01-21 16:31:14 +01:00
Julien Danjou 94197429e5 tag_client_with_rule() only tag is a rule match 2008-01-21 16:31:14 +01:00
Julien Danjou 47ee745425 rewrite client_manage() 2008-01-21 16:31:14 +01:00
Julien Danjou f700e483d6 rename TagClientLink to tag_client_node_t 2008-01-21 16:31:14 +01:00