aboutsummaryrefslogtreecommitdiff
path: root/dotfiles/.config/noctalia/plugins/file-search/Main.qml
diff options
context:
space:
mode:
Diffstat (limited to 'dotfiles/.config/noctalia/plugins/file-search/Main.qml')
-rw-r--r--dotfiles/.config/noctalia/plugins/file-search/Main.qml68
1 files changed, 68 insertions, 0 deletions
diff --git a/dotfiles/.config/noctalia/plugins/file-search/Main.qml b/dotfiles/.config/noctalia/plugins/file-search/Main.qml
new file mode 100644
index 0000000..087fe1e
--- /dev/null
+++ b/dotfiles/.config/noctalia/plugins/file-search/Main.qml
@@ -0,0 +1,68 @@
+import QtQuick
+import Quickshell.Io
+import qs.Commons
+import qs.Services.UI
+
+Item {
+ property var pluginApi: null
+
+ Component.onCompleted: {
+ if (pluginApi) {
+ Logger.i("FileSearch", "Plugin initialized");
+ }
+ }
+
+ IpcHandler {
+ target: "plugin:file-search"
+
+ // Toggle launcher in file search mode
+ function toggle() {
+ if (!pluginApi) return;
+
+ pluginApi.withCurrentScreen(screen => {
+ var launcherPanel = PanelService.getPanel("launcherPanel", screen);
+ if (!launcherPanel) {
+ Logger.e("FileSearch", "Could not get launcher panel");
+ return;
+ }
+
+ var searchText = launcherPanel.searchText || "";
+ var isInFileMode = searchText.startsWith(">file");
+
+ if (!launcherPanel.isPanelOpen) {
+ // Launcher closed - open with file search
+ Logger.i("FileSearch", "Opening launcher in file search mode");
+ launcherPanel.open();
+ launcherPanel.setSearchText(">file ");
+ } else if (isInFileMode) {
+ // Already in file mode - close launcher
+ Logger.i("FileSearch", "Closing launcher (toggle off)");
+ launcherPanel.close();
+ } else {
+ // Launcher open but different mode - switch to file search
+ Logger.i("FileSearch", "Switching to file search mode");
+ launcherPanel.setSearchText(">file ");
+ }
+ });
+ }
+
+ // Open launcher with file search and specific query
+ function search(query: string) {
+ if (!pluginApi) return;
+
+ pluginApi.withCurrentScreen(screen => {
+ var launcherPanel = PanelService.getPanel("launcherPanel", screen);
+ if (!launcherPanel) {
+ Logger.e("FileSearch", "Could not get launcher panel");
+ return;
+ }
+
+ var searchQuery = query || "";
+ Logger.i("FileSearch", "Opening launcher with search query:", searchQuery);
+
+ launcherPanel.open();
+ launcherPanel.setSearchText(">file " + searchQuery);
+ });
+ }
+ }
+}