✨ ags(runner): add initialText property to runner
This commit is contained in:
+21
-5
@@ -7,10 +7,11 @@ import { Windows } from "../windows";
|
|||||||
|
|
||||||
export let runnerInstance: (Gtk.Window|null) = null;
|
export let runnerInstance: (Gtk.Window|null) = null;
|
||||||
|
|
||||||
export function startRunnerDefault() {
|
export function startRunnerDefault(initialText?: string) {
|
||||||
return Runner.openRunner({
|
return Runner.openRunner({
|
||||||
entryPlaceHolder: "Start typing...",
|
entryPlaceHolder: "Start typing...",
|
||||||
showResultsPlaceHolderOnStartup: false,
|
showResultsPlaceHolderOnStartup: false,
|
||||||
|
initialText
|
||||||
} as Runner.RunnerProps,
|
} as Runner.RunnerProps,
|
||||||
() => [
|
() => [
|
||||||
new ResultWidget({
|
new ResultWidget({
|
||||||
@@ -43,6 +44,7 @@ export namespace Runner {
|
|||||||
width?: number;
|
width?: number;
|
||||||
height?: number;
|
height?: number;
|
||||||
entryPlaceHolder?: string;
|
entryPlaceHolder?: string;
|
||||||
|
initialText?: string;
|
||||||
showResultsPlaceHolderOnStartup?: boolean;
|
showResultsPlaceHolderOnStartup?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -61,6 +63,8 @@ export namespace Runner {
|
|||||||
readonly handle: (inputText: string) => (ResultWidget|Array<ResultWidget>|null|undefined);
|
readonly handle: (inputText: string) => (ResultWidget|Array<ResultWidget>|null|undefined);
|
||||||
/** ran on runner close */
|
/** ran on runner close */
|
||||||
readonly onClose?: () => void;
|
readonly onClose?: () => void;
|
||||||
|
/** hide other plugins when using this plugin **/
|
||||||
|
prioritize?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addPlugin(plugin: Runner.Plugin, force?: boolean) {
|
export function addPlugin(plugin: Runner.Plugin, force?: boolean) {
|
||||||
@@ -121,12 +125,20 @@ export namespace Runner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getPluginResults(input: string): Array<ResultWidget> {
|
function getPluginResults(input: string): Array<ResultWidget> {
|
||||||
const calledPlugins: Array<Plugin> = getPlugins().filter((plugin) => plugin.prefix && input.startsWith(plugin.prefix) ?
|
let calledPlugins: Array<Plugin> = getPlugins().filter((plugin) =>
|
||||||
plugin : null).concat(getPlugins().filter(plugin => plugin.prefix === undefined));
|
plugin.prefix ? (input.startsWith(plugin.prefix) ? true : false) : true
|
||||||
|
).sort((plugin) => plugin.prefix != null ? 0 : 1);
|
||||||
|
|
||||||
|
for(const plugin of calledPlugins) {
|
||||||
|
if(plugin.prioritize) {
|
||||||
|
calledPlugins = [ plugin ];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return calledPlugins.map(plugin => plugin.handle(
|
return calledPlugins.map(plugin => plugin.handle(
|
||||||
plugin.prefix ? input.replace(plugin.prefix, "") : input
|
plugin.prefix ? input.replace(plugin.prefix, "") : input)
|
||||||
)).filter(value => value !== undefined && value !== null).flat(1);
|
).filter(value => value !== undefined && value !== null).flat(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateResultsList(entryText: string) {
|
function updateResultsList(entryText: string) {
|
||||||
@@ -175,6 +187,10 @@ export namespace Runner {
|
|||||||
setup: () => {
|
setup: () => {
|
||||||
// Init plugins
|
// Init plugins
|
||||||
plugins.forEach(plugin => plugin.init && plugin.init());
|
plugins.forEach(plugin => plugin.init && plugin.init());
|
||||||
|
if(props?.initialText) {
|
||||||
|
searchEntry.set_text(props.initialText);
|
||||||
|
searchEntry.set_position(searchEntry.textLength);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onKeyPressEvent: (_, event: Gdk.Event) => {
|
onKeyPressEvent: (_, event: Gdk.Event) => {
|
||||||
const keyVal = event.get_keyval()[1];
|
const keyVal = event.get_keyval()[1];
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Wireplumber } from "./volume";
|
|||||||
import { Windows } from "../windows";
|
import { Windows } from "../windows";
|
||||||
|
|
||||||
import { restartInstance } from "./reload-handler";
|
import { restartInstance } from "./reload-handler";
|
||||||
import { startRunnerDefault } from "../runner/Runner";
|
import { runnerInstance, startRunnerDefault } from "../runner/Runner";
|
||||||
import { showWorkspaceNumbers } from "../widget/bar/Workspaces";
|
import { showWorkspaceNumbers } from "../widget/bar/Workspaces";
|
||||||
import { timeout } from "astal";
|
import { timeout } from "astal";
|
||||||
|
|
||||||
@@ -31,7 +31,9 @@ export function handleArguments(request: string): any {
|
|||||||
`${name}: ${Windows.isVisible(name) ? "open" : "closed" }`).join('\n');
|
`${name}: ${Windows.isVisible(name) ? "open" : "closed" }`).join('\n');
|
||||||
|
|
||||||
case "runner":
|
case "runner":
|
||||||
startRunnerDefault();
|
!runnerInstance ?
|
||||||
|
startRunnerDefault(args[1] || undefined)
|
||||||
|
: runnerInstance.close();
|
||||||
return "Opening runner..."
|
return "Opening runner..."
|
||||||
|
|
||||||
case "show-ws-numbers":
|
case "show-ws-numbers":
|
||||||
|
|||||||
Reference in New Issue
Block a user