Как разделить конфигурацию Awesome `rc.lua` на несколько файлов?

14

Я только что перешел на Awesome WM из OpenBox. Мне нравится, что это очень расширяемый, настраиваемый, и я имею огромный контроль над макетом окна. Мне нравятся структурированные и организованные вещи, и я хотел бы разделить эту огромную .config/awesome/rc.luaконфигурацию на несколько файлов.

kravemir
источник

Ответы:

11

Вы можете просто поместить код в отдельный файл и включить его с

dofile("somefile.lua")

Примечание: рабочий каталог есть $HOME. Чтобы указать файл относительно rc.luaвас можно использовать

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

Если это больше, чем просто некоторый код, и он может быть использован другими, возможно, имеет смысл создать модуль lua, который может быть включен в

somemodule = require("somemodule")
Marco
источник
Это работает на 50%, я должен указать полный путь вместо относительного пути
kravemir
@ Миро исправлено, смотрите обновление.
Марко
В Ubuntu функция require в Awesome выглядит автоматически в .config / awesome /, поэтому вы можете запросить любой файл, который вы там поместили.
wdev
5

Чтобы переместить код в другой файл, вы создаете модуль и запрашиваете модуль в rc.lua.

Чтобы создать модуль, вы просто вызываете module (name [, ···])скрипт, в котором есть код, который вы извлекли из исходного скрипта. Lua reference - модуль .

Чтобы использовать созданный вами модуль, достаточно позвонить require (modname). Ссылка Lua - требовать .

В Lua Wiki есть отличное руководство, которое объясняет это примерами. И если вы хотите увидеть, как на module()самом деле работает, есть статья о Play With Lua, которая начинается с написания реализации module ().

Шон Дж. Гофф
источник
1
Обратите внимание, что начиная с awesome-3.5, версия lua была обновлена ​​до 5.2, где module()функция устарела. Поэтому модуль должен быть назначен переменной, напримерmodname = require ("modname")
crater2150