1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-07 22:18:30 -04:00

feat(settings): add keyboard configuration tab for Niri (#2937)

* feat(settings): add dedicated keyboard configuration tab

* chore(settings): configure default keyboard settings and clean up embedded niri config

* settings/keyboard: emit niri keyboard config only when set, dedup setup banner, index tab

---------

Co-authored-by: bbedward <bbedward@gmail.com>
This commit is contained in:
Huỳnh Thiện Lộc
2026-08-07 05:40:17 +07:00
committed by GitHub
parent 401872881e
commit dade416ca0
10 changed files with 1145 additions and 165 deletions
@@ -135,10 +135,14 @@ TAB_INDEX_MAP = {
"UsersTab.qml": 35,
"AutoStartTab.qml": 36,
"BatteryTab.qml": 42,
"MouseTouchpadTab.qml": 44,
"KeyboardTab.qml": 45,
}
FILE_CONDITION_MAP = {
"GreeterTab.qml": "greeterAvailable",
"MouseTouchpadTab.qml": "isNiri",
"KeyboardTab.qml": "isNiri",
}
TAB_CATEGORY_MAP = {
@@ -185,6 +189,8 @@ TAB_CATEGORY_MAP = {
41: "Network",
42: "Power & Security",
43: "Dank Dash",
44: "System",
45: "System",
}
SEARCHABLE_COMPONENTS = [
@@ -10921,17 +10921,609 @@
],
"icon": "dashboard"
},
{
"section": "mouseAccelProfile",
"label": "Acceleration Profile",
"tabIndex": 44,
"category": "System",
"keywords": [
"acceleration",
"adaptive",
"constant",
"flat",
"linux",
"mouse",
"movement",
"os",
"profile",
"scales",
"speed",
"system",
"uses"
],
"description": "Flat uses constant speed; Adaptive scales with movement speed",
"conditionKey": "isNiri"
},
{
"section": "touchpadAccelProfile",
"label": "Acceleration Profile",
"tabIndex": 44,
"category": "System",
"keywords": [
"acceleration",
"adaptive",
"constant",
"flat",
"linux",
"movement",
"os",
"profile",
"scales",
"speed",
"system",
"touchpad",
"uses"
],
"description": "Flat uses constant speed; Adaptive scales with movement speed",
"conditionKey": "isNiri"
},
{
"section": "touchpadDisableWhileTyping",
"label": "Disable While Typing",
"tabIndex": 44,
"category": "System",
"keywords": [
"accidental",
"cursor",
"disable",
"dwt",
"jumps",
"linux",
"os",
"prevent",
"system",
"touchpad",
"typing",
"while"
],
"description": "Prevent accidental cursor jumps while typing",
"conditionKey": "isNiri"
},
{
"section": "touchpadDisableOnExternalMouse",
"label": "Disable on External Mouse",
"tabIndex": 44,
"category": "System",
"keywords": [
"connected",
"disable",
"external",
"linux",
"mouse",
"os",
"system",
"touchpad"
],
"description": "Disable touchpad when an external mouse is connected",
"conditionKey": "isNiri"
},
{
"section": "touchpadDragLock",
"label": "Drag Lock",
"tabIndex": 44,
"category": "System",
"keywords": [
"briefly",
"drag",
"dragging",
"finger",
"keep",
"lifted",
"linux",
"lock",
"os",
"system",
"touchpad"
],
"description": "Keep dragging when finger is briefly lifted",
"conditionKey": "isNiri"
},
{
"section": "mouseLeftHanded",
"label": "Left-Handed Mode",
"tabIndex": 44,
"category": "System",
"keywords": [
"button",
"buttons",
"handed",
"left",
"linux",
"mode",
"mouse",
"os",
"primary",
"secondary",
"swap",
"system"
],
"description": "Swap primary and secondary mouse buttons",
"conditionKey": "isNiri"
},
{
"section": "mouseMiddleEmulation",
"label": "Middle Click Emulation",
"tabIndex": 44,
"category": "System",
"keywords": [
"buttons",
"click",
"emulate",
"emulation",
"left",
"linux",
"middle",
"mouse",
"os",
"pressing",
"right",
"system"
],
"description": "Emulate middle click by pressing left and right buttons",
"conditionKey": "isNiri"
},
{
"section": "touchpadMiddleEmulation",
"label": "Middle Click Emulation",
"tabIndex": 44,
"category": "System",
"keywords": [
"buttons",
"click",
"emulate",
"emulation",
"left",
"linux",
"middle",
"os",
"pressing",
"right",
"system",
"touchpad"
],
"description": "Emulate middle click by pressing left and right buttons",
"conditionKey": "isNiri"
},
{
"section": "_tab_44",
"label": "Mouse & Touchpad",
"tabIndex": 44,
"category": "Settings",
"category": "System",
"keywords": [
"linux",
"mouse",
"settings",
"os",
"system",
"touchpad"
],
"icon": "mouse",
"conditionKey": "isNiri"
},
{
"section": "mouseSettings",
"label": "Mouse Settings",
"tabIndex": 44,
"category": "System",
"keywords": [
"acceleration",
"buttons",
"input",
"linux",
"mouse",
"os",
"pointer",
"primary",
"secondary",
"sensitivity",
"settings",
"swap",
"system"
],
"icon": "mouse",
"description": "Swap primary and secondary mouse buttons",
"conditionKey": "isNiri"
},
{
"section": "mouseNaturalScroll",
"label": "Natural Scrolling",
"tabIndex": 44,
"category": "System",
"keywords": [
"direction",
"linux",
"mouse",
"natural",
"os",
"reverse",
"scroll",
"scrolling",
"system",
"wheel"
],
"description": "Reverse mouse wheel scrolling direction",
"conditionKey": "isNiri"
},
{
"section": "touchpadNaturalScroll",
"label": "Natural Scrolling",
"tabIndex": 44,
"category": "System",
"keywords": [
"direction",
"finger",
"linux",
"natural",
"os",
"reverse",
"scroll",
"scrolling",
"system",
"touchpad"
],
"description": "Reverse two-finger scrolling direction",
"conditionKey": "isNiri"
},
{
"section": "mouseAccelSpeed",
"label": "Pointer Speed",
"tabIndex": 44,
"category": "System",
"keywords": [
"accel",
"adjust",
"linux",
"mouse",
"os",
"pointer",
"sensitivity",
"speed",
"system"
],
"description": "Adjust pointer sensitivity speed",
"conditionKey": "isNiri"
},
{
"section": "mouseScrollMethod",
"label": "Scroll Method",
"tabIndex": 44,
"category": "System",
"keywords": [
"choose",
"events",
"generate",
"linux",
"method",
"mouse",
"os",
"scroll",
"scrolling",
"system"
],
"description": "Choose when to generate scrolling events",
"conditionKey": "isNiri"
},
{
"section": "touchpadScrollMethod",
"label": "Scroll Method",
"tabIndex": 44,
"category": "System",
"keywords": [
"choose",
"events",
"generate",
"linux",
"method",
"os",
"scroll",
"scrolling",
"system",
"touchpad"
],
"description": "Choose when to generate scrolling events",
"conditionKey": "isNiri"
},
{
"section": "mouseScrollFactor",
"label": "Scrolling Speed",
"tabIndex": 44,
"category": "System",
"keywords": [
"adjust",
"factor",
"linux",
"mouse",
"multiplier",
"os",
"scroll",
"scrolling",
"sensitivity",
"speed",
"system"
],
"description": "Adjust scrolling sensitivity multiplier",
"conditionKey": "isNiri"
},
{
"section": "touchpadScrollFactor",
"label": "Scrolling Speed",
"tabIndex": 44,
"category": "System",
"keywords": [
"adjust",
"factor",
"linux",
"multiplier",
"os",
"scroll",
"scrolling",
"sensitivity",
"speed",
"system",
"touchpad"
],
"description": "Adjust scrolling sensitivity multiplier",
"conditionKey": "isNiri"
},
{
"section": "touchpadTapAndDrag",
"label": "Tap and Drag",
"tabIndex": 44,
"category": "System",
"keywords": [
"drag",
"items",
"linux",
"move",
"os",
"system",
"tap",
"touchpad"
],
"description": "Tap and drag on the touchpad to move items",
"conditionKey": "isNiri"
},
{
"section": "touchpadTapToClick",
"label": "Tap to Click",
"tabIndex": 44,
"category": "System",
"keywords": [
"click",
"clicks",
"left",
"linux",
"os",
"surface",
"system",
"tap",
"touchpad",
"trigger"
],
"description": "Tap the touchpad surface to trigger left click clicks",
"conditionKey": "isNiri"
},
{
"section": "touchpadSettings",
"label": "Touchpad Settings",
"tabIndex": 44,
"category": "System",
"keywords": [
"click",
"clicks",
"input",
"left",
"linux",
"natural",
"os",
"sensitivity",
"settings",
"surface",
"system",
"tap",
"touchpad",
"trigger"
],
"icon": "trackpad_input_2",
"description": "Tap the touchpad surface to trigger left click clicks",
"conditionKey": "isNiri"
},
{
"section": "touchpadAccelSpeed",
"label": "Touchpad Speed",
"tabIndex": 44,
"category": "System",
"keywords": [
"accel",
"adjust",
"linux",
"os",
"pointer",
"sensitivity",
"speed",
"system",
"touchpad"
],
"description": "Adjust touchpad pointer speed",
"conditionKey": "isNiri"
},
{
"section": "keyboardNumlock",
"label": "Enable Num Lock",
"tabIndex": 45,
"category": "System",
"keywords": [
"automatically",
"enable",
"keyboard",
"linux",
"lock",
"num",
"numlock",
"os",
"startup",
"system",
"turn"
],
"description": "Automatically turn on Num Lock at startup",
"conditionKey": "isNiri"
},
{
"section": "_tab_45",
"label": "Keyboard",
"tabIndex": 45,
"category": "System",
"keywords": [
"keyboard",
"linux",
"os",
"system"
],
"icon": "keyboard",
"conditionKey": "isNiri"
},
{
"section": "keyboardBehaviorSettings",
"label": "Keyboard Behavior",
"tabIndex": 45,
"category": "System",
"keywords": [
"across",
"apps",
"behavior",
"changes",
"delay",
"keyboard",
"layout",
"linux",
"numlock",
"os",
"rate",
"remembered",
"repeat",
"system"
],
"icon": "settings",
"description": "How layout changes are remembered across apps",
"conditionKey": "isNiri"
},
{
"section": "keyboardLayoutsSettings",
"label": "Keyboard Layouts",
"tabIndex": 45,
"category": "System",
"keywords": [
"between",
"choose",
"cycle",
"input",
"keyboard",
"language",
"layout",
"layouts",
"linux",
"os",
"shortcut",
"system",
"xkb"
],
"icon": "keyboard",
"description": "Choose a shortcut key to cycle between keyboard layouts",
"conditionKey": "isNiri"
},
{
"section": "keyboardTrackLayout",
"label": "Remember Layout",
"tabIndex": 45,
"category": "System",
"keywords": [
"across",
"apps",
"changes",
"keyboard",
"layout",
"linux",
"os",
"remember",
"remembered",
"system",
"track"
],
"description": "How layout changes are remembered across apps",
"conditionKey": "isNiri"
},
{
"section": "keyboardRepeatDelay",
"label": "Repeat Delay",
"tabIndex": 45,
"category": "System",
"keywords": [
"before",
"characters",
"delay",
"keyboard",
"linux",
"os",
"repeat",
"repeating",
"speed",
"start",
"system"
],
"description": "Delay before characters start repeating",
"conditionKey": "isNiri"
},
{
"section": "keyboardRepeatRate",
"label": "Repeat Rate",
"tabIndex": 45,
"category": "System",
"keywords": [
"characters",
"down",
"holding",
"keyboard",
"linux",
"os",
"rate",
"repeat",
"second",
"speed",
"system",
"while"
],
"description": "Characters per second while holding down key",
"conditionKey": "isNiri"
},
{
"section": "keyboardOptions",
"label": "Switch Layout Shortcut",
"tabIndex": 45,
"category": "System",
"keywords": [
"between",
"choose",
"cycle",
"keyboard",
"layout",
"layouts",
"linux",
"os",
"shortcut",
"switch",
"system",
"xkb"
],
"description": "Choose a shortcut key to cycle between keyboard layouts",
"conditionKey": "isNiri"
}
]