mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-05-14 00:02:45 -04:00
feat(IPC): Add dbar toggleReveal logic for autohide modes
This commit is contained in:
@@ -396,6 +396,10 @@ Top bar visibility control.
|
|||||||
- Toggle top bar visibility
|
- Toggle top bar visibility
|
||||||
- Returns: Success confirmation with current state
|
- Returns: Success confirmation with current state
|
||||||
|
|
||||||
|
**`toggleReveal`**
|
||||||
|
- Toggle the runtime reveal/tuck state for an autohidden bar
|
||||||
|
- Returns: Success confirmation with current reveal state
|
||||||
|
|
||||||
**`status`**
|
**`status`**
|
||||||
- Get current top bar visibility status
|
- Get current top bar visibility status
|
||||||
- Returns: "visible" or "hidden"
|
- Returns: "visible" or "hidden"
|
||||||
@@ -403,6 +407,7 @@ Top bar visibility control.
|
|||||||
### Examples
|
### Examples
|
||||||
```bash
|
```bash
|
||||||
dms ipc call bar toggle
|
dms ipc call bar toggle
|
||||||
|
dms ipc call bar toggleReveal index 0
|
||||||
dms ipc call bar hide
|
dms ipc call bar hide
|
||||||
dms ipc call bar status
|
dms ipc call bar status
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -83,6 +83,7 @@ const DMS_ACTIONS = [
|
|||||||
{ id: "spawn dms ipc call bar toggle index 0", label: "Bar: Toggle (Primary)" },
|
{ id: "spawn dms ipc call bar toggle index 0", label: "Bar: Toggle (Primary)" },
|
||||||
{ id: "spawn dms ipc call bar reveal index 0", label: "Bar: Reveal (Primary)" },
|
{ id: "spawn dms ipc call bar reveal index 0", label: "Bar: Reveal (Primary)" },
|
||||||
{ id: "spawn dms ipc call bar hide index 0", label: "Bar: Hide (Primary)" },
|
{ id: "spawn dms ipc call bar hide index 0", label: "Bar: Hide (Primary)" },
|
||||||
|
{ id: "spawn dms ipc call bar toggleReveal index 0", label: "Bar: Toggle Autohide Reveal (Primary)" },
|
||||||
{ id: "spawn dms ipc call bar toggleAutoHide index 0", label: "Bar: Toggle Auto-Hide (Primary)" },
|
{ id: "spawn dms ipc call bar toggleAutoHide index 0", label: "Bar: Toggle Auto-Hide (Primary)" },
|
||||||
{ id: "spawn dms ipc call bar autoHide index 0", label: "Bar: Enable Auto-Hide (Primary)" },
|
{ id: "spawn dms ipc call bar autoHide index 0", label: "Bar: Enable Auto-Hide (Primary)" },
|
||||||
{ id: "spawn dms ipc call bar manualHide index 0", label: "Bar: Disable Auto-Hide (Primary)" },
|
{ id: "spawn dms ipc call bar manualHide index 0", label: "Bar: Disable Auto-Hide (Primary)" },
|
||||||
|
|||||||
@@ -721,6 +721,7 @@ Singleton {
|
|||||||
property bool displayProfileAutoSelect: false
|
property bool displayProfileAutoSelect: false
|
||||||
property bool displayShowDisconnected: false
|
property bool displayShowDisconnected: false
|
||||||
property bool displaySnapToEdge: true
|
property bool displaySnapToEdge: true
|
||||||
|
property var barIpcRevealStates: ({})
|
||||||
|
|
||||||
property var barConfigs: [
|
property var barConfigs: [
|
||||||
{
|
{
|
||||||
@@ -2002,6 +2003,33 @@ Singleton {
|
|||||||
return barConfigs.find(cfg => cfg.id === barId) || null;
|
return barConfigs.find(cfg => cfg.id === barId) || null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isBarIpcRevealed(barId) {
|
||||||
|
if (!barId)
|
||||||
|
return false;
|
||||||
|
return !!barIpcRevealStates[barId];
|
||||||
|
}
|
||||||
|
|
||||||
|
function setBarIpcReveal(barId, revealed) {
|
||||||
|
if (!barId)
|
||||||
|
return;
|
||||||
|
const nextRevealed = !!revealed;
|
||||||
|
if (!!barIpcRevealStates[barId] === nextRevealed)
|
||||||
|
return;
|
||||||
|
const states = Object.assign({}, barIpcRevealStates);
|
||||||
|
if (nextRevealed) {
|
||||||
|
states[barId] = true;
|
||||||
|
} else {
|
||||||
|
delete states[barId];
|
||||||
|
}
|
||||||
|
barIpcRevealStates = states;
|
||||||
|
}
|
||||||
|
|
||||||
|
function toggleBarIpcReveal(barId) {
|
||||||
|
const revealed = !isBarIpcRevealed(barId);
|
||||||
|
setBarIpcReveal(barId, revealed);
|
||||||
|
return revealed;
|
||||||
|
}
|
||||||
|
|
||||||
function addBarConfig(config) {
|
function addBarConfig(config) {
|
||||||
const configs = JSON.parse(JSON.stringify(barConfigs));
|
const configs = JSON.parse(JSON.stringify(barConfigs));
|
||||||
configs.push(config);
|
configs.push(config);
|
||||||
@@ -2017,6 +2045,8 @@ Singleton {
|
|||||||
if (index === -1)
|
if (index === -1)
|
||||||
return;
|
return;
|
||||||
const positionChanged = updates.position !== undefined && configs[index].position !== updates.position;
|
const positionChanged = updates.position !== undefined && configs[index].position !== updates.position;
|
||||||
|
if (updates.autoHide === false || updates.visible === false)
|
||||||
|
setBarIpcReveal(barId, false);
|
||||||
|
|
||||||
Object.assign(configs[index], updates);
|
Object.assign(configs[index], updates);
|
||||||
barConfigs = _sanitizeBarConfigsForConnectedFrame(configs).configs;
|
barConfigs = _sanitizeBarConfigsForConnectedFrame(configs).configs;
|
||||||
@@ -2078,6 +2108,7 @@ Singleton {
|
|||||||
delete nextBackups[barId];
|
delete nextBackups[barId];
|
||||||
connectedFrameBarStyleBackups = nextBackups;
|
connectedFrameBarStyleBackups = nextBackups;
|
||||||
}
|
}
|
||||||
|
setBarIpcReveal(barId, false);
|
||||||
updateBarConfigs();
|
updateBarConfigs();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -699,6 +699,26 @@ Item {
|
|||||||
return barConfig.autoHide ? "BAR_MANUAL_HIDE_SUCCESS" : "BAR_AUTO_HIDE_SUCCESS";
|
return barConfig.autoHide ? "BAR_MANUAL_HIDE_SUCCESS" : "BAR_AUTO_HIDE_SUCCESS";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function toggleReveal(selector: string, value: string): string {
|
||||||
|
const {
|
||||||
|
barConfig,
|
||||||
|
error
|
||||||
|
} = getBarConfig(selector, value);
|
||||||
|
if (error)
|
||||||
|
return error;
|
||||||
|
if (!barConfig.autoHide)
|
||||||
|
return "BAR_AUTO_HIDE_DISABLED";
|
||||||
|
if (!(barConfig.visible ?? true)) {
|
||||||
|
SettingsData.updateBarConfig(barConfig.id, {
|
||||||
|
visible: true
|
||||||
|
});
|
||||||
|
SettingsData.setBarIpcReveal(barConfig.id, true);
|
||||||
|
return "BAR_REVEAL_SUCCESS";
|
||||||
|
}
|
||||||
|
const revealed = SettingsData.toggleBarIpcReveal(barConfig.id);
|
||||||
|
return revealed ? "BAR_REVEAL_SUCCESS" : "BAR_TUCK_SUCCESS";
|
||||||
|
}
|
||||||
|
|
||||||
function getPosition(selector: string, value: string): string {
|
function getPosition(selector: string, value: string): string {
|
||||||
const {
|
const {
|
||||||
barConfig,
|
barConfig,
|
||||||
|
|||||||
@@ -810,6 +810,7 @@ PanelWindow {
|
|||||||
|
|
||||||
property bool autoHide: barConfig?.autoHide ?? false
|
property bool autoHide: barConfig?.autoHide ?? false
|
||||||
property bool revealSticky: false
|
property bool revealSticky: false
|
||||||
|
readonly property bool ipcReveal: !!SettingsData.barIpcRevealStates[barConfig?.id ?? ""]
|
||||||
|
|
||||||
Timer {
|
Timer {
|
||||||
id: revealHold
|
id: revealHold
|
||||||
@@ -832,14 +833,14 @@ PanelWindow {
|
|||||||
const showOnWindowsSetting = barConfig?.showOnWindowsOpen ?? false;
|
const showOnWindowsSetting = barConfig?.showOnWindowsOpen ?? false;
|
||||||
if (showOnWindowsSetting && autoHide && (CompositorService.isNiri || CompositorService.isHyprland)) {
|
if (showOnWindowsSetting && autoHide && (CompositorService.isNiri || CompositorService.isHyprland)) {
|
||||||
if (barWindow.shouldHideForWindows)
|
if (barWindow.shouldHideForWindows)
|
||||||
return topBarMouseArea.containsMouse || revealSticky;
|
return topBarMouseArea.containsMouse || revealSticky || ipcReveal;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (CompositorService.isNiri && NiriService.inOverview)
|
if (CompositorService.isNiri && NiriService.inOverview)
|
||||||
return topBarMouseArea.containsMouse || revealSticky;
|
return topBarMouseArea.containsMouse || revealSticky || ipcReveal;
|
||||||
|
|
||||||
return (barConfig?.visible ?? true) && (!autoHide || topBarMouseArea.containsMouse || revealSticky);
|
return (barConfig?.visible ?? true) && (!autoHide || topBarMouseArea.containsMouse || revealSticky || ipcReveal);
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
@@ -855,6 +856,7 @@ PanelWindow {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (topBarMouseArea.containsMouse) {
|
if (topBarMouseArea.containsMouse) {
|
||||||
|
SettingsData.setBarIpcReveal(barConfig?.id ?? "", false);
|
||||||
revealSticky = true;
|
revealSticky = true;
|
||||||
revealHold.stop();
|
revealHold.stop();
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user