mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-08-02 03:28:28 -04:00
@@ -177,10 +177,12 @@ Singleton {
|
||||
property int niriLayoutRadiusOverride: -1
|
||||
property int niriLayoutBorderSize: -1
|
||||
property int hyprlandLayoutGapsOverride: -1
|
||||
property int hyprlandLayoutGapsOutOverride: -1
|
||||
property int hyprlandLayoutRadiusOverride: -1
|
||||
property int hyprlandLayoutBorderSize: -1
|
||||
property bool hyprlandResizeOnBorder: false
|
||||
property int mangoLayoutGapsOverride: -1
|
||||
property int mangoLayoutGapsOutOverride: -1
|
||||
property int mangoLayoutRadiusOverride: -1
|
||||
property int mangoLayoutBorderSize: -1
|
||||
property bool mangoTrackpadNaturalScrolling: true
|
||||
|
||||
@@ -29,10 +29,12 @@ var SPEC = {
|
||||
niriLayoutRadiusOverride: { def: -1, onChange: "updateCompositorLayout" },
|
||||
niriLayoutBorderSize: { def: -1, onChange: "updateCompositorLayout" },
|
||||
hyprlandLayoutGapsOverride: { def: -1, onChange: "updateCompositorLayout" },
|
||||
hyprlandLayoutGapsOutOverride: { def: -1, onChange: "updateCompositorLayout" },
|
||||
hyprlandLayoutRadiusOverride: { def: -1, onChange: "updateCompositorLayout" },
|
||||
hyprlandLayoutBorderSize: { def: -1, onChange: "updateCompositorLayout" },
|
||||
hyprlandResizeOnBorder: { def: false, onChange: "updateCompositorLayout" },
|
||||
mangoLayoutGapsOverride: { def: -1, onChange: "updateCompositorLayout" },
|
||||
mangoLayoutGapsOutOverride: { def: -1, onChange: "updateCompositorLayout" },
|
||||
mangoLayoutRadiusOverride: { def: -1, onChange: "updateCompositorLayout" },
|
||||
mangoLayoutBorderSize: { def: -1, onChange: "updateCompositorLayout" },
|
||||
mangoTrackpadNaturalScrolling: { def: true, onChange: "updateCompositorCursor" },
|
||||
|
||||
@@ -205,6 +205,21 @@ Item {
|
||||
return focusedWs ? focusedWs.num : 1;
|
||||
}
|
||||
|
||||
// Numbered workspaces first in id order, named (negative id) after, by name
|
||||
function hyprlandWorkspaceOrder(a, b) {
|
||||
const keyA = a.id < 0 ? Number.MAX_SAFE_INTEGER : a.id;
|
||||
const keyB = b.id < 0 ? Number.MAX_SAFE_INTEGER : b.id;
|
||||
if (keyA !== keyB)
|
||||
return keyA - keyB;
|
||||
return (a.name ?? "").localeCompare(b.name ?? "");
|
||||
}
|
||||
|
||||
function hyprlandWorkspaceSelector(ws) {
|
||||
if (!ws)
|
||||
return 1;
|
||||
return ws.id > 0 ? ws.id : "name:" + (ws.name ?? "");
|
||||
}
|
||||
|
||||
function getHyprlandWorkspaces() {
|
||||
const workspaces = Hyprland.workspaces?.values || [];
|
||||
if (workspaces.length === 0) {
|
||||
@@ -216,7 +231,14 @@ Item {
|
||||
];
|
||||
}
|
||||
|
||||
let filtered = workspaces.filter(ws => ws.id > -1);
|
||||
// Hyprland gives named workspaces negative ids (from -1337 down); special
|
||||
// workspaces always store a "special:" name prefix ("special" pre-colon era)
|
||||
let filtered = workspaces.filter(ws => {
|
||||
if (ws.id > 0)
|
||||
return true;
|
||||
const name = ws.name ?? "";
|
||||
return name !== "special" && !name.startsWith("special:");
|
||||
});
|
||||
if (filtered.length === 0) {
|
||||
return [
|
||||
{
|
||||
@@ -227,10 +249,10 @@ Item {
|
||||
}
|
||||
|
||||
if (!root.screenName || SettingsData.workspaceFollowFocus) {
|
||||
filtered = filtered.slice().sort((a, b) => a.id - b.id);
|
||||
filtered = filtered.slice().sort(hyprlandWorkspaceOrder);
|
||||
} else {
|
||||
const monitorWorkspaces = filtered.filter(ws => ws.monitor?.name === root.screenName);
|
||||
filtered = monitorWorkspaces.length > 0 ? monitorWorkspaces.sort((a, b) => a.id - b.id) : [
|
||||
filtered = monitorWorkspaces.length > 0 ? monitorWorkspaces.sort(hyprlandWorkspaceOrder) : [
|
||||
{
|
||||
id: 1,
|
||||
name: "1"
|
||||
@@ -586,7 +608,7 @@ Item {
|
||||
break;
|
||||
case "hyprland":
|
||||
if (data.id) {
|
||||
HyprlandService.focusWorkspace(data.id);
|
||||
HyprlandService.focusWorkspace(hyprlandWorkspaceSelector(data));
|
||||
}
|
||||
break;
|
||||
case "mango":
|
||||
@@ -676,7 +698,7 @@ Item {
|
||||
return;
|
||||
}
|
||||
|
||||
HyprlandService.focusWorkspace(realWorkspaces[nextIndex].id);
|
||||
HyprlandService.focusWorkspace(hyprlandWorkspaceSelector(realWorkspaces[nextIndex]));
|
||||
} else if (root.isMango) {
|
||||
const realWorkspaces = getRealWorkspaces();
|
||||
if (realWorkspaces.length < 2) {
|
||||
@@ -718,7 +740,7 @@ Item {
|
||||
if (CompositorService.isNiri)
|
||||
return (modelData?.idx !== undefined && modelData?.idx !== -1) ? modelData.idx : "";
|
||||
if (CompositorService.isHyprland)
|
||||
return modelData?.id || "";
|
||||
return modelData?.id > 0 ? modelData.id : (modelData?.name ?? "");
|
||||
if (root.isMango)
|
||||
return (modelData?.tag !== undefined) ? (modelData.tag + 1) : "";
|
||||
if (CompositorService.isSway || CompositorService.isScroll || CompositorService.isMiracle)
|
||||
@@ -1362,7 +1384,7 @@ Item {
|
||||
NiriService.switchToWorkspace(modelData.id);
|
||||
}
|
||||
} else if (CompositorService.isHyprland && modelData?.id) {
|
||||
HyprlandService.focusWorkspace(modelData.id);
|
||||
HyprlandService.focusWorkspace(root.hyprlandWorkspaceSelector(modelData));
|
||||
} else if (root.isMango && modelData?.tag !== undefined) {
|
||||
MangoService.switchToTag(root.screenName, modelData.tag);
|
||||
} else if ((CompositorService.isSway || CompositorService.isScroll || CompositorService.isMiracle) && modelData?.num) {
|
||||
|
||||
@@ -275,19 +275,30 @@ awk '$1 == "xray" { print FILENAME ":" FNR; exit }' $files 2>/dev/null`;
|
||||
iconName: "layers"
|
||||
visible: CompositorService.isNiri
|
||||
|
||||
SettingsToggleRow {
|
||||
tags: ["niri", "gaps", "override"]
|
||||
settingKey: "niriLayoutGapsOverrideEnabled"
|
||||
text: I18n.tr("Override Gaps")
|
||||
description: I18n.tr("Use custom gaps instead of bar spacing")
|
||||
checked: SettingsData.niriLayoutGapsOverride >= 0
|
||||
onToggled: checked => {
|
||||
if (checked) {
|
||||
const currentGaps = Math.max(4, (SettingsData.barConfigs[0]?.spacing ?? 4));
|
||||
SettingsData.set("niriLayoutGapsOverride", currentGaps);
|
||||
SettingsButtonGroupRow {
|
||||
tags: ["niri", "gaps", "override", "unmanaged"]
|
||||
settingKey: "niriLayoutGapsMode"
|
||||
text: I18n.tr("Gaps")
|
||||
description: I18n.tr("Auto matches bar spacing; Off leaves gaps to your niri config")
|
||||
model: [I18n.tr("Auto"), I18n.tr("Custom"), I18n.tr("Off")]
|
||||
currentIndex: {
|
||||
if (SettingsData.niriLayoutGapsOverride === -2)
|
||||
return 2;
|
||||
return SettingsData.niriLayoutGapsOverride >= 0 ? 1 : 0;
|
||||
}
|
||||
onSelectionChanged: (index, selected) => {
|
||||
if (!selected)
|
||||
return;
|
||||
switch (index) {
|
||||
case 1:
|
||||
SettingsData.set("niriLayoutGapsOverride", Math.max(4, (SettingsData.barConfigs[0]?.spacing ?? 4)));
|
||||
return;
|
||||
case 2:
|
||||
SettingsData.set("niriLayoutGapsOverride", -2);
|
||||
return;
|
||||
default:
|
||||
SettingsData.set("niriLayoutGapsOverride", -1);
|
||||
}
|
||||
SettingsData.set("niriLayoutGapsOverride", -1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -393,27 +404,38 @@ awk '$1 == "xray" { print FILENAME ":" FNR; exit }' $files 2>/dev/null`;
|
||||
iconName: "crop_square"
|
||||
visible: CompositorService.isHyprland
|
||||
|
||||
SettingsToggleRow {
|
||||
tags: ["hyprland", "gaps", "override"]
|
||||
settingKey: "hyprlandLayoutGapsOverrideEnabled"
|
||||
text: I18n.tr("Override Gaps")
|
||||
description: I18n.tr("Use custom gaps instead of bar spacing")
|
||||
checked: SettingsData.hyprlandLayoutGapsOverride >= 0
|
||||
onToggled: checked => {
|
||||
if (checked) {
|
||||
const currentGaps = Math.max(4, (SettingsData.barConfigs[0]?.spacing ?? 4));
|
||||
SettingsData.set("hyprlandLayoutGapsOverride", currentGaps);
|
||||
SettingsButtonGroupRow {
|
||||
tags: ["hyprland", "gaps", "override", "inner", "outer", "unmanaged"]
|
||||
settingKey: "hyprlandLayoutGapsMode"
|
||||
text: I18n.tr("Gaps")
|
||||
description: I18n.tr("Auto matches bar spacing; Off leaves gaps to your Hyprland config")
|
||||
model: [I18n.tr("Auto"), I18n.tr("Custom"), I18n.tr("Off")]
|
||||
currentIndex: {
|
||||
if (SettingsData.hyprlandLayoutGapsOverride === -2)
|
||||
return 2;
|
||||
return SettingsData.hyprlandLayoutGapsOverride >= 0 ? 1 : 0;
|
||||
}
|
||||
onSelectionChanged: (index, selected) => {
|
||||
if (!selected)
|
||||
return;
|
||||
switch (index) {
|
||||
case 1:
|
||||
SettingsData.set("hyprlandLayoutGapsOverride", Math.max(4, (SettingsData.barConfigs[0]?.spacing ?? 4)));
|
||||
return;
|
||||
case 2:
|
||||
SettingsData.set("hyprlandLayoutGapsOverride", -2);
|
||||
return;
|
||||
default:
|
||||
SettingsData.set("hyprlandLayoutGapsOverride", -1);
|
||||
}
|
||||
SettingsData.set("hyprlandLayoutGapsOverride", -1);
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSliderRow {
|
||||
tags: ["hyprland", "gaps", "override"]
|
||||
tags: ["hyprland", "gaps", "override", "inner"]
|
||||
settingKey: "hyprlandLayoutGapsOverride"
|
||||
text: I18n.tr("Window Gaps")
|
||||
description: I18n.tr("Space between windows") + " (gaps_in/gaps_out)"
|
||||
text: I18n.tr("Inner Gaps")
|
||||
description: I18n.tr("Space between windows") + " (gaps_in)"
|
||||
visible: SettingsData.hyprlandLayoutGapsOverride >= 0
|
||||
value: Math.max(0, SettingsData.hyprlandLayoutGapsOverride)
|
||||
minimum: 0
|
||||
@@ -423,6 +445,20 @@ awk '$1 == "xray" { print FILENAME ":" FNR; exit }' $files 2>/dev/null`;
|
||||
onSliderValueChanged: newValue => SettingsData.set("hyprlandLayoutGapsOverride", newValue)
|
||||
}
|
||||
|
||||
SettingsSliderRow {
|
||||
tags: ["hyprland", "gaps", "override", "outer", "edge"]
|
||||
settingKey: "hyprlandLayoutGapsOutOverride"
|
||||
text: I18n.tr("Outer Gaps")
|
||||
description: I18n.tr("Space between windows and screen edges") + " (gaps_out)"
|
||||
visible: SettingsData.hyprlandLayoutGapsOverride >= 0
|
||||
value: SettingsData.hyprlandLayoutGapsOutOverride >= 0 ? SettingsData.hyprlandLayoutGapsOutOverride : Math.max(0, SettingsData.hyprlandLayoutGapsOverride)
|
||||
minimum: 0
|
||||
maximum: 50
|
||||
unit: "px"
|
||||
defaultValue: Math.max(0, SettingsData.hyprlandLayoutGapsOverride)
|
||||
onSliderValueChanged: newValue => SettingsData.set("hyprlandLayoutGapsOutOverride", newValue)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
tags: ["hyprland", "radius", "override", "rounding"]
|
||||
settingKey: "hyprlandLayoutRadiusOverrideEnabled"
|
||||
@@ -520,27 +556,38 @@ awk '$1 == "xray" { print FILENAME ":" FNR; exit }' $files 2>/dev/null`;
|
||||
iconName: "crop_square"
|
||||
visible: CompositorService.isMango
|
||||
|
||||
SettingsToggleRow {
|
||||
tags: ["mangowc", "mango", "gaps", "override"]
|
||||
settingKey: "mangoLayoutGapsOverrideEnabled"
|
||||
text: I18n.tr("Override Gaps")
|
||||
description: I18n.tr("Use custom gaps instead of bar spacing")
|
||||
checked: SettingsData.mangoLayoutGapsOverride >= 0
|
||||
onToggled: checked => {
|
||||
if (checked) {
|
||||
const currentGaps = Math.max(4, (SettingsData.barConfigs[0]?.spacing ?? 4));
|
||||
SettingsData.set("mangoLayoutGapsOverride", currentGaps);
|
||||
SettingsButtonGroupRow {
|
||||
tags: ["mangowc", "mango", "gaps", "override", "inner", "outer", "unmanaged"]
|
||||
settingKey: "mangoLayoutGapsMode"
|
||||
text: I18n.tr("Gaps")
|
||||
description: I18n.tr("Auto matches bar spacing; Off leaves gaps to your MangoWC config")
|
||||
model: [I18n.tr("Auto"), I18n.tr("Custom"), I18n.tr("Off")]
|
||||
currentIndex: {
|
||||
if (SettingsData.mangoLayoutGapsOverride === -2)
|
||||
return 2;
|
||||
return SettingsData.mangoLayoutGapsOverride >= 0 ? 1 : 0;
|
||||
}
|
||||
onSelectionChanged: (index, selected) => {
|
||||
if (!selected)
|
||||
return;
|
||||
switch (index) {
|
||||
case 1:
|
||||
SettingsData.set("mangoLayoutGapsOverride", Math.max(4, (SettingsData.barConfigs[0]?.spacing ?? 4)));
|
||||
return;
|
||||
case 2:
|
||||
SettingsData.set("mangoLayoutGapsOverride", -2);
|
||||
return;
|
||||
default:
|
||||
SettingsData.set("mangoLayoutGapsOverride", -1);
|
||||
}
|
||||
SettingsData.set("mangoLayoutGapsOverride", -1);
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSliderRow {
|
||||
tags: ["mangowc", "mango", "gaps", "override"]
|
||||
tags: ["mangowc", "mango", "gaps", "override", "inner"]
|
||||
settingKey: "mangoLayoutGapsOverride"
|
||||
text: I18n.tr("Window Gaps")
|
||||
description: I18n.tr("Space between windows") + " (gappih/gappiv/gappoh/gappov)"
|
||||
text: I18n.tr("Inner Gaps")
|
||||
description: I18n.tr("Space between windows") + " (gappih/gappiv)"
|
||||
visible: SettingsData.mangoLayoutGapsOverride >= 0
|
||||
value: Math.max(0, SettingsData.mangoLayoutGapsOverride)
|
||||
minimum: 0
|
||||
@@ -550,6 +597,20 @@ awk '$1 == "xray" { print FILENAME ":" FNR; exit }' $files 2>/dev/null`;
|
||||
onSliderValueChanged: newValue => SettingsData.set("mangoLayoutGapsOverride", newValue)
|
||||
}
|
||||
|
||||
SettingsSliderRow {
|
||||
tags: ["mangowc", "mango", "gaps", "override", "outer", "edge"]
|
||||
settingKey: "mangoLayoutGapsOutOverride"
|
||||
text: I18n.tr("Outer Gaps")
|
||||
description: I18n.tr("Space between windows and screen edges") + " (gappoh/gappov)"
|
||||
visible: SettingsData.mangoLayoutGapsOverride >= 0
|
||||
value: SettingsData.mangoLayoutGapsOutOverride >= 0 ? SettingsData.mangoLayoutGapsOutOverride : Math.max(0, SettingsData.mangoLayoutGapsOverride)
|
||||
minimum: 0
|
||||
maximum: 50
|
||||
unit: "px"
|
||||
defaultValue: Math.max(0, SettingsData.mangoLayoutGapsOverride)
|
||||
onSliderValueChanged: newValue => SettingsData.set("mangoLayoutGapsOutOverride", newValue)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
tags: ["mangowc", "mango", "radius", "override"]
|
||||
settingKey: "mangoLayoutRadiusOverrideEnabled"
|
||||
|
||||
@@ -332,7 +332,10 @@ Singleton {
|
||||
const defaultBorderSize = 2;
|
||||
|
||||
const cornerRadius = (typeof SettingsData !== "undefined" && SettingsData.hyprlandLayoutRadiusOverride >= 0) ? SettingsData.hyprlandLayoutRadiusOverride : defaultRadius;
|
||||
const gaps = (typeof SettingsData !== "undefined" && SettingsData.hyprlandLayoutGapsOverride >= 0) ? SettingsData.hyprlandLayoutGapsOverride : defaultGaps;
|
||||
const gapsOverride = typeof SettingsData !== "undefined" ? SettingsData.hyprlandLayoutGapsOverride : -1;
|
||||
const manageGaps = gapsOverride !== -2;
|
||||
const gapsIn = gapsOverride >= 0 ? gapsOverride : defaultGaps;
|
||||
const gapsOut = (gapsOverride >= 0 && SettingsData.hyprlandLayoutGapsOutOverride >= 0) ? SettingsData.hyprlandLayoutGapsOutOverride : gapsIn;
|
||||
const borderSize = (typeof SettingsData !== "undefined" && SettingsData.hyprlandLayoutBorderSize >= 0) ? SettingsData.hyprlandLayoutBorderSize : defaultBorderSize;
|
||||
const resizeOnBorder = (typeof SettingsData !== "undefined" && SettingsData.hyprlandResizeOnBorder) ? true : false;
|
||||
const frameEnabled = typeof SettingsData !== "undefined" && SettingsData.frameEnabled;
|
||||
@@ -341,14 +344,16 @@ Singleton {
|
||||
// Connected frame mode has no separate bar/frame surface to target
|
||||
const barFrameTargetNamespace = !frameEnabled ? (SettingsData.standaloneBarXrayAvailable ? "dms:bar" : null) : (frameConnectedMode ? null : "dms:frame");
|
||||
|
||||
const generalLines = [];
|
||||
if (manageGaps)
|
||||
generalLines.push(`gaps_in = ${gapsIn},`, `gaps_out = ${gapsOut},`);
|
||||
generalLines.push(`border_size = ${borderSize},`, `resize_on_border = ${resizeOnBorder},`);
|
||||
|
||||
let content = `-- Auto-generated by DMS — do not edit manually
|
||||
|
||||
hl.config({
|
||||
general = {
|
||||
gaps_in = ${gaps},
|
||||
gaps_out = ${gaps},
|
||||
border_size = ${borderSize},
|
||||
resize_on_border = ${resizeOnBorder},
|
||||
${generalLines.map(l => "\t\t" + l).join("\n")}
|
||||
},
|
||||
decoration = {
|
||||
rounding = ${cornerRadius},
|
||||
|
||||
@@ -589,16 +589,22 @@ Singleton {
|
||||
const defaultBorderSize = 2;
|
||||
|
||||
const cornerRadius = (typeof SettingsData !== "undefined" && SettingsData.mangoLayoutRadiusOverride >= 0) ? SettingsData.mangoLayoutRadiusOverride : defaultRadius;
|
||||
const gaps = (typeof SettingsData !== "undefined" && SettingsData.mangoLayoutGapsOverride >= 0) ? SettingsData.mangoLayoutGapsOverride : defaultGaps;
|
||||
const gapsOverride = typeof SettingsData !== "undefined" ? SettingsData.mangoLayoutGapsOverride : -1;
|
||||
const manageGaps = gapsOverride !== -2;
|
||||
const gapsIn = gapsOverride >= 0 ? gapsOverride : defaultGaps;
|
||||
const gapsOut = (gapsOverride >= 0 && SettingsData.mangoLayoutGapsOutOverride >= 0) ? SettingsData.mangoLayoutGapsOutOverride : gapsIn;
|
||||
const borderSize = (typeof SettingsData !== "undefined" && SettingsData.mangoLayoutBorderSize >= 0) ? SettingsData.mangoLayoutBorderSize : defaultBorderSize;
|
||||
|
||||
let content = `# Auto-generated by DMS - do not edit manually
|
||||
border_radius=${cornerRadius}
|
||||
gappih=${gaps}
|
||||
gappiv=${gaps}
|
||||
gappoh=${gaps}
|
||||
gappov=${gaps}
|
||||
borderpx=${borderSize}
|
||||
`;
|
||||
|
||||
if (manageGaps)
|
||||
content += `gappih=${gapsIn}
|
||||
gappiv=${gapsIn}
|
||||
gappoh=${gapsOut}
|
||||
gappov=${gapsOut}
|
||||
`;
|
||||
|
||||
Proc.runCommand("mango-write-layout", ["sh", "-c", `mkdir -p "${mangoDmsDir}" && cat > "${layoutPath}" << 'EOF'\n${content}EOF`], (output, exitCode) => {
|
||||
|
||||
@@ -1164,7 +1164,9 @@ Singleton {
|
||||
const defaultBorderSize = 2;
|
||||
|
||||
const cornerRadius = (typeof SettingsData !== "undefined" && SettingsData.niriLayoutRadiusOverride >= 0) ? SettingsData.niriLayoutRadiusOverride : defaultRadius;
|
||||
const gaps = (typeof SettingsData !== "undefined" && SettingsData.niriLayoutGapsOverride >= 0) ? SettingsData.niriLayoutGapsOverride : defaultGaps;
|
||||
const gapsOverride = typeof SettingsData !== "undefined" ? SettingsData.niriLayoutGapsOverride : -1;
|
||||
const manageGaps = gapsOverride !== -2;
|
||||
const gaps = gapsOverride >= 0 ? gapsOverride : defaultGaps;
|
||||
const borderSize = (typeof SettingsData !== "undefined" && SettingsData.niriLayoutBorderSize >= 0) ? SettingsData.niriLayoutBorderSize : defaultBorderSize;
|
||||
const frameEnabled = typeof SettingsData !== "undefined" && SettingsData.frameEnabled;
|
||||
const frameConnectedMode = frameEnabled && SettingsData.frameMode === "connected";
|
||||
@@ -1206,16 +1208,13 @@ layer-rule {
|
||||
|
||||
`;
|
||||
|
||||
const layoutLines = [];
|
||||
if (manageGaps)
|
||||
layoutLines.push(` gaps ${gaps}`, "");
|
||||
layoutLines.push(" border {", ` width ${borderSize}`, " }", "", " focus-ring {", ` width ${borderSize}`, " }");
|
||||
|
||||
const configContent = dmsWarning + `layout {
|
||||
gaps ${gaps}
|
||||
|
||||
border {
|
||||
width ${borderSize}
|
||||
}
|
||||
|
||||
focus-ring {
|
||||
width ${borderSize}
|
||||
}
|
||||
${layoutLines.join("\n")}
|
||||
}
|
||||
|
||||
window-rule {
|
||||
|
||||
@@ -8701,6 +8701,101 @@
|
||||
"description": "Always blur against the wallpaper, even with Xray off",
|
||||
"conditionKey": "isNiri"
|
||||
},
|
||||
{
|
||||
"section": "hyprlandLayoutGapsMode",
|
||||
"label": "Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"auto",
|
||||
"config",
|
||||
"custom",
|
||||
"customize",
|
||||
"gap",
|
||||
"gaps",
|
||||
"hyprland",
|
||||
"inner",
|
||||
"leaves",
|
||||
"margin",
|
||||
"margins",
|
||||
"matches",
|
||||
"outer",
|
||||
"override",
|
||||
"padding",
|
||||
"panel",
|
||||
"personal",
|
||||
"personalization",
|
||||
"statusbar",
|
||||
"taskbar",
|
||||
"topbar",
|
||||
"unmanaged"
|
||||
],
|
||||
"description": "Auto matches bar spacing; Off leaves gaps to your Hyprland config"
|
||||
},
|
||||
{
|
||||
"section": "mangoLayoutGapsMode",
|
||||
"label": "Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"auto",
|
||||
"config",
|
||||
"custom",
|
||||
"customize",
|
||||
"gap",
|
||||
"gaps",
|
||||
"inner",
|
||||
"leaves",
|
||||
"mango",
|
||||
"mangowc",
|
||||
"margin",
|
||||
"margins",
|
||||
"matches",
|
||||
"outer",
|
||||
"override",
|
||||
"padding",
|
||||
"panel",
|
||||
"personal",
|
||||
"personalization",
|
||||
"statusbar",
|
||||
"taskbar",
|
||||
"topbar",
|
||||
"unmanaged"
|
||||
],
|
||||
"description": "Auto matches bar spacing; Off leaves gaps to your MangoWC config"
|
||||
},
|
||||
{
|
||||
"section": "niriLayoutGapsMode",
|
||||
"label": "Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"auto",
|
||||
"config",
|
||||
"custom",
|
||||
"customize",
|
||||
"gap",
|
||||
"gaps",
|
||||
"leaves",
|
||||
"margin",
|
||||
"margins",
|
||||
"matches",
|
||||
"niri",
|
||||
"override",
|
||||
"padding",
|
||||
"panel",
|
||||
"personal",
|
||||
"personalization",
|
||||
"statusbar",
|
||||
"taskbar",
|
||||
"topbar",
|
||||
"unmanaged"
|
||||
],
|
||||
"description": "Auto matches bar spacing; Off leaves gaps to your niri config"
|
||||
},
|
||||
{
|
||||
"section": "hyprlandLayout",
|
||||
"label": "Hyprland Layout Overrides",
|
||||
@@ -8708,15 +8803,19 @@
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"auto",
|
||||
"border",
|
||||
"config",
|
||||
"custom",
|
||||
"customize",
|
||||
"gap",
|
||||
"gaps",
|
||||
"hyprland",
|
||||
"layout",
|
||||
"leaves",
|
||||
"margin",
|
||||
"margins",
|
||||
"matches",
|
||||
"overrides",
|
||||
"padding",
|
||||
"panel",
|
||||
@@ -8724,16 +8823,58 @@
|
||||
"personalization",
|
||||
"radius",
|
||||
"rounding",
|
||||
"spacing",
|
||||
"statusbar",
|
||||
"taskbar",
|
||||
"topbar",
|
||||
"window"
|
||||
],
|
||||
"icon": "crop_square",
|
||||
"description": "Use custom gaps instead of bar spacing",
|
||||
"description": "Auto matches bar spacing; Off leaves gaps to your Hyprland config",
|
||||
"conditionKey": "isHyprland"
|
||||
},
|
||||
{
|
||||
"section": "hyprlandLayoutGapsOverride",
|
||||
"label": "Inner Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"between",
|
||||
"custom",
|
||||
"customize",
|
||||
"gaps",
|
||||
"hyprland",
|
||||
"inner",
|
||||
"override",
|
||||
"personal",
|
||||
"personalization",
|
||||
"space",
|
||||
"windows"
|
||||
],
|
||||
"description": "Space between windows"
|
||||
},
|
||||
{
|
||||
"section": "mangoLayoutGapsOverride",
|
||||
"label": "Inner Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"between",
|
||||
"custom",
|
||||
"customize",
|
||||
"gaps",
|
||||
"inner",
|
||||
"mango",
|
||||
"mangowc",
|
||||
"override",
|
||||
"personal",
|
||||
"personalization",
|
||||
"space",
|
||||
"windows"
|
||||
],
|
||||
"description": "Space between windows"
|
||||
},
|
||||
{
|
||||
"section": "mangoLayout",
|
||||
"label": "MangoWC Layout Overrides",
|
||||
@@ -8741,31 +8882,34 @@
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"auto",
|
||||
"border",
|
||||
"config",
|
||||
"custom",
|
||||
"customize",
|
||||
"dwl",
|
||||
"gap",
|
||||
"gaps",
|
||||
"layout",
|
||||
"leaves",
|
||||
"mango",
|
||||
"mangowc",
|
||||
"margin",
|
||||
"margins",
|
||||
"matches",
|
||||
"overrides",
|
||||
"padding",
|
||||
"panel",
|
||||
"personal",
|
||||
"personalization",
|
||||
"radius",
|
||||
"spacing",
|
||||
"statusbar",
|
||||
"taskbar",
|
||||
"topbar",
|
||||
"window"
|
||||
],
|
||||
"icon": "crop_square",
|
||||
"description": "Use custom gaps instead of bar spacing",
|
||||
"description": "Auto matches bar spacing; Off leaves gaps to your MangoWC config",
|
||||
"conditionKey": "isMango"
|
||||
},
|
||||
{
|
||||
@@ -8775,14 +8919,18 @@
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"auto",
|
||||
"border",
|
||||
"config",
|
||||
"custom",
|
||||
"customize",
|
||||
"gap",
|
||||
"gaps",
|
||||
"layout",
|
||||
"leaves",
|
||||
"margin",
|
||||
"margins",
|
||||
"matches",
|
||||
"niri",
|
||||
"overrides",
|
||||
"padding",
|
||||
@@ -8790,16 +8938,64 @@
|
||||
"personal",
|
||||
"personalization",
|
||||
"radius",
|
||||
"spacing",
|
||||
"statusbar",
|
||||
"taskbar",
|
||||
"topbar",
|
||||
"window"
|
||||
],
|
||||
"icon": "layers",
|
||||
"description": "Use custom gaps instead of bar spacing",
|
||||
"description": "Auto matches bar spacing; Off leaves gaps to your niri config",
|
||||
"conditionKey": "isNiri"
|
||||
},
|
||||
{
|
||||
"section": "hyprlandLayoutGapsOutOverride",
|
||||
"label": "Outer Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"between",
|
||||
"custom",
|
||||
"customize",
|
||||
"edge",
|
||||
"edges",
|
||||
"gaps",
|
||||
"hyprland",
|
||||
"outer",
|
||||
"override",
|
||||
"personal",
|
||||
"personalization",
|
||||
"screen",
|
||||
"space",
|
||||
"windows"
|
||||
],
|
||||
"description": "Space between windows and screen edges"
|
||||
},
|
||||
{
|
||||
"section": "mangoLayoutGapsOutOverride",
|
||||
"label": "Outer Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"between",
|
||||
"custom",
|
||||
"customize",
|
||||
"edge",
|
||||
"edges",
|
||||
"gaps",
|
||||
"mango",
|
||||
"mangowc",
|
||||
"outer",
|
||||
"override",
|
||||
"personal",
|
||||
"personalization",
|
||||
"screen",
|
||||
"space",
|
||||
"windows"
|
||||
],
|
||||
"description": "Space between windows and screen edges"
|
||||
},
|
||||
{
|
||||
"section": "hyprlandLayoutBorderSizeEnabled",
|
||||
"label": "Override Border Size",
|
||||
@@ -8941,85 +9137,6 @@
|
||||
],
|
||||
"description": "Use custom window radius instead of theme radius"
|
||||
},
|
||||
{
|
||||
"section": "hyprlandLayoutGapsOverrideEnabled",
|
||||
"label": "Override Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"custom",
|
||||
"customize",
|
||||
"gap",
|
||||
"gaps",
|
||||
"hyprland",
|
||||
"margin",
|
||||
"margins",
|
||||
"override",
|
||||
"padding",
|
||||
"panel",
|
||||
"personal",
|
||||
"personalization",
|
||||
"spacing",
|
||||
"statusbar",
|
||||
"taskbar",
|
||||
"topbar"
|
||||
],
|
||||
"description": "Use custom gaps instead of bar spacing"
|
||||
},
|
||||
{
|
||||
"section": "mangoLayoutGapsOverrideEnabled",
|
||||
"label": "Override Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"custom",
|
||||
"customize",
|
||||
"gap",
|
||||
"gaps",
|
||||
"mango",
|
||||
"mangowc",
|
||||
"margin",
|
||||
"margins",
|
||||
"override",
|
||||
"padding",
|
||||
"panel",
|
||||
"personal",
|
||||
"personalization",
|
||||
"spacing",
|
||||
"statusbar",
|
||||
"taskbar",
|
||||
"topbar"
|
||||
],
|
||||
"description": "Use custom gaps instead of bar spacing"
|
||||
},
|
||||
{
|
||||
"section": "niriLayoutGapsOverrideEnabled",
|
||||
"label": "Override Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"custom",
|
||||
"customize",
|
||||
"gap",
|
||||
"gaps",
|
||||
"margin",
|
||||
"margins",
|
||||
"niri",
|
||||
"override",
|
||||
"padding",
|
||||
"panel",
|
||||
"personal",
|
||||
"personalization",
|
||||
"spacing",
|
||||
"statusbar",
|
||||
"taskbar",
|
||||
"topbar"
|
||||
],
|
||||
"description": "Use custom gaps instead of bar spacing"
|
||||
},
|
||||
{
|
||||
"section": "hyprlandResizeOnBorder",
|
||||
"label": "Resize on Border",
|
||||
@@ -9114,49 +9231,6 @@
|
||||
],
|
||||
"description": "Rounded corners for windows"
|
||||
},
|
||||
{
|
||||
"section": "hyprlandLayoutGapsOverride",
|
||||
"label": "Window Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"between",
|
||||
"custom",
|
||||
"customize",
|
||||
"gaps",
|
||||
"hyprland",
|
||||
"override",
|
||||
"personal",
|
||||
"personalization",
|
||||
"space",
|
||||
"window",
|
||||
"windows"
|
||||
],
|
||||
"description": "Space between windows"
|
||||
},
|
||||
{
|
||||
"section": "mangoLayoutGapsOverride",
|
||||
"label": "Window Gaps",
|
||||
"tabIndex": 37,
|
||||
"category": "Personalization",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"between",
|
||||
"custom",
|
||||
"customize",
|
||||
"gaps",
|
||||
"mango",
|
||||
"mangowc",
|
||||
"override",
|
||||
"personal",
|
||||
"personalization",
|
||||
"space",
|
||||
"window",
|
||||
"windows"
|
||||
],
|
||||
"description": "Space between windows"
|
||||
},
|
||||
{
|
||||
"section": "niriLayoutGapsOverride",
|
||||
"label": "Window Gaps",
|
||||
|
||||
Reference in New Issue
Block a user