Hi Uli, On Wed 30.10.2013 20:28:32, Uli Schlachter wrote: > On 30.10.2013 18:42, Andre Klärner wrote: > > On Wed 30.10.2013 18:00:33, Uli Schlachter wrote: > >> On 30.10.2013 03:37, Andre Klärner wrote: > >>> as my setup at home is a bit more complex than the one on the go and at > >>> work I had to modify the xrandr screen table function a bit. To not keep > >>> it > >>> just for me I updated the wiki page for it. > >>> > >>> https://awesome.naquadah.org/wiki/XRandR_Screen_Table > >>> > >>> I'd be grateful if anyone using the script might try out the updated > >>> version and tell me if and what mistakes I made. > >> > >> I might be missing something, but I think that this code (copied from that > >> wiki > >> page): > >> > >> screens = xrandr_screens() > >> client.focus.screen = screens["VGA"] > >> > >> is equivalent to this code: > >> > >> client.focus.screen = screen.VGA.index > > > > This doesn't work for me. I tried with v3.4.15 and it first struggeled with > > the output name "DP-1", and on my laptop with an output named "LVDS" it > > also returned nothing at all. > > For DP-1, you would need screen["DP-1"].index. In lua, foo.bar is syntactic > sugar for foo["bar"], but the later is more generic and also works with > non-lua-identifiers. > > I tested this for all my screens locally with: > > $ echo 'return screen.LVDS1.index' | awesome-client > double 2 > $ echo 'return screen.VGA1.index' | awesome-client > double 1
One more item on the "switching to 3.5" list.. You really whetted my appetite with this one.. > Having written this mail and re-reading it before sending it, I notice that > you > mentioned awesome 3.4.15. A quick look confirms that 3.4 does not have this > feature. It was introduced in the following commit: > > commit 9393b2d1110b308edddf3255b5a001fe64f49478 > Author: Julien Danjou <[email protected]> > Date: Mon Sep 21 20:35:14 2009 +0200 > > screen: add index by output name (FS#361) > > Signed-off-by: Julien Danjou <[email protected]> Well, I think one should document this in the wiki. I think I read this bug report way back when I first searched for this. Unfortunately I seemingly missed the "fixed in 3.5 part". > > I tried to find the code responsible for creating the screens array, but it > > seems like I am not a really good C-reader. But if such a feature was > > available it would definately ease my day. > > Heh. :-) > > Look at screen.c, function luaA_screen_module_index(). This function is called > whenever you index the screen object. It's implementation is: > > /** Screen module. > * \param L The Lua VM state. > * \return The number of elements pushed on stack. > * \luastack > * \lfield number The screen number, to get a screen. > */ > static int > luaA_screen_module_index(lua_State *L) > { > const char *name; > > if((name = lua_tostring(L, 2))) > foreach(screen, globalconf.screens) > foreach(output, screen->outputs) > if(A_STREQ(output->name, name)) > return luaA_pushscreen(L, screen); > > int screen = luaL_checknumber(L, 2) - 1; > luaA_checkscreen(screen); > return luaA_pushscreen(L, &globalconf.screens.tab[screen]); > } > > So it checks all screens and for each of its output, it checks its name (a > screen can have more than one output! A screen object tells you about its > output > with the "outputs" key. This is a table with the keys being the output name > and > the values being another table with entries "mm_width" and "mm_height") Well, obviously this can't be found in 3.4's code (as I checked it out via apt-source..). But I am still very impressed.. there should be a how-to on reading source code.. ;) Thanks a lot, I think it won't take long until I finally get around switching to 3.5. > Uli > -- > Bruce Schneier can read and understand Perl programs. and I guess also C ;) Regards, Andre -- Andre Klärner
smime.p7s
Description: S/MIME cryptographic signature
