Cum să separați configurația `rc.lua` a lui Awesome ' în mai multe fișiere?

Tocmai m-am mutat în Awesome WM din OpenBox. Îmi place că este foarte extensibil, personalizabil și am un control imens asupra aspectului ferestrei. Îmi plac lucrurile structurate și organizate și „aș dori să separ acea configurație imensă .config/awesome/rc.lua în mai multe fișiere.

Răspunde

Puteți pur și simplu plasa cod într-un fișier separat și îl puteți include cu

dofile("somefile.lua") 

Notă: Directorul de lucru este $HOME. Pentru a specifica un fișier relativ la rc.lua puteți utiliza

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

Dacă este mai mult decât un cod și ar putea fi folosit și de alții, ar putea avea sens să creăm un modul lua care poate fi inclus cu

somemodule = require("somemodule") 

Comentarii

  • Funcționează la 50%, trebuie să specific calea completă în loc de calea relativă
  • @Miro remediat, consultați actualizarea.
  • Pe Ubuntu, funcția Awesome ' necesită funcționarea automată în .config / awesome /, astfel încât să puteți solicita orice fișier pe care îl aveți pune acolo.

Răspuns

Pentru a muta codul într-un fișier diferit, creați un modul și solicitați modulul în rc.lua.

Pentru a crea un modul, pur și simplu apelați module (name [, ···]) în scriptul care conține codul pe care l-ați scos din scriptul original. Lua reference – module .

Pentru a utiliza modulul pe care l-ați creat, trebuie doar să apelați require (modname) . Lua reference – require .

Există un excelent tutorial pe Lua wiki care explică acest lucru cu exemple. Și dacă doriți să vedeți cum funcționează cu adevărat module(), există un articol despre Play With Lua care începe prin a scrie o implementare a modulului ().

Comentarii

  • Rețineți că începând cu awesome-3.5 versiunea lua a fost actualizată la 5.2, unde module() funcția este depreciată. Prin urmare, modulul trebuie atribuit unei variabile, cum ar fi modname = require ("modname")

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *