mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-06-07 19:59:14 -04:00
feat(keybinds): new mango overview workspace pill & keybind updates
This commit is contained in:
@@ -11,6 +11,7 @@ hl.bind("SUPER + N", hl.dsp.exec_cmd("dms ipc call notifications toggle"))
|
|||||||
hl.bind("SUPER + SHIFT + N", hl.dsp.exec_cmd("dms ipc call notepad toggle"))
|
hl.bind("SUPER + SHIFT + N", hl.dsp.exec_cmd("dms ipc call notepad toggle"))
|
||||||
hl.bind("SUPER + Y", hl.dsp.exec_cmd("dms ipc call dankdash wallpaper"))
|
hl.bind("SUPER + Y", hl.dsp.exec_cmd("dms ipc call dankdash wallpaper"))
|
||||||
hl.bind("SUPER + TAB", hl.dsp.exec_cmd("dms ipc call hypr toggleOverview"))
|
hl.bind("SUPER + TAB", hl.dsp.exec_cmd("dms ipc call hypr toggleOverview"))
|
||||||
|
hl.bind("SUPER + O", hl.dsp.exec_cmd("dms ipc call hypr toggleOverview"))
|
||||||
hl.bind("SUPER + X", hl.dsp.exec_cmd("dms ipc call powermenu toggle"))
|
hl.bind("SUPER + X", hl.dsp.exec_cmd("dms ipc call powermenu toggle"))
|
||||||
|
|
||||||
-- === Cheat sheet
|
-- === Cheat sheet
|
||||||
|
|||||||
@@ -84,6 +84,9 @@ bind=SUPER,f,togglefullscreen,
|
|||||||
bind=SUPER,a,togglemaximizescreen,
|
bind=SUPER,a,togglemaximizescreen,
|
||||||
# Toggle Floating
|
# Toggle Floating
|
||||||
bind=SUPER+SHIFT,space,togglefloating,
|
bind=SUPER+SHIFT,space,togglefloating,
|
||||||
|
# Toggle Overview
|
||||||
|
bind=SUPER,o,toggleoverview
|
||||||
|
bind=ALT,Tab,toggleoverview
|
||||||
# Exit Compositor
|
# Exit Compositor
|
||||||
bind=SUPER+SHIFT,e,quit,
|
bind=SUPER+SHIFT,e,quit,
|
||||||
|
|
||||||
@@ -174,3 +177,6 @@ bind=SUPER+SHIFT,9,tag,9
|
|||||||
# 3-finger horizontal swipe: switch between occupied workspaces
|
# 3-finger horizontal swipe: switch between occupied workspaces
|
||||||
gesturebind=none,left,3,viewtoleft_have_client
|
gesturebind=none,left,3,viewtoleft_have_client
|
||||||
gesturebind=none,right,3,viewtoright_have_client
|
gesturebind=none,right,3,viewtoright_have_client
|
||||||
|
# 4-finger vertical swipe: toggle the overview
|
||||||
|
gesturebind=none,up,4,toggleoverview
|
||||||
|
gesturebind=none,down,4,toggleoverview
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
binds {
|
binds {
|
||||||
// === System & Overview ===
|
// === System & Overview ===
|
||||||
Mod+D repeat=false { toggle-overview; }
|
Mod+O repeat=false { toggle-overview; }
|
||||||
Mod+Tab repeat=false { toggle-overview; }
|
Mod+Tab repeat=false { toggle-overview; }
|
||||||
Mod+Shift+Slash { show-hotkey-overlay; }
|
Mod+Shift+Slash { show-hotkey-overlay; }
|
||||||
|
|
||||||
|
|||||||
@@ -945,6 +945,53 @@ Item {
|
|||||||
spacing: Theme.spacingS
|
spacing: Theme.spacingS
|
||||||
flow: isVertical ? Flow.TopToBottom : Flow.LeftToRight
|
flow: isVertical ? Flow.TopToBottom : Flow.LeftToRight
|
||||||
|
|
||||||
|
// mango reports active_tags=0 while the overview is open; surface it as a pill
|
||||||
|
Item {
|
||||||
|
id: overviewPill
|
||||||
|
visible: CompositorService.isMango && MangoService.inOverview
|
||||||
|
width: root.isVertical ? root.widgetHeight : overviewBg.width
|
||||||
|
height: root.isVertical ? overviewBg.height : root.widgetHeight
|
||||||
|
|
||||||
|
readonly property real labelSize: Theme.barTextSize(root.barThickness, root.barConfig?.fontScale, root.barConfig?.maximizeWidgetText)
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: overviewBg
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: root.isVertical ? Math.max(root.widgetHeight * 0.7, overviewContent.implicitWidth + Theme.spacingS) : (overviewContent.implicitWidth + Theme.spacingS * 2)
|
||||||
|
height: Math.max(root.widgetHeight * 0.5, overviewContent.implicitHeight + Theme.spacingXS)
|
||||||
|
radius: Theme.cornerRadius
|
||||||
|
color: Theme.withAlpha(Theme.primary, 0.18)
|
||||||
|
|
||||||
|
Row {
|
||||||
|
id: overviewContent
|
||||||
|
anchors.centerIn: parent
|
||||||
|
spacing: Theme.spacingXS
|
||||||
|
|
||||||
|
DankIcon {
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
name: "grid_view"
|
||||||
|
size: overviewPill.labelSize + 2
|
||||||
|
color: Theme.primary
|
||||||
|
}
|
||||||
|
|
||||||
|
StyledText {
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
visible: !root.isVertical
|
||||||
|
text: I18n.tr("OVERVIEW")
|
||||||
|
color: Theme.primary
|
||||||
|
font.pixelSize: overviewPill.labelSize
|
||||||
|
font.weight: Font.DemiBold
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
onClicked: Quickshell.execDetached(["mmsg", "dispatch", "toggleoverview"])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Repeater {
|
Repeater {
|
||||||
id: workspaceRepeater
|
id: workspaceRepeater
|
||||||
model: ScriptModel {
|
model: ScriptModel {
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ Singleton {
|
|||||||
// tags: [{ tag, state, clients, focused, urgent, layout }] }
|
// tags: [{ tag, state, clients, focused, urgent, layout }] }
|
||||||
property var outputs: ({})
|
property var outputs: ({})
|
||||||
property string activeOutput: ""
|
property string activeOutput: ""
|
||||||
|
readonly property bool inOverview: isOutputInOverview(activeOutput)
|
||||||
property int tagCount: 9
|
property int tagCount: 9
|
||||||
property var displayScales: ({})
|
property var displayScales: ({})
|
||||||
property string currentKeyboardLayout: ""
|
property string currentKeyboardLayout: ""
|
||||||
@@ -173,6 +174,15 @@ Singleton {
|
|||||||
return output.tags.filter(tag => tag.state === 1).map(tag => tag.tag);
|
return output.tags.filter(tag => tag.state === 1).map(tag => tag.tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// mango reports active_tags=[0] (no real tag selected) while the overview is open.
|
||||||
|
function isOutputInOverview(outputName) {
|
||||||
|
const output = getOutputState(outputName);
|
||||||
|
if (!output)
|
||||||
|
return false;
|
||||||
|
const at = output.activeTags || [];
|
||||||
|
return at.length === 0 || at.every(t => t === 0);
|
||||||
|
}
|
||||||
|
|
||||||
function getTagsWithClients(outputName) {
|
function getTagsWithClients(outputName) {
|
||||||
const output = getOutputState(outputName);
|
const output = getOutputState(outputName);
|
||||||
if (!output || !output.tags)
|
if (!output || !output.tags)
|
||||||
|
|||||||
Reference in New Issue
Block a user