mirror of
https://github.com/nix-community/home-manager.git
synced 2026-01-12 01:59:37 +08:00
labwc: Fix pipemenu(#7236) and icon in menu generation
Add the generation of icon and pipemenu
This commit is contained in:
@@ -27,19 +27,27 @@ let
|
||||
let
|
||||
idAttr = " id=\"${escape item.menuId}\"";
|
||||
labelAttr = if item ? label then " label=\"${escape item.label}\"" else "";
|
||||
iconAttr = if item ? icon then " icon=\"${escape item.icon}\"" else "";
|
||||
children = if item ? items then lib.concatMapStringsSep "\n" generateMenu item.items else "";
|
||||
executeAttr = if item ? execute then " execute=\"${escape item.execute}\"" else "";
|
||||
outputMenu =
|
||||
if item ? execute || children == "" then
|
||||
"<menu${idAttr}${labelAttr}${iconAttr}${executeAttr} />"
|
||||
else
|
||||
"<menu${idAttr}${labelAttr}${iconAttr}${executeAttr}>\n${indent 1 children}\n</menu>";
|
||||
in
|
||||
"<menu${idAttr}${labelAttr}>\n${indent 1 children}\n</menu>"
|
||||
outputMenu
|
||||
|
||||
else
|
||||
let
|
||||
labelAttr = " label=\"${escape item.label}\"";
|
||||
iconAttr = if item ? icon then " icon=\"${escape item.icon}\"" else "";
|
||||
action = item.action;
|
||||
nameAttr = " name=\"${escape action.name}\"";
|
||||
toAttr = if action ? to then " to=\"${escape action.to}\"" else "";
|
||||
commandAttr = if action ? command then " command=\"${escape action.command}\"" else "";
|
||||
in
|
||||
"<item${labelAttr}>\n <action${nameAttr}${toAttr}${commandAttr} />\n</item>";
|
||||
"<item${labelAttr}${iconAttr}>\n <action${nameAttr}${toAttr}${commandAttr} />\n</item>";
|
||||
|
||||
# Get keys in a preferred order
|
||||
orderedKeys =
|
||||
|
||||
@@ -100,6 +100,11 @@ in
|
||||
description = "Config to configure labwc menu";
|
||||
example = lib.literalExpression ''
|
||||
[
|
||||
{
|
||||
label = "pipemenu";
|
||||
menuId = "menu";
|
||||
execute = "/home/user/nix/scripts/pipe.sh";
|
||||
}
|
||||
{
|
||||
menuId = "client-menu";
|
||||
label = "Client Menu";
|
||||
@@ -118,12 +123,6 @@ in
|
||||
name = "ToggleFullscreen";
|
||||
};
|
||||
}
|
||||
{
|
||||
label = "Always on Top";
|
||||
action = {
|
||||
name = "ToggleAlwaysOnTop";
|
||||
};
|
||||
}
|
||||
{
|
||||
label = "Alacritty";
|
||||
action = {
|
||||
|
||||
@@ -3,14 +3,19 @@
|
||||
enable = true;
|
||||
package = null;
|
||||
menu = [
|
||||
{
|
||||
label = "pipemenu";
|
||||
menuId = "menu";
|
||||
execute = "/home/user/nix/scripts/pipe.sh";
|
||||
}
|
||||
{
|
||||
menuId = "client-menu";
|
||||
label = "Client Menu";
|
||||
icon = "";
|
||||
icon = "path";
|
||||
items = [
|
||||
{
|
||||
label = "Maximize";
|
||||
icon = "";
|
||||
icon = "Max";
|
||||
action = {
|
||||
name = "ToggleMaximize";
|
||||
};
|
||||
@@ -61,17 +66,16 @@
|
||||
{
|
||||
menuId = "menu-two";
|
||||
label = "Client Menu Two";
|
||||
icon = "";
|
||||
icon = "menu-two";
|
||||
items = [
|
||||
{
|
||||
label = "Menu In Menu";
|
||||
menuId = "menu-in-menu";
|
||||
icon = "";
|
||||
items = [
|
||||
{
|
||||
label = "Menu In Menu In Menu";
|
||||
menuId = "menu-in-menu-in-menu";
|
||||
icon = "";
|
||||
icon = "menu-in-menu-in-menu";
|
||||
items = [
|
||||
{
|
||||
label = "Move Right";
|
||||
@@ -80,12 +84,14 @@
|
||||
to = "right";
|
||||
};
|
||||
}
|
||||
{ menuId = "fourth"; }
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
}
|
||||
# <!-- A submenu defined elsewhere, uses external label and icon attributes -->
|
||||
{ menuId = ""; }
|
||||
];
|
||||
};
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- ### This file was generated with Nix. Don't modify this file directly. -->
|
||||
<openbox_menu>
|
||||
<menu id="client-menu" label="Client Menu">
|
||||
<item label="Maximize">
|
||||
<menu id="menu" label="pipemenu" execute="/home/user/nix/scripts/pipe.sh" />
|
||||
<menu id="client-menu" label="Client Menu" icon="path">
|
||||
<item label="Maximize" icon="Max">
|
||||
<action name="ToggleMaximize" />
|
||||
</item>
|
||||
<item label="Fullscreen">
|
||||
@@ -15,24 +16,23 @@
|
||||
<action name="Execute" command="alacritty" />
|
||||
</item>
|
||||
<separator />
|
||||
<menu id="workspace" label="Workspace">
|
||||
<menu id="workspace" label="Workspace" icon="">
|
||||
<item label="Move Left">
|
||||
<action name="SendToDesktop" to="left" />
|
||||
</item>
|
||||
</menu>
|
||||
<separator label="sep" />
|
||||
</menu>
|
||||
<menu id="menu-two" label="Client Menu Two">
|
||||
<menu id="menu-two" label="Client Menu Two" icon="menu-two">
|
||||
<menu id="menu-in-menu" label="Menu In Menu">
|
||||
<menu id="menu-in-menu-in-menu" label="Menu In Menu In Menu">
|
||||
<menu id="menu-in-menu-in-menu" label="Menu In Menu In Menu" icon="menu-in-menu-in-menu">
|
||||
<item label="Move Right">
|
||||
<action name="SendToDesktop" to="right" />
|
||||
</item>
|
||||
<menu id="fourth" />
|
||||
</menu>
|
||||
</menu>
|
||||
</menu>
|
||||
<menu id="">
|
||||
|
||||
</menu>
|
||||
<menu id="" />
|
||||
|
||||
</openbox_menu>
|
||||
|
||||
Reference in New Issue
Block a user