diff options
| author | srdusr <trevorgray@srdusr.com> | 2025-08-30 19:22:59 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2025-08-30 19:22:59 +0200 |
| commit | 19120d4f9761c67d99ed1ce3da6084b83f5a49c9 (patch) | |
| tree | f234cad1bdad88114a63c9702144da487024967a /.config/ags/widget/launcher/ShRun.ts | |
| parent | 5928998af5404ae2be84c6cecc10ebf84bd3f3ed (diff) | |
| download | dotfiles-19120d4f9761c67d99ed1ce3da6084b83f5a49c9.tar.gz dotfiles-19120d4f9761c67d99ed1ce3da6084b83f5a49c9.zip | |
Linux-specific dotfiles
Diffstat (limited to '.config/ags/widget/launcher/ShRun.ts')
| -rw-r--r-- | .config/ags/widget/launcher/ShRun.ts | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/.config/ags/widget/launcher/ShRun.ts b/.config/ags/widget/launcher/ShRun.ts deleted file mode 100644 index c4215ef..0000000 --- a/.config/ags/widget/launcher/ShRun.ts +++ /dev/null @@ -1,89 +0,0 @@ -import icons from "lib/icons" -import options from "options" -import { bash, dependencies } from "lib/utils" - -const iconVisible = Variable(false) - -const MAX = options.launcher.sh.max -const BINS = `${Utils.CACHE_DIR}/binaries` -bash("{ IFS=:; ls -H $PATH; } | sort ") - .then(bins => Utils.writeFile(bins, BINS)) - -async function query(filter: string) { - if (!dependencies("fzf")) - return [] as string[] - - return bash(`cat ${BINS} | fzf -f ${filter} | head -n ${MAX}`) - .then(str => Array.from(new Set(str.split("\n").filter(i => i)).values())) - .catch(err => { print(err); return [] }) -} - -function run(args: string) { - Utils.execAsync(args) - .then(out => { - print(`:sh ${args.trim()}:`) - print(out) - }) - .catch(err => { - Utils.notify("ShRun Error", err, icons.app.terminal) - }) -} - -function Item(bin: string) { - return Widget.Box( - { - attribute: { bin }, - vertical: true, - }, - Widget.Separator(), - Widget.Button({ - child: Widget.Label({ - label: bin, - hpack: "start", - }), - class_name: "sh-item", - on_clicked: () => { - Utils.execAsync(bin) - App.closeWindow("launcher") - }, - }), - ) -} - -export function Icon() { - const icon = Widget.Icon({ - icon: icons.app.terminal, - class_name: "spinner", - }) - - return Widget.Revealer({ - transition: "slide_left", - child: icon, - reveal_child: iconVisible.bind(), - }) -} - -export function ShRun() { - const list = Widget.Box<ReturnType<typeof Item>>({ - vertical: true, - }) - - const revealer = Widget.Revealer({ - child: list, - }) - - async function filter(term: string) { - iconVisible.value = Boolean(term) - - if (!term) - revealer.reveal_child = false - - if (term.trim()) { - const found = await query(term) - list.children = found.map(Item) - revealer.reveal_child = true - } - } - - return Object.assign(revealer, { filter, run }) -} |
