Add Lua config without kiwmi lib
This commit is contained in:
parent
feb8dfc7f4
commit
9b2cd6b985
6 changed files with 67 additions and 0 deletions
19
include/luak.h
Normal file
19
include/luak.h
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
/* Copyright (c), Niclas Meyer <niclas@countingsort.com>
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||||
|
* You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef KIWMI_LUAK_H
|
||||||
|
#define KIWMI_LUAK_H
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include <lua.h>
|
||||||
|
|
||||||
|
#include "server.h"
|
||||||
|
|
||||||
|
bool luaK_init(struct kiwmi_server *server);
|
||||||
|
|
||||||
|
#endif /* KIWMI_LUAK_H */
|
|
@ -10,6 +10,8 @@
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include <lua.h>
|
||||||
|
|
||||||
#include "desktop/desktop.h"
|
#include "desktop/desktop.h"
|
||||||
#include "input/input.h"
|
#include "input/input.h"
|
||||||
|
|
||||||
|
@ -19,6 +21,7 @@ struct kiwmi_server {
|
||||||
struct wlr_backend *backend;
|
struct wlr_backend *backend;
|
||||||
const char *socket;
|
const char *socket;
|
||||||
char *config_path;
|
char *config_path;
|
||||||
|
lua_State *L;
|
||||||
struct kiwmi_desktop desktop;
|
struct kiwmi_desktop desktop;
|
||||||
struct kiwmi_input input;
|
struct kiwmi_input input;
|
||||||
};
|
};
|
||||||
|
|
27
kiwmi/luak.c
Normal file
27
kiwmi/luak.c
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
/* Copyright (c), Niclas Meyer <niclas@countingsort.com>
|
||||||
|
*
|
||||||
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||||
|
* You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "luak.h"
|
||||||
|
|
||||||
|
#include <lauxlib.h>
|
||||||
|
#include <lualib.h>
|
||||||
|
|
||||||
|
bool
|
||||||
|
luaK_init(struct kiwmi_server *server)
|
||||||
|
{
|
||||||
|
lua_State *L = luaL_newstate();
|
||||||
|
if (!L) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
luaL_openlibs(L);
|
||||||
|
|
||||||
|
// TODO: kiwmi library
|
||||||
|
|
||||||
|
server->L = L;
|
||||||
|
return true;
|
||||||
|
}
|
|
@ -1,4 +1,5 @@
|
||||||
kiwmi_sources = files(
|
kiwmi_sources = files(
|
||||||
|
'luak.c',
|
||||||
'main.c',
|
'main.c',
|
||||||
'server.c',
|
'server.c',
|
||||||
'desktop/desktop.c',
|
'desktop/desktop.c',
|
||||||
|
@ -9,6 +10,7 @@ kiwmi_sources = files(
|
||||||
)
|
)
|
||||||
|
|
||||||
kiwmi_deps = [
|
kiwmi_deps = [
|
||||||
|
lua,
|
||||||
wayland_server,
|
wayland_server,
|
||||||
wlroots,
|
wlroots,
|
||||||
xkbcommon,
|
xkbcommon,
|
||||||
|
|
|
@ -12,11 +12,14 @@
|
||||||
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
|
#include <lauxlib.h>
|
||||||
#include <wayland-server.h>
|
#include <wayland-server.h>
|
||||||
#include <wlr/backend.h>
|
#include <wlr/backend.h>
|
||||||
#include <wlr/render/wlr_renderer.h>
|
#include <wlr/render/wlr_renderer.h>
|
||||||
#include <wlr/util/log.h>
|
#include <wlr/util/log.h>
|
||||||
|
|
||||||
|
#include "luak.h"
|
||||||
|
|
||||||
bool
|
bool
|
||||||
server_init(struct kiwmi_server *server, char *config_path)
|
server_init(struct kiwmi_server *server, char *config_path)
|
||||||
{
|
{
|
||||||
|
@ -73,6 +76,12 @@ server_init(struct kiwmi_server *server, char *config_path)
|
||||||
|
|
||||||
server->config_path = config_path;
|
server->config_path = config_path;
|
||||||
|
|
||||||
|
if (!luaK_init(server)) {
|
||||||
|
wlr_log(WLR_ERROR, "Failed to initialize Lua");
|
||||||
|
wl_display_destroy(server->wl_display);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,6 +99,12 @@ server_run(struct kiwmi_server *server)
|
||||||
|
|
||||||
setenv("WAYLAND_DISPLAY", server->socket, true);
|
setenv("WAYLAND_DISPLAY", server->socket, true);
|
||||||
|
|
||||||
|
if (luaL_dofile(server->L, server->config_path)) {
|
||||||
|
wlr_log(WLR_ERROR, "Error running config: %s", lua_tostring(server->L, -1));
|
||||||
|
wl_display_destroy(server->wl_display);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
wl_display_run(server->wl_display);
|
wl_display_run(server->wl_display);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -17,6 +17,7 @@ add_project_arguments(
|
||||||
)
|
)
|
||||||
|
|
||||||
git = find_program('git', required: false)
|
git = find_program('git', required: false)
|
||||||
|
lua = dependency('lua')
|
||||||
wayland_server = dependency('wayland-server')
|
wayland_server = dependency('wayland-server')
|
||||||
wlroots = dependency('wlroots')
|
wlroots = dependency('wlroots')
|
||||||
xkbcommon = dependency('xkbcommon')
|
xkbcommon = dependency('xkbcommon')
|
||||||
|
|
Loading…
Reference in a new issue