add noctalia and fuzzel
This commit is contained in:
+130
@@ -0,0 +1,130 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import Quickshell
|
||||
import Quickshell.Wayland
|
||||
import qs.Commons
|
||||
import qs.Services.UI
|
||||
import qs.Widgets
|
||||
|
||||
FloatingWindow {
|
||||
id: root
|
||||
|
||||
title: "Noctalia"
|
||||
minimumSize: Qt.size(840 * Style.uiScaleRatio, 910 * Style.uiScaleRatio)
|
||||
implicitWidth: Math.round(840 * Style.uiScaleRatio)
|
||||
implicitHeight: Math.round(910 * Style.uiScaleRatio)
|
||||
color: "transparent"
|
||||
|
||||
visible: false
|
||||
|
||||
// Register with SettingsPanelService
|
||||
Component.onCompleted: {
|
||||
SettingsPanelService.settingsWindow = root;
|
||||
}
|
||||
|
||||
property bool isInitialized: false
|
||||
|
||||
// Navigate to a specific tab and optional subtab.
|
||||
// Works whether the window is already visible or just becoming visible.
|
||||
function navigateTo(tab, subTab) {
|
||||
const tabId = tab !== undefined ? tab : 0;
|
||||
const subTabId = (subTab !== undefined && subTab !== null && subTab >= 0) ? subTab : -1;
|
||||
if (isInitialized) {
|
||||
settingsContent.navigateToTab(tabId, subTabId);
|
||||
} else {
|
||||
settingsContent.requestedTab = tabId;
|
||||
if (subTabId >= 0)
|
||||
settingsContent._pendingSubTab = subTabId;
|
||||
settingsContent.initialize();
|
||||
isInitialized = true;
|
||||
// Tab content persists in window mode; if no subtab specified and the
|
||||
// tab content is still loaded (same tab), reset to first subtab
|
||||
if (subTabId < 0 && settingsContent.activeTabContent)
|
||||
settingsContent.setSubTabIndex(0);
|
||||
}
|
||||
}
|
||||
|
||||
// Navigate to a search result entry.
|
||||
// Works whether the window is already visible or just becoming visible.
|
||||
function navigateToEntry(entry) {
|
||||
if (isInitialized) {
|
||||
Qt.callLater(() => settingsContent.navigateToResult(entry));
|
||||
} else {
|
||||
settingsContent.requestedTab = entry.tab;
|
||||
settingsContent.initialize();
|
||||
Qt.callLater(() => settingsContent.navigateToResult(entry));
|
||||
isInitialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Sync visibility with service
|
||||
onVisibleChanged: {
|
||||
if (visible) {
|
||||
SettingsPanelService.isWindowOpen = true;
|
||||
} else {
|
||||
isInitialized = false;
|
||||
SettingsPanelService.isWindowOpen = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Keyboard shortcuts
|
||||
Shortcut {
|
||||
sequence: "Escape"
|
||||
enabled: !PanelService.isKeybindRecording
|
||||
onActivated: SettingsPanelService.closeWindow()
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Tab"
|
||||
enabled: !PanelService.isKeybindRecording
|
||||
onActivated: settingsContent.selectNextTab()
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Backtab"
|
||||
enabled: !PanelService.isKeybindRecording
|
||||
onActivated: settingsContent.selectPreviousTab()
|
||||
}
|
||||
|
||||
Instantiator {
|
||||
model: Settings.data.general.keybinds.keyUp || []
|
||||
Shortcut {
|
||||
sequence: modelData
|
||||
enabled: !PanelService.isKeybindRecording
|
||||
onActivated: {
|
||||
if (settingsContent.searchText.trim() !== "")
|
||||
settingsContent.searchSelectPrevious();
|
||||
else
|
||||
settingsContent.scrollUp();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Instantiator {
|
||||
model: Settings.data.general.keybinds.keyDown || []
|
||||
Shortcut {
|
||||
sequence: modelData
|
||||
enabled: !PanelService.isKeybindRecording
|
||||
onActivated: {
|
||||
if (settingsContent.searchText.trim() !== "")
|
||||
settingsContent.searchSelectNext();
|
||||
else
|
||||
settingsContent.scrollDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Main content
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: Qt.alpha(Color.mSurface, Settings.data.ui.panelBackgroundOpacity)
|
||||
radius: Style.radiusL
|
||||
|
||||
SettingsContent {
|
||||
id: settingsContent
|
||||
anchors.fill: parent
|
||||
onCloseRequested: SettingsPanelService.closeWindow()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user