Wie trenne ich die `rc.lua` -Konfiguration von Awesome in mehrere Dateien?

14

Ich bin gerade von OpenBox zu Awesome WM gewechselt. Mir gefällt, dass es sehr erweiterbar und anpassbar ist und ich eine große Kontrolle über das Fensterlayout habe. Ich mag strukturierte und organisierte Dinge und möchte diese riesige .config/awesome/rc.luaKonfiguration in mehrere Dateien aufteilen.

Kravemir
quelle

Antworten:

11

Sie können Code einfach in eine separate Datei einfügen und in diese einbinden

dofile("somefile.lua")

Hinweis: Das Arbeitsverzeichnis lautet $HOME. Zum Angeben einer Datei relativ zu können rc.luaSie verwenden

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

Wenn es sich um mehr als nur einen Code handelt und dieser auch von anderen verwendet werden kann, ist es möglicherweise sinnvoll, ein Lua-Modul zu erstellen, das in den Code aufgenommen werden kann

somemodule = require("somemodule")
Marco
quelle
Es funktioniert mit 50%, ich muss den vollständigen Pfad anstelle des relativen Pfads angeben
kravemir
@Miro behoben, siehe Update.
Marco
Unter Ubuntu sieht die Require-Funktion von Awesome automatisch in .config / awesome / aus, sodass Sie von jeder Datei, die Sie dort ablegen, eine Require-Datei erstellen können.
wdev
5

Um Code in eine andere Datei zu verschieben, erstellen Sie ein Modul und benötigen das Modul in der rc.lua.

Um ein Modul zu erstellen, rufen Sie einfach module (name [, ···])das Skript auf, das den Code enthält, den Sie aus dem ursprünglichen Skript gezogen haben. Lua Referenz - Modul .

Um das von Ihnen erstellte Modul zu verwenden, rufen Sie einfach an require (modname). Lua Hinweis - erfordern .

Es gibt ein exzellentes Tutorial im Lua-Wiki , das dies anhand von Beispielen erklärt. Und wenn Sie sehen möchten, wie es module()wirklich funktioniert, gibt es einen Artikel über Play With Lua , in dem zunächst eine Implementierung von module () geschrieben wird.

Shawn J. Goff
quelle
1
Beachten Sie, dass ab awesome-3.5 die lua-Version auf 5.2 aktualisiert wurde, wobei die module()Funktion veraltet ist. Daher muss das Modul einer Variablen zugewiesen werden, z. B.modname = require ("modname")
crater2150