mirror of
https://github.com/end-4/dots-hyprland.git
synced 2026-06-05 14:59:27 -05:00
118 lines
5.0 KiB
QML
118 lines
5.0 KiB
QML
//@ pragma UseQApplication
|
|
//@ pragma Env QS_NO_RELOAD_POPUP=1
|
|
//@ pragma Env QT_QUICK_CONTROLS_STYLE=Basic
|
|
//@ pragma Env QT_QUICK_FLICKABLE_WHEEL_DECELERATION=10000
|
|
|
|
// Adjust this to make the shell smaller or larger
|
|
//@ pragma Env QT_SCALE_FACTOR=1
|
|
|
|
|
|
import qs.modules.common
|
|
import qs.modules.ii.background
|
|
import qs.modules.ii.bar
|
|
import qs.modules.ii.cheatsheet
|
|
import qs.modules.ii.dock
|
|
import qs.modules.ii.lock
|
|
import qs.modules.ii.mediaControls
|
|
import qs.modules.ii.notificationPopup
|
|
import qs.modules.ii.onScreenDisplay
|
|
import qs.modules.ii.onScreenKeyboard
|
|
import qs.modules.ii.overview
|
|
import qs.modules.ii.polkit
|
|
import qs.modules.ii.regionSelector
|
|
import qs.modules.ii.screenCorners
|
|
import qs.modules.ii.sessionScreen
|
|
import qs.modules.ii.sidebarLeft
|
|
import qs.modules.ii.sidebarRight
|
|
import qs.modules.ii.overlay
|
|
import qs.modules.ii.verticalBar
|
|
import qs.modules.ii.wallpaperSelector
|
|
|
|
import qs.modules.waffle.actionCenter
|
|
import qs.modules.waffle.background
|
|
import qs.modules.waffle.bar
|
|
|
|
import QtQuick
|
|
import QtQuick.Window
|
|
import Quickshell
|
|
import Quickshell.Io
|
|
import Quickshell.Hyprland
|
|
import qs.services
|
|
|
|
ShellRoot {
|
|
id: root
|
|
|
|
// Force initialization of some singletons
|
|
Component.onCompleted: {
|
|
MaterialThemeLoader.reapplyTheme()
|
|
Hyprsunset.load()
|
|
FirstRunExperience.load()
|
|
ConflictKiller.load()
|
|
Cliphist.refresh()
|
|
Wallpapers.load()
|
|
Updates.load()
|
|
}
|
|
|
|
// Load enabled stuff
|
|
// Well, these loaders only *allow* them to be loaded, to always load or not is defined in each component
|
|
// The media controls for example is not loaded if it's not opened
|
|
PanelLoader { identifier: "iiBar"; extraCondition: !Config.options.bar.vertical; component: Bar {} }
|
|
PanelLoader { identifier: "iiBackground"; component: Background {} }
|
|
PanelLoader { identifier: "iiCheatsheet"; component: Cheatsheet {} }
|
|
PanelLoader { identifier: "iiDock"; extraCondition: Config.options.dock.enable; component: Dock {} }
|
|
PanelLoader { identifier: "iiLock"; component: Lock {} }
|
|
PanelLoader { identifier: "iiMediaControls"; component: MediaControls {} }
|
|
PanelLoader { identifier: "iiNotificationPopup"; component: NotificationPopup {} }
|
|
PanelLoader { identifier: "iiOnScreenDisplay"; component: OnScreenDisplay {} }
|
|
PanelLoader { identifier: "iiOnScreenKeyboard"; component: OnScreenKeyboard {} }
|
|
PanelLoader { identifier: "iiOverlay"; component: Overlay {} }
|
|
PanelLoader { identifier: "iiOverview"; component: Overview {} }
|
|
PanelLoader { identifier: "iiPolkit"; component: Polkit {} }
|
|
PanelLoader { identifier: "iiRegionSelector"; component: RegionSelector {} }
|
|
PanelLoader { identifier: "iiReloadPopup"; component: ReloadPopup {} }
|
|
PanelLoader { identifier: "iiScreenCorners"; component: ScreenCorners {} }
|
|
PanelLoader { identifier: "iiSessionScreen"; component: SessionScreen {} }
|
|
PanelLoader { identifier: "iiSidebarLeft"; component: SidebarLeft {} }
|
|
PanelLoader { identifier: "iiSidebarRight"; component: SidebarRight {} }
|
|
PanelLoader { identifier: "iiVerticalBar"; extraCondition: Config.options.bar.vertical; component: VerticalBar {} }
|
|
PanelLoader { identifier: "iiWallpaperSelector"; component: WallpaperSelector {} }
|
|
PanelLoader { identifier: "wActionCenter"; component: WaffleActionCenter {} }
|
|
PanelLoader { identifier: "wBar"; component: WaffleBar {} }
|
|
PanelLoader { identifier: "wBackground"; component: WaffleBackground {} }
|
|
|
|
component PanelLoader: LazyLoader {
|
|
required property string identifier
|
|
property bool extraCondition: true
|
|
active: Config.ready && Config.options.enabledPanels.includes(identifier) && extraCondition
|
|
}
|
|
|
|
// Panel families
|
|
property list<string> families: ["ii", "waffle"]
|
|
property var panelFamilies: ({
|
|
"ii": ["iiBar", "iiBackground", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiScreenCorners", "iiSessionScreen", "iiSidebarLeft", "iiSidebarRight", "iiVerticalBar", "iiWallpaperSelector"],
|
|
"waffle": ["wBar", "wBackground", "wActionCenter", "iiCheatsheet", "iiDock", "iiLock", "iiMediaControls", "iiNotificationPopup", "iiOnScreenDisplay", "iiOnScreenKeyboard", "iiOverlay", "iiOverview", "iiPolkit", "iiRegionSelector", "iiReloadPopup", "iiSessionScreen", "iiSidebarRight", "iiWallpaperSelector"],
|
|
})
|
|
function cyclePanelFamily() {
|
|
const currentIndex = families.indexOf(Config.options.panelFamily)
|
|
const nextIndex = (currentIndex + 1) % families.length
|
|
Config.options.panelFamily = families[nextIndex]
|
|
Config.options.enabledPanels = panelFamilies[Config.options.panelFamily]
|
|
}
|
|
|
|
IpcHandler {
|
|
target: "panelFamily"
|
|
|
|
function cycle(): void {
|
|
root.cyclePanelFamily()
|
|
}
|
|
}
|
|
|
|
GlobalShortcut {
|
|
name: "panelFamilyCycle"
|
|
description: "Cycles panel family"
|
|
|
|
onPressed: root.cyclePanelFamily()
|
|
}
|
|
}
|
|
|