Bagaimana cara memisahkan konfigurasi `rc.lua` dari Awesome menjadi beberapa file?


14

Saya baru saja pindah ke Awesome WM dari OpenBox. Saya suka itu sangat dapat diperluas, dapat disesuaikan dan saya memiliki kontrol besar tentang tata letak jendela. Saya suka hal-hal yang terstruktur dan terorganisir dan saya ingin memisahkan .config/awesome/rc.luakonfigurasi besar menjadi beberapa file.

Jawaban:


11

Anda cukup menempatkan kode dalam file terpisah dan memasukkannya dengan

dofile("somefile.lua")

Catatan: Direktori kerja adalah $HOME. Untuk menentukan file yang relatif dapat rc.luaAnda gunakan

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

Jika lebih dari sekadar beberapa kode dan mungkin digunakan oleh orang lain juga, mungkin masuk akal untuk membuat modul lua yang dapat disertakan dengan

somemodule = require("somemodule")

Ini bekerja pada 50%, saya harus menentukan path lengkap daripada path relatif
kravemir

@Miro diperbaiki, lihat pembaruan.
Marco

Di Ubuntu, fungsi Awesome yang diperlukan terlihat secara otomatis di .config / awesome /, sehingga Anda dapat membuat kebutuhan dari file apa pun yang Anda masukkan ke sana.
wdev

5

Untuk memindahkan kode ke file lain, Anda membuat modul dan memerlukan modul di rc.lua.

Untuk membuat modul, Anda cukup memanggil module (name [, ···])skrip yang memiliki kode yang Anda tarik keluar dari skrip asli. Referensi Lua - modul .

Untuk menggunakan modul yang Anda buat, Anda cukup menelepon require (modname).Referensi Lua - membutuhkan .

Ada tutorial yang sangat baik tentang wiki Lua yang menjelaskan ini dengan contoh. Dan jika Anda ingin melihat cara module()kerjanya, ada artikel tentang Play With Lua yang dimulai dengan menulis implementasi modul ().


1
Perhatikan bahwa dimulai dengan awesome-3.5 versi lua diperbarui ke 5.2, di mana module()fungsinya tidak digunakan lagi. Oleh karena itu modul harus ditugaskan ke variabel, sepertimodname = require ("modname")
crater2150
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.