Giter Site home page Giter Site logo

stratawm / strata Goto Github PK

View Code? Open in Web Editor NEW
158.0 12.0 7.0 601 KB

A cutting-edge, robust and sleek Wayland compositor with batteries included.

Home Page: https://stratawm.github.io

License: GNU General Public License v3.0

Rust 94.32% GLSL 0.93% Shell 0.08% Lua 2.78% Nix 1.47% Makefile 0.41%
cargo linux rust rust-wayland smithay tty wayland wayland-compositor window-manager windowmanager

strata's People

Contributors

anantnrg avatar calops avatar halfarne avatar julianbraha avatar murderm3l0dy avatar oakleycord avatar vazw avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

strata's Issues

linked github pages site 404'ed

Clicking through the Github Pages link in the description renders a 404, which given how new this is I am sure you know but just in case here is an issue.

Interesting project, looking forward to seeing where it goes.

Better docs site

Currently, the documentation uses mdBook and while its certainly powerful and easy to use, its pretty unintuitive to extend the default theme. I've tried making a custom template using Handlebar but its pretty difficult.

IMHO, i think we would be better off with VitePress. Its fast, has a beautiful theme by default, its easily extensible, and it uses Vue, which is pretty easy to learn.

Strata v1.0.0

This is a list of things/features/bug fixes to be implemented before the first stable release of Strata. Figured it was easier to keep track this way.

Add support for extending WM functionality using a scripting language.

Currently all the configuration is done using TOML. Would love to implement support for extending functionality like custom layouts and window management stuff eg., grouping together windows of different programs like PekWM. Language of choice should be something like Lua, Nickel, Haskell or the like.

Add keybinding detection

Now that we have a working config which returns the keybinds, we need to detect those keybinds and then run the corresponding function. Will probably need to map the keys in the config to the actual keycodes so that they can be detected. I'll start working on it but for now the progress will be slow. Any help is greatly appreciated. Cheers :)

Failed to compile on NixOS

I can't compile the code on Nixos.

I tried it using nix-shell with Rust 1.7.1 and even in Flake. In both cases it produced same errors:

    Checking cfg-if v1.0.0
    Checking bitflags v1.3.2
    Checking smallvec v1.11.0
    Checking log v0.4.19
    Checking once_cell v1.18.0
    Checking libc v0.2.147
    Checking lazy_static v1.4.0
    Checking pin-utils v0.1.0
    Checking scoped-tls v1.0.1
    Checking memoffset v0.7.1
    Checking memoffset v0.6.5
    Checking downcast-rs v1.2.0
    Checking libloading v0.8.0
    Checking static_assertions v1.1.0
    Checking memchr v2.5.0
    Checking bitflags v2.3.3
    Checking linux-raw-sys v0.4.3
    Checking num-traits v0.2.16
    Checking encoding_index_tests v0.1.4
    Checking minimal-lexical v0.2.1
    Checking pin-project-lite v0.2.10
    Checking thiserror v1.0.44
    Checking bytemuck v1.13.1
    Checking dlib v0.5.2
    Checking slotmap v1.0.6
    Checking drm-fourcc v2.2.0
    Checking tracing-core v0.1.31
    Checking vec_map v0.8.2
    Checking wayland-sys v0.30.1
    Checking wayland-sys v0.29.5
    Checking regex-syntax v0.7.4
    Checking utf8parse v0.2.1
    Checking scopeguard v1.2.0
    Checking regex-syntax v0.6.29
   Compiling mlua-sys v0.3.0
    Checking anstyle-parse v0.2.1
    Checking serde v1.0.177
    Checking anstyle v1.0.1
    Checking overload v0.1.1
    Checking anstyle-query v1.0.0
    Checking nom v7.1.3
    Checking ppv-lite86 v0.2.17
    Checking tracing v0.1.37
    Checking colorchoice v1.0.0
    Checking rustix v0.38.4
    Checking tracing-log v0.1.3
    Checking nu-ansi-term v0.46.0
    Checking lock_api v0.4.10
    Checking libseat-sys v0.1.7
    Checking slog v2.7.0
    Checking crossbeam-utils v0.8.16
    Checking thread_local v1.1.7
    Checking encoding-index-korean v1.20141219.5
    Checking ordered-float v2.10.0
    Checking approx v0.4.0
    Checking encoding-index-simpchinese v1.20141219.5
    Checking encoding-index-tradchinese v1.20141219.5
    Checking encoding-index-singlebyte v1.20141219.5
    Checking encoding-index-japanese v1.20141219.5
    Checking sharded-slab v0.1.4
    Checking instant v0.1.12
    Checking libloading v0.7.4
    Checking strsim v0.10.0
    Checking percent-encoding v2.3.0
    Checking time-core v0.1.1
    Checking hashbrown v0.12.3
    Checking clap_lex v0.5.0
    Checking fastrand v2.0.0
    Checking itoa v1.0.9
    Checking nix v0.26.2
    Checking io-lifetimes v1.0.11
    Checking nix v0.24.3
    Checking nix v0.25.1
    Checking drm-sys v0.4.0
    Checking getrandom v0.2.10
    Checking rand_core v0.6.4
    Checking regex-automata v0.3.3
    Checking libudev-sys v0.1.4
    Checking memmap2 v0.5.10
    Checking mio v0.8.8
    Checking udev v0.7.0
    Checking rand_chacha v0.3.1
    Checking memmap2 v0.7.1
    Checking input-sys v1.17.0
    Checking x11-dl v2.21.0
    Checking xcursor v0.3.4
    Checking parking_lot_core v0.9.8
    Checking gethostname v0.2.3
    Checking regex-automata v0.1.10
    Checking errno v0.2.8
    Checking gbm-sys v0.2.2
    Checking raw-window-handle v0.5.2
    Checking libseat v0.1.7
    Checking parking_lot v0.12.1
    Checking input v0.8.3
    Checking rand v0.8.5
    Checking xkbcommon v0.5.1
    Checking is-terminal v0.4.9
    Checking anstream v0.3.2
    Checking clap_builder v4.3.19
    Checking tempfile v3.7.0
    Checking wayland-commons v0.29.5
    Checking matchers v0.1.0
    Checking indexmap v1.9.3
    Checking time v0.3.23
    Checking num_cpus v1.16.0
    Checking calloop v0.10.6
    Checking x11rb-protocol v0.11.1
    Checking wayland-client v0.29.5
    Checking socket2 v0.4.9
    Checking regex v1.9.1
    Checking signal-hook-registry v1.4.1
    Checking time v0.1.45
    Checking encoding v0.2.33
    Checking serde-value v0.7.0
    Checking erased-serde v0.3.28
    Checking tracing-subscriber v0.3.17
    Checking ash v0.37.3+1.3.251
    Checking crossbeam-channel v0.5.8
    Checking cgmath v0.18.0
    Checking profiling v1.0.8
    Checking bstr v1.6.0
    Checking iana-time-zone v0.1.57
    Checking appendlist v1.4.0
    Checking scan_fmt v0.2.6
    Checking bytes v1.4.0
    Checking edid-rs v0.1.0
    Checking wayland-protocols v0.29.5
    Checking wayland-cursor v0.29.5
    Checking glow v0.12.3
    Checking rustc-hash v1.1.0
    Checking chrono v0.4.26
    Checking tokio v1.29.1
    Checking clap v4.3.19
    Checking anyhow v1.0.72
    Checking colored v2.0.4
    Checking tracing-appender v0.2.2
    Checking wayland-backend v0.1.2
    Checking drm-ffi v0.5.0
    Checking drm v0.9.0
    Checking gbm v0.12.0
    Checking smithay-drm-extras v0.1.0 (https://github.com/Smithay/smithay.git#4067f083)
    Checking wayland-server v0.30.1
    Checking wayland-egl v0.30.0
    Checking wayland-protocols v0.30.1
    Checking smithay-client-toolkit v0.16.0
    Checking winit v0.28.6
    Checking wayland-protocols-misc v0.1.0
    Checking wayland-protocols-wlr v0.1.0
    Checking x11rb v0.11.1
    Checking mlua v0.9.0-rc.2
    Checking smithay v0.3.0 (https://github.com/smithay/smithay?rev=4067f08#4067f083)
    Checking stratawm v0.0.1 (~/stratawm)
error[E0106]: missing lifetime specifier
  --> src/libs/parse_config.rs:13:63
   |
13 | pub fn parse_config() -> Result<(Config, HashMap<Vec<String>, Function>)> {
   |                                                               ^^^^^^^^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'static` lifetime
   |
13 | pub fn parse_config() -> Result<(Config, HashMap<Vec<String>, Function<'static>>)> {
   |                                                                       +++++++++

error[E0106]: missing lifetime specifier
  --> src/libs/structs/config.rs:71:12
   |
71 |     pub func: Function,
   |               ^^^^^^^^ expected named lifetime parameter
   |
help: consider introducing a named lifetime parameter
   |
69 ~ pub struct Keybinding<'a> {
70 |     pub keys: Vec<String>,
71 ~     pub func: Function<'a>,
   |

warning: unused import: `serde_derive::Deserialize`
 --> src/libs/structs/config.rs:4:5
  |
4 | use serde_derive::Deserialize;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

error[E0277]: `*mut mlua::lua_State` cannot be shared between threads safely
   --> src/libs/structs/config.rs:85:20
    |
85  | pub static CONFIG: Lazy<Config> = Lazy::new(parse_config);
    |                    ^^^^^^^^^^^^ `*mut mlua::lua_State` cannot be shared between threads safely
    |
    = help: within `mlua::lua::LuaInner`, the trait `std::marker::Sync` is not implemented for `*mut mlua::lua_State`
note: required because it appears within the type `LuaInner`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:73:12
    |
73  | pub struct LuaInner {
    |            ^^^^^^^^
    = note: required for `std::sync::Arc<mlua::lua::LuaInner>` to implement `std::marker::Sync`
note: required because it appears within the type `Lua`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:70:12
    |
70  | pub struct Lua(Arc<LuaInner>);
    |            ^^^
    = note: required because it appears within the type `&Lua`
note: required because it appears within the type `LuaRef<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:272:19
    |
272 | pub(crate) struct LuaRef<'lua> {
    |                   ^^^^^^
note: required because it appears within the type `Function<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/function.rs:26:12
    |
26  | pub struct Function<'lua>(pub(crate) LuaRef<'lua>);
    |            ^^^^^^^^
note: required because it appears within the type `Keybinding`
   --> src/libs/structs/config.rs:69:12
    |
69  | pub struct Keybinding {
    |            ^^^^^^^^^^
    = note: required for `std::ptr::Unique<libs::structs::config::Keybinding>` to implement `std::marker::Sync`
note: required because it appears within the type `RawVec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `Config`
   --> src/libs/structs/config.rs:75:12
    |
75  | pub struct Config {
    |            ^^^^^^
    = note: required for `once_cell::imp::OnceCell<libs::structs::config::Config>` to implement `std::marker::Sync`
note: required because it appears within the type `OnceCell<Config>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.18.0/src/lib.rs:903:16
    |
903 |     pub struct OnceCell<T>(Imp<T>);
    |                ^^^^^^^^
    = note: required for `once_cell::sync::Lazy<libs::structs::config::Config>` to implement `std::marker::Sync`
    = note: shared static variables must have a type that implements `Sync`

error[E0277]: `*mut mlua::lua_State` cannot be sent between threads safely
   --> src/libs/structs/config.rs:85:20
    |
85  | pub static CONFIG: Lazy<Config> = Lazy::new(parse_config);
    |                    ^^^^^^^^^^^^ `*mut mlua::lua_State` cannot be sent between threads safely
    |
    = help: within `mlua::lua::LuaInner`, the trait `std::marker::Send` is not implemented for `*mut mlua::lua_State`
note: required because it appears within the type `LuaInner`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:73:12
    |
73  | pub struct LuaInner {
    |            ^^^^^^^^
    = note: required for `std::sync::Arc<mlua::lua::LuaInner>` to implement `std::marker::Sync`
note: required because it appears within the type `Lua`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:70:12
    |
70  | pub struct Lua(Arc<LuaInner>);
    |            ^^^
    = note: required because it appears within the type `&Lua`
note: required because it appears within the type `LuaRef<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:272:19
    |
272 | pub(crate) struct LuaRef<'lua> {
    |                   ^^^^^^
note: required because it appears within the type `Function<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/function.rs:26:12
    |
26  | pub struct Function<'lua>(pub(crate) LuaRef<'lua>);
    |            ^^^^^^^^
note: required because it appears within the type `Keybinding`
   --> src/libs/structs/config.rs:69:12
    |
69  | pub struct Keybinding {
    |            ^^^^^^^^^^
    = note: required for `std::ptr::Unique<libs::structs::config::Keybinding>` to implement `std::marker::Sync`
note: required because it appears within the type `RawVec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `Config`
   --> src/libs/structs/config.rs:75:12
    |
75  | pub struct Config {
    |            ^^^^^^
    = note: required for `once_cell::imp::OnceCell<libs::structs::config::Config>` to implement `std::marker::Sync`
note: required because it appears within the type `OnceCell<Config>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.18.0/src/lib.rs:903:16
    |
903 |     pub struct OnceCell<T>(Imp<T>);
    |                ^^^^^^^^
    = note: required for `once_cell::sync::Lazy<libs::structs::config::Config>` to implement `std::marker::Sync`
    = note: shared static variables must have a type that implements `Sync`

error[E0277]: `std::cell::UnsafeCell<mlua::lua::ExtraData>` cannot be shared between threads safely
   --> src/libs/structs/config.rs:85:20
    |
85  | pub static CONFIG: Lazy<Config> = Lazy::new(parse_config);
    |                    ^^^^^^^^^^^^ `std::cell::UnsafeCell<mlua::lua::ExtraData>` cannot be shared between threads safely
    |
    = help: the trait `std::marker::Sync` is not implemented for `std::cell::UnsafeCell<mlua::lua::ExtraData>`
    = note: required for `std::sync::Arc<std::cell::UnsafeCell<mlua::lua::ExtraData>>` to implement `std::marker::Sync`
note: required because it appears within the type `LuaInner`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:73:12
    |
73  | pub struct LuaInner {
    |            ^^^^^^^^
    = note: required for `std::sync::Arc<mlua::lua::LuaInner>` to implement `std::marker::Sync`
note: required because it appears within the type `Lua`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:70:12
    |
70  | pub struct Lua(Arc<LuaInner>);
    |            ^^^
    = note: required because it appears within the type `&Lua`
note: required because it appears within the type `LuaRef<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:272:19
    |
272 | pub(crate) struct LuaRef<'lua> {
    |                   ^^^^^^
note: required because it appears within the type `Function<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/function.rs:26:12
    |
26  | pub struct Function<'lua>(pub(crate) LuaRef<'lua>);
    |            ^^^^^^^^
note: required because it appears within the type `Keybinding`
   --> src/libs/structs/config.rs:69:12
    |
69  | pub struct Keybinding {
    |            ^^^^^^^^^^
    = note: required for `std::ptr::Unique<libs::structs::config::Keybinding>` to implement `std::marker::Sync`
note: required because it appears within the type `RawVec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `Config`
   --> src/libs/structs/config.rs:75:12
    |
75  | pub struct Config {
    |            ^^^^^^
    = note: required for `once_cell::imp::OnceCell<libs::structs::config::Config>` to implement `std::marker::Sync`
note: required because it appears within the type `OnceCell<Config>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.18.0/src/lib.rs:903:16
    |
903 |     pub struct OnceCell<T>(Imp<T>);
    |                ^^^^^^^^
    = note: required for `once_cell::sync::Lazy<libs::structs::config::Config>` to implement `std::marker::Sync`
    = note: shared static variables must have a type that implements `Sync`

error[E0277]: `*const std::ffi::c_void` cannot be sent between threads safely
   --> src/libs/structs/config.rs:85:20
    |
85  | pub static CONFIG: Lazy<Config> = Lazy::new(parse_config);
    |                    ^^^^^^^^^^^^ `*const std::ffi::c_void` cannot be sent between threads safely
    |
    = help: within `std::cell::UnsafeCell<mlua::lua::ExtraData>`, the trait `std::marker::Send` is not implemented for `*const std::ffi::c_void`
note: required because it appears within the type `ExtraData`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:81:19
    |
81  | pub(crate) struct ExtraData {
    |                   ^^^^^^^^^
note: required because it appears within the type `UnsafeCell<ExtraData>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/cell.rs:1986:12
    = note: required for `std::sync::Arc<std::cell::UnsafeCell<mlua::lua::ExtraData>>` to implement `std::marker::Sync`
note: required because it appears within the type `LuaInner`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:73:12
    |
73  | pub struct LuaInner {
    |            ^^^^^^^^
    = note: required for `std::sync::Arc<mlua::lua::LuaInner>` to implement `std::marker::Sync`
note: required because it appears within the type `Lua`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:70:12
    |
70  | pub struct Lua(Arc<LuaInner>);
    |            ^^^
    = note: required because it appears within the type `&Lua`
note: required because it appears within the type `LuaRef<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:272:19
    |
272 | pub(crate) struct LuaRef<'lua> {
    |                   ^^^^^^
note: required because it appears within the type `Function<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/function.rs:26:12
    |
26  | pub struct Function<'lua>(pub(crate) LuaRef<'lua>);
    |            ^^^^^^^^
note: required because it appears within the type `Keybinding`
   --> src/libs/structs/config.rs:69:12
    |
69  | pub struct Keybinding {
    |            ^^^^^^^^^^
    = note: required for `std::ptr::Unique<libs::structs::config::Keybinding>` to implement `std::marker::Sync`
note: required because it appears within the type `RawVec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `Config`
   --> src/libs/structs/config.rs:75:12
    |
75  | pub struct Config {
    |            ^^^^^^
    = note: required for `once_cell::imp::OnceCell<libs::structs::config::Config>` to implement `std::marker::Sync`
note: required because it appears within the type `OnceCell<Config>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.18.0/src/lib.rs:903:16
    |
903 |     pub struct OnceCell<T>(Imp<T>);
    |                ^^^^^^^^
    = note: required for `once_cell::sync::Lazy<libs::structs::config::Config>` to implement `std::marker::Sync`
    = note: shared static variables must have a type that implements `Sync`

error[E0277]: `std::ptr::NonNull<mlua::memory::MemoryState>` cannot be sent between threads safely
   --> src/libs/structs/config.rs:85:20
    |
85  | pub static CONFIG: Lazy<Config> = Lazy::new(parse_config);
    |                    ^^^^^^^^^^^^ `std::ptr::NonNull<mlua::memory::MemoryState>` cannot be sent between threads safely
    |
    = help: within `std::cell::UnsafeCell<mlua::lua::ExtraData>`, the trait `std::marker::Send` is not implemented for `std::ptr::NonNull<mlua::memory::MemoryState>`
note: required because it appears within the type `Option<NonNull<MemoryState>>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/option.rs:563:10
note: required because it appears within the type `ExtraData`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:81:19
    |
81  | pub(crate) struct ExtraData {
    |                   ^^^^^^^^^
note: required because it appears within the type `UnsafeCell<ExtraData>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/cell.rs:1986:12
    = note: required for `std::sync::Arc<std::cell::UnsafeCell<mlua::lua::ExtraData>>` to implement `std::marker::Sync`
note: required because it appears within the type `LuaInner`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:73:12
    |
73  | pub struct LuaInner {
    |            ^^^^^^^^
    = note: required for `std::sync::Arc<mlua::lua::LuaInner>` to implement `std::marker::Sync`
note: required because it appears within the type `Lua`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:70:12
    |
70  | pub struct Lua(Arc<LuaInner>);
    |            ^^^
    = note: required because it appears within the type `&Lua`
note: required because it appears within the type `LuaRef<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:272:19
    |
272 | pub(crate) struct LuaRef<'lua> {
    |                   ^^^^^^
note: required because it appears within the type `Function<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/function.rs:26:12
    |
26  | pub struct Function<'lua>(pub(crate) LuaRef<'lua>);
    |            ^^^^^^^^
note: required because it appears within the type `Keybinding`
   --> src/libs/structs/config.rs:69:12
    |
69  | pub struct Keybinding {
    |            ^^^^^^^^^^
    = note: required for `std::ptr::Unique<libs::structs::config::Keybinding>` to implement `std::marker::Sync`
note: required because it appears within the type `RawVec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `Config`
   --> src/libs/structs/config.rs:75:12
    |
75  | pub struct Config {
    |            ^^^^^^
    = note: required for `once_cell::imp::OnceCell<libs::structs::config::Config>` to implement `std::marker::Sync`
note: required because it appears within the type `OnceCell<Config>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.18.0/src/lib.rs:903:16
    |
903 |     pub struct OnceCell<T>(Imp<T>);
    |                ^^^^^^^^
    = note: required for `once_cell::sync::Lazy<libs::structs::config::Config>` to implement `std::marker::Sync`
    = note: shared static variables must have a type that implements `Sync`

error[E0277]: `(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, mlua::Debug<'b>) -> std::result::Result<(), mlua::Error> + 'static)` cannot be shared between threads safely
   --> src/libs/structs/config.rs:85:20
    |
85  | pub static CONFIG: Lazy<Config> = Lazy::new(parse_config);
    |                    ^^^^^^^^^^^^ `(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, mlua::Debug<'b>) -> std::result::Result<(), mlua::Error> + 'static)` cannot be shared between threads safely
    |
    = help: the trait `std::marker::Sync` is not implemented for `(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, mlua::Debug<'b>) -> std::result::Result<(), mlua::Error> + 'static)`
    = note: required for `std::sync::Arc<(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, mlua::Debug<'b>) -> std::result::Result<(), mlua::Error> + 'static)>` to implement `std::marker::Send`
note: required because it appears within the type `Option<Arc<dyn Fn(&Lua, Debug<'b>) -> Result<(), Error>>>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/option.rs:563:10
note: required because it appears within the type `ExtraData`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:81:19
    |
81  | pub(crate) struct ExtraData {
    |                   ^^^^^^^^^
note: required because it appears within the type `UnsafeCell<ExtraData>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/cell.rs:1986:12
    = note: required for `std::sync::Arc<std::cell::UnsafeCell<mlua::lua::ExtraData>>` to implement `std::marker::Sync`
note: required because it appears within the type `LuaInner`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:73:12
    |
73  | pub struct LuaInner {
    |            ^^^^^^^^
    = note: required for `std::sync::Arc<mlua::lua::LuaInner>` to implement `std::marker::Sync`
note: required because it appears within the type `Lua`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:70:12
    |
70  | pub struct Lua(Arc<LuaInner>);
    |            ^^^
    = note: required because it appears within the type `&Lua`
note: required because it appears within the type `LuaRef<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:272:19
    |
272 | pub(crate) struct LuaRef<'lua> {
    |                   ^^^^^^
note: required because it appears within the type `Function<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/function.rs:26:12
    |
26  | pub struct Function<'lua>(pub(crate) LuaRef<'lua>);
    |            ^^^^^^^^
note: required because it appears within the type `Keybinding`
   --> src/libs/structs/config.rs:69:12
    |
69  | pub struct Keybinding {
    |            ^^^^^^^^^^
    = note: required for `std::ptr::Unique<libs::structs::config::Keybinding>` to implement `std::marker::Sync`
note: required because it appears within the type `RawVec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `Config`
   --> src/libs/structs/config.rs:75:12
    |
75  | pub struct Config {
    |            ^^^^^^
    = note: required for `once_cell::imp::OnceCell<libs::structs::config::Config>` to implement `std::marker::Sync`
note: required because it appears within the type `OnceCell<Config>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.18.0/src/lib.rs:903:16
    |
903 |     pub struct OnceCell<T>(Imp<T>);
    |                ^^^^^^^^
    = note: required for `once_cell::sync::Lazy<libs::structs::config::Config>` to implement `std::marker::Sync`
    = note: shared static variables must have a type that implements `Sync`

error[E0277]: `(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, mlua::Debug<'b>) -> std::result::Result<(), mlua::Error> + 'static)` cannot be sent between threads safely
   --> src/libs/structs/config.rs:85:20
    |
85  | pub static CONFIG: Lazy<Config> = Lazy::new(parse_config);
    |                    ^^^^^^^^^^^^ `(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, mlua::Debug<'b>) -> std::result::Result<(), mlua::Error> + 'static)` cannot be sent between threads safely
    |
    = help: the trait `std::marker::Send` is not implemented for `(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, mlua::Debug<'b>) -> std::result::Result<(), mlua::Error> + 'static)`
    = note: required for `std::sync::Arc<(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, mlua::Debug<'b>) -> std::result::Result<(), mlua::Error> + 'static)>` to implement `std::marker::Send`
note: required because it appears within the type `Option<Arc<dyn Fn(&Lua, Debug<'b>) -> Result<(), Error>>>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/option.rs:563:10
note: required because it appears within the type `ExtraData`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:81:19
    |
81  | pub(crate) struct ExtraData {
    |                   ^^^^^^^^^
note: required because it appears within the type `UnsafeCell<ExtraData>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/cell.rs:1986:12
    = note: required for `std::sync::Arc<std::cell::UnsafeCell<mlua::lua::ExtraData>>` to implement `std::marker::Sync`
note: required because it appears within the type `LuaInner`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:73:12
    |
73  | pub struct LuaInner {
    |            ^^^^^^^^
    = note: required for `std::sync::Arc<mlua::lua::LuaInner>` to implement `std::marker::Sync`
note: required because it appears within the type `Lua`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:70:12
    |
70  | pub struct Lua(Arc<LuaInner>);
    |            ^^^
    = note: required because it appears within the type `&Lua`
note: required because it appears within the type `LuaRef<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:272:19
    |
272 | pub(crate) struct LuaRef<'lua> {
    |                   ^^^^^^
note: required because it appears within the type `Function<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/function.rs:26:12
    |
26  | pub struct Function<'lua>(pub(crate) LuaRef<'lua>);
    |            ^^^^^^^^
note: required because it appears within the type `Keybinding`
   --> src/libs/structs/config.rs:69:12
    |
69  | pub struct Keybinding {
    |            ^^^^^^^^^^
    = note: required for `std::ptr::Unique<libs::structs::config::Keybinding>` to implement `std::marker::Sync`
note: required because it appears within the type `RawVec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `Config`
   --> src/libs/structs/config.rs:75:12
    |
75  | pub struct Config {
    |            ^^^^^^
    = note: required for `once_cell::imp::OnceCell<libs::structs::config::Config>` to implement `std::marker::Sync`
note: required because it appears within the type `OnceCell<Config>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.18.0/src/lib.rs:903:16
    |
903 |     pub struct OnceCell<T>(Imp<T>);
    |                ^^^^^^^^
    = note: required for `once_cell::sync::Lazy<libs::structs::config::Config>` to implement `std::marker::Sync`
    = note: shared static variables must have a type that implements `Sync`

error[E0277]: `(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, &'b str, bool) -> std::result::Result<(), mlua::Error> + 'static)` cannot be sent between threads safely
   --> src/libs/structs/config.rs:85:20
    |
85  | pub static CONFIG: Lazy<Config> = Lazy::new(parse_config);
    |                    ^^^^^^^^^^^^ `(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, &'b str, bool) -> std::result::Result<(), mlua::Error> + 'static)` cannot be sent between threads safely
    |
    = help: the trait `std::marker::Send` is not implemented for `(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, &'b str, bool) -> std::result::Result<(), mlua::Error> + 'static)`
    = note: required for `std::ptr::Unique<(dyn for<'a, 'b> std::ops::Fn(&'a mlua::Lua, &'b str, bool) -> std::result::Result<(), mlua::Error> + 'static)>` to implement `std::marker::Send`
note: required because it appears within the type `Box<dyn Fn(&Lua, &str, bool) -> Result<(), Error>>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/boxed.rs:195:12
note: required because it appears within the type `Option<Box<dyn Fn(&Lua, &str, bool) -> Result<(), Error>>>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/option.rs:563:10
note: required because it appears within the type `ExtraData`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:81:19
    |
81  | pub(crate) struct ExtraData {
    |                   ^^^^^^^^^
note: required because it appears within the type `UnsafeCell<ExtraData>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/cell.rs:1986:12
    = note: required for `std::sync::Arc<std::cell::UnsafeCell<mlua::lua::ExtraData>>` to implement `std::marker::Sync`
note: required because it appears within the type `LuaInner`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:73:12
    |
73  | pub struct LuaInner {
    |            ^^^^^^^^
    = note: required for `std::sync::Arc<mlua::lua::LuaInner>` to implement `std::marker::Sync`
note: required because it appears within the type `Lua`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:70:12
    |
70  | pub struct Lua(Arc<LuaInner>);
    |            ^^^
    = note: required because it appears within the type `&Lua`
note: required because it appears within the type `LuaRef<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:272:19
    |
272 | pub(crate) struct LuaRef<'lua> {
    |                   ^^^^^^
note: required because it appears within the type `Function<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/function.rs:26:12
    |
26  | pub struct Function<'lua>(pub(crate) LuaRef<'lua>);
    |            ^^^^^^^^
note: required because it appears within the type `Keybinding`
   --> src/libs/structs/config.rs:69:12
    |
69  | pub struct Keybinding {
    |            ^^^^^^^^^^
    = note: required for `std::ptr::Unique<libs::structs::config::Keybinding>` to implement `std::marker::Sync`
note: required because it appears within the type `RawVec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `Config`
   --> src/libs/structs/config.rs:75:12
    |
75  | pub struct Config {
    |            ^^^^^^
    = note: required for `once_cell::imp::OnceCell<libs::structs::config::Config>` to implement `std::marker::Sync`
note: required because it appears within the type `OnceCell<Config>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.18.0/src/lib.rs:903:16
    |
903 |     pub struct OnceCell<T>(Imp<T>);
    |                ^^^^^^^^
    = note: required for `once_cell::sync::Lazy<libs::structs::config::Config>` to implement `std::marker::Sync`
    = note: shared static variables must have a type that implements `Sync`

error[E0277]: `(dyn std::any::Any + 'static)` cannot be sent between threads safely
   --> src/libs/structs/config.rs:85:20
    |
85  | pub static CONFIG: Lazy<Config> = Lazy::new(parse_config);
    |                    ^^^^^^^^^^^^ `(dyn std::any::Any + 'static)` cannot be sent between threads safely
    |
    = help: the trait `std::marker::Send` is not implemented for `(dyn std::any::Any + 'static)`
    = note: required for `std::ptr::Unique<(dyn std::any::Any + 'static)>` to implement `std::marker::Send`
note: required because it appears within the type `Box<dyn Any>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/boxed.rs:195:12
    = note: required for `std::cell::RefCell<std::boxed::Box<(dyn std::any::Any + 'static)>>` to implement `std::marker::Send`
    = note: required because it appears within the type `(TypeId, RefCell<Box<dyn Any>>)`
    = note: required for `hashbrown::raw::RawTable<(std::any::TypeId, std::cell::RefCell<std::boxed::Box<(dyn std::any::Any + 'static)>>)>` to implement `std::marker::Send`
note: required because it appears within the type `HashMap<TypeId, RefCell<Box<dyn Any>>, BuildHasherDefault<FxHasher>>`
   --> /cargo/registry/src/index.crates.io-6f17d22bba15001f/hashbrown-0.13.1/src/map.rs:188:12
note: required because it appears within the type `HashMap<TypeId, RefCell<Box<dyn Any>>, BuildHasherDefault<FxHasher>>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/std/src/collections/hash/map.rs:214:12
note: required because it appears within the type `UnsafeCell<HashMap<TypeId, RefCell<Box<dyn Any>>, BuildHasherDefault<FxHasher>>>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/cell.rs:1986:12
note: required because it appears within the type `AppData`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:382:19
    |
382 | pub(crate) struct AppData {
    |                   ^^^^^^^
note: required because it appears within the type `ExtraData`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:81:19
    |
81  | pub(crate) struct ExtraData {
    |                   ^^^^^^^^^
note: required because it appears within the type `UnsafeCell<ExtraData>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/cell.rs:1986:12
    = note: required for `std::sync::Arc<std::cell::UnsafeCell<mlua::lua::ExtraData>>` to implement `std::marker::Sync`
note: required because it appears within the type `LuaInner`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:73:12
    |
73  | pub struct LuaInner {
    |            ^^^^^^^^
    = note: required for `std::sync::Arc<mlua::lua::LuaInner>` to implement `std::marker::Sync`
note: required because it appears within the type `Lua`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:70:12
    |
70  | pub struct Lua(Arc<LuaInner>);
    |            ^^^
    = note: required because it appears within the type `&Lua`
note: required because it appears within the type `LuaRef<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:272:19
    |
272 | pub(crate) struct LuaRef<'lua> {
    |                   ^^^^^^
note: required because it appears within the type `Function<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/function.rs:26:12
    |
26  | pub struct Function<'lua>(pub(crate) LuaRef<'lua>);
    |            ^^^^^^^^
note: required because it appears within the type `Keybinding`
   --> src/libs/structs/config.rs:69:12
    |
69  | pub struct Keybinding {
    |            ^^^^^^^^^^
    = note: required for `std::ptr::Unique<libs::structs::config::Keybinding>` to implement `std::marker::Sync`
note: required because it appears within the type `RawVec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `Config`
   --> src/libs/structs/config.rs:75:12
    |
75  | pub struct Config {
    |            ^^^^^^
    = note: required for `once_cell::imp::OnceCell<libs::structs::config::Config>` to implement `std::marker::Sync`
note: required because it appears within the type `OnceCell<Config>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.18.0/src/lib.rs:903:16
    |
903 |     pub struct OnceCell<T>(Imp<T>);
    |                ^^^^^^^^
    = note: required for `once_cell::sync::Lazy<libs::structs::config::Config>` to implement `std::marker::Sync`
    = note: shared static variables must have a type that implements `Sync`

error[E0277]: `*mut std::ffi::c_void` cannot be sent between threads safely
   --> src/libs/structs/config.rs:85:20
    |
85  | pub static CONFIG: Lazy<Config> = Lazy::new(parse_config);
    |                    ^^^^^^^^^^^^ `*mut std::ffi::c_void` cannot be sent between threads safely
    |
    = help: within `mlua::Value<'static>`, the trait `std::marker::Send` is not implemented for `*mut std::ffi::c_void`
note: required because it appears within the type `LightUserData`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:35:12
    |
35  | pub struct LightUserData(pub *mut c_void);
    |            ^^^^^^^^^^^^^
note: required because it appears within the type `Value<'static>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/value.rs:31:10
    |
31  | pub enum Value<'lua> {
    |          ^^^^^
    = note: required for `std::ptr::Unique<mlua::Value<'static>>` to implement `std::marker::Send`
note: required because it appears within the type `RawVec<Value<'static>>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<Value<'static>>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `MultiValue<'static>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/value.rs:352:12
    |
352 | pub struct MultiValue<'lua>(Vec<Value<'lua>>);
    |            ^^^^^^^^^^
    = note: required for `std::ptr::Unique<mlua::MultiValue<'static>>` to implement `std::marker::Send`
note: required because it appears within the type `RawVec<MultiValue<'static>>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<MultiValue<'static>>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `ExtraData`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:81:19
    |
81  | pub(crate) struct ExtraData {
    |                   ^^^^^^^^^
note: required because it appears within the type `UnsafeCell<ExtraData>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/core/src/cell.rs:1986:12
    = note: required for `std::sync::Arc<std::cell::UnsafeCell<mlua::lua::ExtraData>>` to implement `std::marker::Sync`
note: required because it appears within the type `LuaInner`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:73:12
    |
73  | pub struct LuaInner {
    |            ^^^^^^^^
    = note: required for `std::sync::Arc<mlua::lua::LuaInner>` to implement `std::marker::Sync`
note: required because it appears within the type `Lua`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/lua.rs:70:12
    |
70  | pub struct Lua(Arc<LuaInner>);
    |            ^^^
    = note: required because it appears within the type `&Lua`
note: required because it appears within the type `LuaRef<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/types.rs:272:19
    |
272 | pub(crate) struct LuaRef<'lua> {
    |                   ^^^^^^
note: required because it appears within the type `Function<'_>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/mlua-0.9.0-rc.2/src/function.rs:26:12
    |
26  | pub struct Function<'lua>(pub(crate) LuaRef<'lua>);
    |            ^^^^^^^^
note: required because it appears within the type `Keybinding`
   --> src/libs/structs/config.rs:69:12
    |
69  | pub struct Keybinding {
    |            ^^^^^^^^^^
    = note: required for `std::ptr::Unique<libs::structs::config::Keybinding>` to implement `std::marker::Sync`
note: required because it appears within the type `RawVec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/raw_vec.rs:51:19
note: required because it appears within the type `Vec<Keybinding>`
   --> /rustc/8ede3aae28fe6e4d52b38157d7bfe0d3bceef225/library/alloc/src/vec/mod.rs:396:12
note: required because it appears within the type `Config`
   --> src/libs/structs/config.rs:75:12
    |
75  | pub struct Config {
    |            ^^^^^^
    = note: required for `once_cell::imp::OnceCell<libs::structs::config::Config>` to implement `std::marker::Sync`
note: required because it appears within the type `OnceCell<Config>`
   --> /home/halfarne/.cargo/registry/src/index.crates.io-6f17d22bba15001f/once_cell-1.18.0/src/lib.rs:903:16
    |
903 |     pub struct OnceCell<T>(Imp<T>);
    |                ^^^^^^^^
    = note: required for `once_cell::sync::Lazy<libs::structs::config::Config>` to implement `std::marker::Sync`
    = note: shared static variables must have a type that implements `Sync`

Some errors have detailed explanations: E0106, E0277.
For more information about an error, try `rustc --explain E0106`.
warning: `stratawm` (bin "stratawm") generated 1 warning
error: could not compile `stratawm` (bin "stratawm") due to 12 previous errors; 1 warning emitted

build-shell.log

config doesn't get parsed if $XDG_DATA_HOME/strata/lua doesn't exist.

strata/src/main.rs

Lines 38 to 46 in d9d014c

let xdg = xdg::BaseDirectories::with_prefix("strata")?;
let config_dir = xdg.find_config_file("");
let lib_dir = xdg.find_data_file("lua");
let log_dir = xdg.get_state_home();
if let (Some(config_path), Some(data_path)) = (config_dir, lib_dir) {
tokio::spawn(async { parse_config(config_path, data_path) }).await??;
}

lib_dir is None if $XDG_DATA_HOME/strata/lua doesn't exists

Error when running make

Kernel: 6.7.5-artix1-1 
arch: x86_64
Distro: Artix Linux

I quickly made a PKGBUILD to make a package:

_pkgname=strata
pkgname=${_pkgname}-git
pkgver=r268.4452ee2
pkgrel=1
pkgdesc="Strata is a cutting-edge, robust and sleek Wayland compositor written in Rust."
url="https://github.com/StrataWM/strata"
arch=(x86_64 aarch64)
license=("GPL3")
depends=("udev" "wayland" "wayland-protocols" "libinput" "libxkbcommon" "libglvnd" "seatd" "dbus-glib" "mesa")
makedepends=("git" "make" "udev" "wayland" "wayland-protocols" "libinput" "libxkbcommon" "libglvnd" "seatd" "dbus-glib" "mesa" "rust")
conflicts=("${_pkgname}")
source=("$pkgname::git+https://github.com/StrataWM/strata.git")
sha512sums=('SKIP')

pkgver() {
  cd "$pkgname"
  printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)"
}

build() {
	cd "$pkgname"
	make
}

package() {
	cd "$pkgname"
	make PREFIX=/usr DESTDIR="$pkgdir" install
}

But I have an error:

   Compiling calloop-wayland-source v0.2.0
   Compiling rand v0.8.5
   Compiling gc-arena-derive v0.5.0
   Compiling wayland-protocols-wlr v0.2.0
error: failed to run custom build command for `mlua-sys v0.5.0`

Caused by:
  process didn't exit successfully: `/path/strata/src/strata-git/target/release/build/mlua-sys-6b8da97eeb67f59c/build-script-main` (exit status: 101)
  --- stdout
  cargo:rerun-if-changed=build
  cargo:rerun-if-env-changed=CC_x86_64-unknown-linux-gnu
  CC_x86_64-unknown-linux-gnu = None
  cargo:rerun-if-env-changed=CC_x86_64_unknown_linux_gnu
  CC_x86_64_unknown_linux_gnu = None
  cargo:rerun-if-env-changed=HOST_CC
  HOST_CC = None
  cargo:rerun-if-env-changed=CC
  CC = None
  cargo:rerun-if-env-changed=CRATE_CC_NO_DEFAULTS
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("false")
  CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
  cargo:rerun-if-env-changed=CFLAGS_x86_64-unknown-linux-gnu
  CFLAGS_x86_64-unknown-linux-gnu = None
  cargo:rerun-if-env-changed=CFLAGS_x86_64_unknown_linux_gnu
  CFLAGS_x86_64_unknown_linux_gnu = None
  cargo:rerun-if-env-changed=HOST_CFLAGS
  HOST_CFLAGS = None
  cargo:rerun-if-env-changed=CFLAGS
  CFLAGS = Some("-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/path/strata/src=/usr/src/debug/strata-git -flto=auto")
  running cd "/path/strata/src/strata-git/target/release/build/mlua-sys-2f6cdde6d6af0599/out/luajit-build/build/src" && BUILDMODE="static" STATIC_CC="/usr/bin/cc -O2 -ffunction-sections -fdata-sections -fPIC -m64 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/path/strata/src=/usr/src/debug/strata-git -flto=auto" TARGET_AR="/usr/bin/ar rcus" TARGET_LD="/usr/bin/cc -O2 -ffunction-sections -fdata-sections -fPIC -m64 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/path/strata/src=/usr/src/debug/strata-git -flto=auto" TARGET_STRIP="/usr/bin/strip" TARGET_SYS="Linux" XCFLAGS="-fPIC" "make" "-e"
  make[1]: Entering directory '/path/strata/src/strata-git/target/release/build/mlua-sys-2f6cdde6d6af0599/out/luajit-build/build/src'
  HOSTCC    host/minilua.o
  HOSTLINK  host/minilua
  VERSION   luajit.h
  DYNASM    host/buildvm_arch.h
  HOSTCC    host/buildvm.o
  HOSTCC    host/buildvm_asm.o
  HOSTCC    host/buildvm_peobj.o
  HOSTCC    host/buildvm_lib.o
  HOSTCC    host/buildvm_fold.o
  HOSTLINK  host/buildvm
  BUILDVM   lj_vm.S
  ASM       lj_vm.o
  CC        lj_assert.o
  CC        lj_gc.o
  BUILDVM   lj_ffdef.h
  CC        lj_err.o
  make[1]: Leaving directory '/path/strata/src/strata-git/target/release/build/mlua-sys-2f6cdde6d6af0599/out/luajit-build/build/src'

  --- stderr
  **** WARNING Cannot determine rolling release version from git log.
  **** WARNING The 'git' command must be available during the build.
  lj_err.c: In function ‘lj_err_unwind_dwarf’:
  lj_err.c:498:2: error: #error "Broken build system -- only use the provided Makefiles!"
    498 | #error "Broken build system -- only use the provided Makefiles!"
        |  ^~~~~
  make[1]: *** [Makefile:706: lj_err.o] Error 1
  thread 'main' panicked at ~/.cargo/registry/src/index.crates.io-6f17d22bba15001f/luajit-src-210.5.4+c525bcb/src/lib.rs:261:13:

  Error building LuaJIT:
      Command: cd "/path/strata/src/strata-git/target/release/build/mlua-sys-2f6cdde6d6af0599/out/luajit-build/build/src" && BUILDMODE="static" STATIC_CC="/usr/bin/cc -O2 -ffunction-sections -fdata-sections -fPIC -m64 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/path/strata/src=/usr/src/debug/strata-git -flto=auto" TARGET_AR="/usr/bin/ar rcus" TARGET_LD="/usr/bin/cc -O2 -ffunction-sections -fdata-sections -fPIC -m64 -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -g -ffile-prefix-map=/path/strata/src=/usr/src/debug/strata-git -flto=auto" TARGET_STRIP="/usr/bin/strip" TARGET_SYS="Linux" XCFLAGS="-fPIC" "make" "-e"
      Exit status: exit status: 2
      
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
make: *** [Makefile:24: strata] Error 101

Renaming the Strata project.

Renaming the Strata project

I've been thinking about this for a while now and I think I've come with a better name for StrataWM - ExoWM.

Why?

Well, I think that "Strata" is just a bit too generic, and also long. ExoWM sounds more cool and futuristic. I've designed a logo for it as well. Here's how it looks:

ExoWM

and also a profile banner:

Profile Banner

Do let me know what you guys think. If you have any other name suggestion please vote for it here or just leave it in the comments. If you have any feedback on the logo design, lmk and i'll fix it. Cheers :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.