Comment séparer la configuration `rc.lua` d'Awesome en plusieurs fichiers?

14

Je viens de passer à Awesome WM d'OpenBox. J'aime que ce soit très extensible, personnalisable et j'ai un énorme contrôle sur la disposition des fenêtres. J'aime les choses structurées et organisées et je voudrais séparer cette énorme .config/awesome/rc.luaconfiguration en plusieurs fichiers.

kravemir
la source

Réponses:

11

Vous pouvez simplement placer le code dans un fichier séparé et l'inclure avec

dofile("somefile.lua")

Remarque: le répertoire de travail est $HOME. Pour spécifier un fichier par rapport à rc.luavous pouvez utiliser

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

Si c'est plus qu'un simple code et qu'il peut également être utilisé par d'autres, il peut être judicieux de créer un module lua qui peut être inclus avec

somemodule = require("somemodule")
Marco
la source
Cela fonctionne à 50%, je dois spécifier le chemin complet au lieu du chemin relatif
kravemir
@Miro corrigé, voir la mise à jour.
Marco
Sur Ubuntu, la fonction require d'Awesome apparaît automatiquement dans .config / awesome /, vous pouvez donc faire une demande de n'importe quel fichier que vous y mettez.
wdev
5

Pour déplacer le code dans un autre fichier, vous créez un module et vous avez besoin du module dans le rc.lua.

Pour créer un module, il vous suffit d'appeler module (name [, ···])le script contenant le code que vous avez extrait du script d'origine. Référence Lua - module .

Pour utiliser le module que vous avez créé, il vous suffit d'appeler require (modname). Référence Lua - obligatoire .

Il y a un excellent tutoriel sur le wiki Lua qui explique cela avec des exemples. Et si vous voulez voir comment ça module()marche vraiment, il y a un article sur Play With Lua qui commence par écrire une implémentation de module ().

Shawn J. Goff
la source
1
Notez qu'à partir de awesome-3.5, la version lua a été mise à jour vers 5.2, où la module()fonction est obsolète. Par conséquent, le module doit être affecté à une variable, commemodname = require ("modname")
crater2150