mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 09:36:46 +00:00
quickshell and hyprland additions
This commit is contained in:
142
.config/quickshell/caelestia/modules/Shortcuts.qml
Normal file
142
.config/quickshell/caelestia/modules/Shortcuts.qml
Normal file
@@ -0,0 +1,142 @@
|
||||
import qs.components.misc
|
||||
import qs.modules.controlcenter
|
||||
import qs.services
|
||||
import Caelestia
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
|
||||
Scope {
|
||||
id: root
|
||||
|
||||
property bool launcherInterrupted
|
||||
readonly property bool hasFullscreen: Hypr.focusedWorkspace?.toplevels.values.some(t => t.lastIpcObject.fullscreen === 2) ?? false
|
||||
|
||||
CustomShortcut {
|
||||
name: "controlCenter"
|
||||
description: "Open control center"
|
||||
onPressed: WindowFactory.create()
|
||||
}
|
||||
|
||||
CustomShortcut {
|
||||
name: "showall"
|
||||
description: "Toggle launcher, dashboard and osd"
|
||||
onPressed: {
|
||||
if (root.hasFullscreen)
|
||||
return;
|
||||
const v = Visibilities.getForActive();
|
||||
v.launcher = v.dashboard = v.osd = v.utilities = !(v.launcher || v.dashboard || v.osd || v.utilities);
|
||||
}
|
||||
}
|
||||
|
||||
CustomShortcut {
|
||||
name: "dashboard"
|
||||
description: "Toggle dashboard"
|
||||
onPressed: {
|
||||
if (root.hasFullscreen)
|
||||
return;
|
||||
const visibilities = Visibilities.getForActive();
|
||||
visibilities.dashboard = !visibilities.dashboard;
|
||||
}
|
||||
}
|
||||
|
||||
CustomShortcut {
|
||||
name: "session"
|
||||
description: "Toggle session menu"
|
||||
onPressed: {
|
||||
if (root.hasFullscreen)
|
||||
return;
|
||||
const visibilities = Visibilities.getForActive();
|
||||
visibilities.session = !visibilities.session;
|
||||
}
|
||||
}
|
||||
|
||||
CustomShortcut {
|
||||
name: "launcher"
|
||||
description: "Toggle launcher"
|
||||
onPressed: root.launcherInterrupted = false
|
||||
onReleased: {
|
||||
if (!root.launcherInterrupted && !root.hasFullscreen) {
|
||||
const visibilities = Visibilities.getForActive();
|
||||
visibilities.launcher = !visibilities.launcher;
|
||||
}
|
||||
root.launcherInterrupted = false;
|
||||
}
|
||||
}
|
||||
|
||||
CustomShortcut {
|
||||
name: "launcherInterrupt"
|
||||
description: "Interrupt launcher keybind"
|
||||
onPressed: root.launcherInterrupted = true
|
||||
}
|
||||
|
||||
|
||||
CustomShortcut {
|
||||
name: "sidebar"
|
||||
description: "Toggle sidebar"
|
||||
onPressed: {
|
||||
if (root.hasFullscreen)
|
||||
return;
|
||||
const visibilities = Visibilities.getForActive();
|
||||
visibilities.sidebar = !visibilities.sidebar;
|
||||
}
|
||||
}
|
||||
|
||||
CustomShortcut {
|
||||
name: "utilities"
|
||||
description: "Toggle utilities"
|
||||
onPressed: {
|
||||
if (root.hasFullscreen)
|
||||
return;
|
||||
const visibilities = Visibilities.getForActive();
|
||||
visibilities.utilities = !visibilities.utilities;
|
||||
}
|
||||
}
|
||||
|
||||
IpcHandler {
|
||||
target: "drawers"
|
||||
|
||||
function toggle(drawer: string): void {
|
||||
if (list().split("\n").includes(drawer)) {
|
||||
if (root.hasFullscreen && ["launcher", "session", "dashboard"].includes(drawer))
|
||||
return;
|
||||
const visibilities = Visibilities.getForActive();
|
||||
visibilities[drawer] = !visibilities[drawer];
|
||||
} else {
|
||||
console.warn(`[IPC] Drawer "${drawer}" does not exist`);
|
||||
}
|
||||
}
|
||||
|
||||
function list(): string {
|
||||
const visibilities = Visibilities.getForActive();
|
||||
return Object.keys(visibilities).filter(k => typeof visibilities[k] === "boolean").join("\n");
|
||||
}
|
||||
}
|
||||
|
||||
IpcHandler {
|
||||
target: "controlCenter"
|
||||
|
||||
function open(): void {
|
||||
WindowFactory.create();
|
||||
}
|
||||
}
|
||||
|
||||
IpcHandler {
|
||||
target: "toaster"
|
||||
|
||||
function info(title: string, message: string, icon: string): void {
|
||||
Toaster.toast(title, message, icon, Toast.Info);
|
||||
}
|
||||
|
||||
function success(title: string, message: string, icon: string): void {
|
||||
Toaster.toast(title, message, icon, Toast.Success);
|
||||
}
|
||||
|
||||
function warn(title: string, message: string, icon: string): void {
|
||||
Toaster.toast(title, message, icon, Toast.Warning);
|
||||
}
|
||||
|
||||
function error(title: string, message: string, icon: string): void {
|
||||
Toaster.toast(title, message, icon, Toast.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user