✨ ags(runner/plugins): add new clipboard plugin
This commit is contained in:
@@ -0,0 +1,33 @@
|
|||||||
|
import { Widget } from "astal/gtk3";
|
||||||
|
import { Clipboard } from "../../scripts/clipboard";
|
||||||
|
import { ResultWidget, ResultWidgetProps } from "../../widget/runner/ResultWidget";
|
||||||
|
import { Runner } from "../Runner";
|
||||||
|
import { Gio } from "astal";
|
||||||
|
|
||||||
|
|
||||||
|
export const PluginClipboard = {
|
||||||
|
prefix: '>',
|
||||||
|
prioritize: true,
|
||||||
|
handle: (search) => {
|
||||||
|
if(Clipboard.getDefault().history.length < 1)
|
||||||
|
return new ResultWidget({
|
||||||
|
icon: "edit-paste-symbolic",
|
||||||
|
title: "No clipboard items found!",
|
||||||
|
description: "When something is copied, it'll be shown right here!"
|
||||||
|
} as ResultWidgetProps);
|
||||||
|
|
||||||
|
return Clipboard.getDefault().history.filter(item => // not the best way to search, but it works
|
||||||
|
Runner.regExMatch(search, item.id.toString()) || Runner.regExMatch(search, item.preview)).map((item) =>
|
||||||
|
new ResultWidget({
|
||||||
|
icon: new Widget.Label({
|
||||||
|
label: item.id.toString(),
|
||||||
|
css: "font-size: 16px; margin-right: 8px; font-weight: 600;"
|
||||||
|
} as Widget.LabelProps),
|
||||||
|
title: item.preview,
|
||||||
|
onClick: () => Clipboard.getDefault().selectItem(item).catch((err: Gio.IOErrorEnum) => {
|
||||||
|
console.error(`Runner(Plugin/Clipboard): An error occurred while selecting clipboard item. Stderr:\n${
|
||||||
|
err.message ? `${err.message}\n` : ""}Stack: ${err.stack}`);
|
||||||
|
})
|
||||||
|
} as ResultWidgetProps));
|
||||||
|
}
|
||||||
|
} as Runner.Plugin;
|
||||||
Reference in New Issue
Block a user