mirror of
https://github.com/nix-community/home-manager.git
synced 2026-06-05 21:02:51 +00:00
hyprland: support lua variables in settings
This commit is contained in:
@@ -218,12 +218,19 @@ in
|
||||
one call per element.
|
||||
|
||||
Attribute values with an `_args` list generate multi-argument calls.
|
||||
Attribute values with `_var` generate a Lua local variable instead of
|
||||
an `hl.<name>(...)` call. If no `name` is set, the attribute name is
|
||||
used as the Lua variable name.
|
||||
Values created with `lib.generators.mkLuaInline` are rendered as raw
|
||||
Lua expressions.
|
||||
|
||||
'';
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
mod = {
|
||||
_var = "SUPER";
|
||||
};
|
||||
|
||||
config = {
|
||||
general = {
|
||||
gaps_in = 5;
|
||||
@@ -239,7 +246,7 @@ in
|
||||
bind = [
|
||||
{
|
||||
_args = [
|
||||
"SUPER + Q"
|
||||
(lib.generators.mkLuaInline "mod .. \" + Q\"")
|
||||
(lib.generators.mkLuaInline "hl.dsp.window.close()")
|
||||
{ locked = true; }
|
||||
];
|
||||
@@ -541,18 +548,32 @@ in
|
||||
renderSettings =
|
||||
let
|
||||
names = lib.sort lib.lessThan (lib.attrNames cfg.settings);
|
||||
luaLocalNames = builtins.filter (
|
||||
name: lib.isAttrs cfg.settings.${name} && cfg.settings.${name} ? _var
|
||||
) names;
|
||||
settingNames = builtins.filter (name: !(builtins.elem name luaLocalNames)) names;
|
||||
importantNames = lib.unique (
|
||||
lib.concatMap (
|
||||
prefix: builtins.filter (name: lib.hasPrefix prefix name) names
|
||||
prefix: builtins.filter (name: lib.hasPrefix prefix name) settingNames
|
||||
) cfg.importantPrefixes
|
||||
);
|
||||
orderedNames = importantNames ++ builtins.filter (name: !(builtins.elem name importantNames)) names;
|
||||
orderedNames =
|
||||
importantNames ++ builtins.filter (name: !(builtins.elem name importantNames)) settingNames;
|
||||
renderLocal =
|
||||
name:
|
||||
let
|
||||
value = cfg.settings.${name};
|
||||
in
|
||||
"local ${value.name or name} = ${renderArgs value._var}\n";
|
||||
renderCall = name: value: "hl.${name}(${renderArgs value})\n";
|
||||
renderCalls =
|
||||
name: value:
|
||||
lib.concatMapStrings (renderCall name) (if builtins.isList value then value else [ value ]);
|
||||
in
|
||||
lib.concatMapStrings (
|
||||
lib.optionalString (luaLocalNames != [ ]) (
|
||||
renderSection "settings.locals" (lib.concatMapStrings renderLocal luaLocalNames)
|
||||
)
|
||||
+ lib.concatMapStrings (
|
||||
name: renderSection "settings.${name}" (renderCalls name cfg.settings.${name})
|
||||
) orderedNames;
|
||||
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
-- Generated by Home Manager.
|
||||
-- See https://wiki.hypr.land/Configuring/Start/
|
||||
|
||||
-- settings.locals
|
||||
local mod = "SUPER"
|
||||
local terminal = "kitty"
|
||||
|
||||
-- settings.curve
|
||||
hl.curve("smoothIn", {
|
||||
["points"] = {
|
||||
@@ -32,11 +36,14 @@ hl.animation({
|
||||
})
|
||||
|
||||
-- settings.bind
|
||||
hl.bind("SUPER + Q", (hl.dsp.window.close()), {
|
||||
hl.bind((mod .. " + Q"), (hl.dsp.window.close()), {
|
||||
["locked"] = true
|
||||
})
|
||||
hl.bind("SUPER + RETURN", (hl.dsp.exec_cmd("kitty")))
|
||||
hl.bind((mod .. " + RETURN"), (hl.dsp.exec_cmd(terminal)))
|
||||
hl.bind("SUPER + SHIFT + 1", (hl.dsp.window.move({ workspace = "1", follow = false })))
|
||||
hl.bind((mod .. " + mouse:272"), (hl.dsp.window.drag()), {
|
||||
["mouse"] = true
|
||||
})
|
||||
|
||||
-- settings.config
|
||||
hl.config({
|
||||
|
||||
@@ -19,6 +19,14 @@ in
|
||||
];
|
||||
|
||||
settings = {
|
||||
mod = {
|
||||
_var = "SUPER";
|
||||
};
|
||||
|
||||
terminal = {
|
||||
_var = "kitty";
|
||||
};
|
||||
|
||||
config = {
|
||||
input = {
|
||||
kb_layout = "ro";
|
||||
@@ -125,15 +133,15 @@ in
|
||||
bind = [
|
||||
{
|
||||
_args = [
|
||||
"SUPER + Q"
|
||||
(lib.generators.mkLuaInline ''mod .. " + Q"'')
|
||||
(lib.generators.mkLuaInline "hl.dsp.window.close()")
|
||||
{ locked = true; }
|
||||
];
|
||||
}
|
||||
{
|
||||
_args = [
|
||||
"SUPER + RETURN"
|
||||
(lib.generators.mkLuaInline ''hl.dsp.exec_cmd("kitty")'')
|
||||
(lib.generators.mkLuaInline ''mod .. " + RETURN"'')
|
||||
(lib.generators.mkLuaInline "hl.dsp.exec_cmd(terminal)")
|
||||
];
|
||||
}
|
||||
{
|
||||
@@ -142,6 +150,13 @@ in
|
||||
(lib.generators.mkLuaInline ''hl.dsp.window.move({ workspace = "1", follow = false })'')
|
||||
];
|
||||
}
|
||||
{
|
||||
_args = [
|
||||
(lib.generators.mkLuaInline ''mod .. " + mouse:272"'')
|
||||
(lib.generators.mkLuaInline "hl.dsp.window.drag()")
|
||||
{ mouse = true; }
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
on = {
|
||||
|
||||
Reference in New Issue
Block a user