Gnoblin

Organize a growing config

Keep the entry point short and group settings by the kind of change you make. For example, let init.lua load your local fragments first, then your appearance and shortcut overrides. Packages that ship system defaults need no line here; Gnoblin loads them before init.lua (see system drop-ins):

Lua
gnoblin.load("conf.d/**/*.lua")
gnoblin.load("appearance.lua")
gnoblin.load("bindings.lua")

Put window rules in appearance.lua:

Lua
gnoblin.window_rule {
    match = {type = "window"},
    corners = {radius = 12, smoothing = 0.5},
}

Put shortcuts in bindings.lua:

Lua
gnoblin.configure {
    shortcuts = {
        launcher = {binding = "<Super>d", command = {"fuzzel"}},
    },
}

Loaded files share the same Gnoblin API; they do not need require or a return statement. Keep includes before your personal overrides. Calls such as gnoblin.window_rule append rules, while supplying a complete window_rules list replaces the previous list. Arrays such as xkb_options also replace the active array, so list all values you intend to keep.

Use gnoblinctl config path to find the active entry point and gnoblinctl config reload to apply changes. Read file loading and order before adding overlapping files or globs.

Esc

Try