# # Copyright © 2011-2017 Andreas Rönnquist. # This file is distributed under the same license # as the devilspie2 package, see COPYING file. # Devilspie2 development ====================== Git is used for version control for devilpsie2. If you would like to provide code to devilspie2, the first thing to do is - learn git. Number two to think about is if you are willing to release your code as GPL. Devilspie2 is released under the GPL license version 3, and I will only accept code under that license. As with any C program, program execution starts in the main function - which is placed in devilspie2.c in this case. The main function interprets the command line options, sets up a list of script files that should be interpreted, and registers the signal for window_opened to the proper callback function. Adding a new script function ============================ Add it in script.c in the function "register_cfunctions", using a lua_register call - To add a function having the lua name "center", and connect it with the C function c_center, do this: lua_register(lua,"center", c_center); This registers a center function, that will call the c_center function in the C code. The C function should be placed in script_functions.c & its header, with the following prototype: int c_center(lua_State *lua); What is returned is an integer represeting the amount of return values that the Lua function returns. These return values are pushed to the stack using a lua_push for the correct type - for example lua_pushboolean(lua, TRUE); And logically if there are nothing to return, we simply do a "return 0;". If we need something that isn't directly implemented in libwnck, we can add a function implementing it to the file "xutils.c" - please separate stuff from script_functions if it has no need to be there, and simply call it from your function in script_functions.c. The point is to keep input and Lua interpreting to script_functions, while the actual wnck and/or X work is in the xutils files.