¿Cómo separar la configuración `rc.lua` de Awesome en múltiples archivos?


14

Me acabo de mudar a Awesome WM desde OpenBox. Me gusta que sea muy extensible, personalizable y tengo un gran control sobre el diseño de la ventana. Me gustan las cosas estructuradas y organizadas y me gustaría separar esa gran .config/awesome/rc.luaconfiguración en varios archivos.

Respuestas:


11

Simplemente puede colocar el código en un archivo separado e incluirlo con

dofile("somefile.lua")

Nota: El directorio de trabajo es $HOME. Para especificar un archivo relativo a rc.luausted puede usar

dofile(awful.util.getdir("config") .. "/" .. "somefile.lua")

Si se trata de algo más que un código y también podría ser utilizado por otros, podría tener sentido crear un módulo lua que se pueda incluir con

somemodule = require("somemodule")

Funciona al 50%, tengo que especificar la ruta completa en lugar de la ruta relativa
kravemir

@Miro arreglado, ver actualización.
Marco

En Ubuntu, la función require de Awesome se ve automáticamente en .config / awesome /, por lo que puede solicitar cualquier archivo que coloque allí.
wdev

5

Para mover el código a un archivo diferente, cree un módulo y requiera el módulo en rc.lua.

Para crear un módulo, simplemente llame module (name [, ···])al script que tiene el código que extrajo del script original. Referencia de Lua - módulo .

Para usar el módulo que creó, simplemente llame require (modname). Referencia de Lua - requiere .

Hay un excelente tutorial en el wiki de Lua que explica esto con ejemplos. Y si quieres ver cómo module()funciona realmente, hay un artículo sobre Play With Lua que comienza escribiendo una implementación de module ().


1
Tenga en cuenta que a partir de awesome-3.5 la versión de lua se actualizó a 5.2, donde la module()función está en desuso. Por lo tanto, el módulo debe asignarse a una variable, comomodname = require ("modname")
crater2150
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.